This project contains the API and web UI for LaunchPad. See specifics on each directory below:
api/— Rails app that serves a JSON APIui/— Ember.js web app front-end
The code that powers LaunchPad are two separate apps in this one single monorepo—a web front-end user interface (a.k.a. UI, front-end) and a back-end API.
The UI app is hosted on Firebase. The API app is Hosted on Heroku.
Development for each app happens in its own directory. Start by following the README in each dir to set up the needed dependencies.
Once everything's all set, the apps can be booted with foreman start
Install foreman with gem install foreman if it's not installed.
All of the automated tests for the apps can be run with bin/test
The test suite is run before deploying to Production to ensure everything's valid.
There are also app-specific commands that can be run. See the README for each directory.
Cypress is a tool that's configured for end-to-end testing across both the web app and API that better ensures everything works across the full stack.
Download Cypress and open this repo to run the tests. It points to the local development URL by default.
There's a deploy script to make creating releases as simple as possible.
Here's an overview of the commands:
bin/deploy— deploy to Staging from the current branchbin/deploy -m— deploy, run migrations, and restart the appbin/deploy -r— check out the main branch, create a release tag, and deploy to Production
Any command can be run with the -d flag to output the commands that would be
run without actually running them to see what's planned to be run.
In order to be able to deploy the apps, you must install the following tools and sign in:
brew tap heroku/brew && brew install herokuheroku login
curl -sL firebase.tools | bashfirebase login
There are two application environments: Staging and Production.
Staging is a test ground with test data. Staging data is likely to get reset and cleared. It is for testing purposes only, and it is the area where new features should be tested before being pushed to Production.
Production is the live application. It is where users use the app. The Production database gets backed up nightly.
Here are the URLs for the web application environments:
- Staging: https://launchpad-ui-staging.web.app
- Production: https://launchpad.savilabs.org