Appetype is an application that allows your company to easily manage the catering menu offered to their employees.
With Appetype you can create next week's menu, send it to your employees and collect their orders.
Appetype is built on top of Typeform and it's powered by its Create API, Webhooks API and Embed.
The first thing you need to do is authorising Appetype to use Typeform. To do so log in with an admin user, go to the user menu, click Authorize and follow the instructions. Once you are authenticated you can start using Appetype.
A normal workflow will look like the following:
- The catering user creates next week's menu. This will be a draft version of the menu.
- The admin user reviews the menu and updates it if necessary. When the menu is ready the admin user can make it available to diner users by publishing it.
- Once the menu is published, diner users can fill their choices for next week.
- The admin user closes the menu when the time for placing orders has finished.
- The catering user checks the menu orders. Now they can go to the market to buy the ingredients!
When a menu is published, Appetype creates a Typeform and configures a webhook to receive the orders.
Fill menu page is embedding the Typeform we created. When diner users fill the Typeform, a weebhook is received and processed to show the correct results.
When closing the menu, the Typeform is made private so that no one else can access it.
Install bundler and run bundle install
.
Install PostgreSQL. If you're on OSX, you can use Postgres.app and Postico.
Alternatively, you can run Postgres inside a docker container.
Create the DB running bundle exec rake db:create
and execute the migrations bundle exec rake db:migrate
.
Running seeds bundle exec rake db:seed
will populate the database with three users. Check seeds for more information.
The code follows Ruby Stype Guidelines. Run Rubocop to ensure them by executing bundle exec rubocop
.
Execute bundle exec rspec
to run the tests.
You can deploy your application to Heroku in one click using the button below and following the instructions.