Rapid prototyping with Takeoff
Tags: opensource, showdev, javascript, docker
Published: 2017-12-17 22:51:23

---
title: Rapid prototyping with Takeoff
published: true
description: Learn to use Takeoff's default environment to rapidly develop a prototype or hackday project
tags: opensource, showdev, javascript, docker
---
[Takeoff](https://takeoff.sh) is a toolkit for rapidly developing applications. I started developing it in August 2017 after I had been working on a project to read and display logs for the game [Elite: Dangerous](https://www.elitedangerous.com/).

When I was setting up the app I had read the article [Dockerize your app and keep hot-reloading!](https://blog.bam.tech/developper-news/dockerize-your-app-and-keep-hot-reloading) and had created the environment in this way so I could keep the backend and frontend separate, and not have to install `mysql` on my main environment.

I never really got around to finishing that app, but as I developed it I realised I had a nice layout for a `docker-compose` application that I could reuse.  This was the first version of takeoff I developed, and it was a very opinionated set of command lines in `npm` and required cloning the environment from Github.

I then took a 2 week break for my honeymoon in Australia.  When I came back I had realised that I could separate the application out from the commands and build a toolkit that easily allowed for other application repositories.

I call these blueprints and they are what power Takeoff.  By default the first blueprint installed is the [basic blueprint](https://github.com/takeoff-env/takeoff-blueprint-basic) which includes a batteries included application.  You get node based API, React frontend application and a Postgres database - all running inside docker and with a Ngnix proxy on port 80. Full details are in the readme file.

The apps include basic user management and authentication and communicate via JSON Web Tokens (JWT) so you can start writing your application straight away.

## Getting Started

You can easily install it via npm: `npm install -g @takeoff/takeoff`.

Once you have the command line tool installed you are able to create your first environment:

```bash
takeoff init my-new-app
cd my-new-app
```

This creates your first environment, in here you will find two folders - `blueprints` and `envs`.  The `blueprints` folder is a local cache while the `env` folder is where you will find the source files for these projects, within your `envs/default` folder - here you can edit the files to add your project features - and all the time your application will be running on `http://localhost` and hot-reloading as you make changes.

Type the following to get started:

```bash
takeoff start
```

Yes it was really that easy to get a fully working development environment.

Within Takeoff's envs folder, each app lives in it's own folder and structure.  The API uses [Hapi](https://hapijs.com/) plugins loaded via configuration, and you also have access to [Sequelize](http://docs.sequelizejs.com/) and it's CLI to run database migrations and seed stages.

In the React app you'll find files broken down into components that have their views and stores, and a single app to bring them together.  In the future I'll also be providing an Angular app, and an app using vanilla web components.

If you have any feedback or find any issues please head over to the [Github page](https://github.com/takeoff-env/takeoff) to leave an issue.