Sponsoring a student hackathon? You've come to the right place! American Airlines loves to help students learn new tech and we're passionate about being a big part of hackathons.
Whether you need help with judging which hack did the best job of tackling your challenge, you want to connect with students who need help, or you want to recruit students and capture resumes, Hangar will make your experience easy and enjoyable for everyone.
If you need insipiration for challenges, check out some of our past challenges.
This app is still in the early stages of development and only some functionality is currently available. If you want to help expedite our development, become a contributor!
Hangar uses Node.js as its runtime. To use the Hangar, you'll need to download and install the LTS (Long Term Support) version, which is currently 12.x. If you decide to use another version of Node such as 13.x or 14.x, you may experience unexpected issues.
Hangar uses Postgres 11, so you'll need to set it up on your machine. If you don't have Postgres installed already, see the Installation and Use section below.
Create a database (we suggest hangar
, if you chose something else or are running your server on a different port, make sure to create a DATABASE_URL
value in .env
with your override URL) in the PostgreSQL 11 server (do not make a new server), and then run the app. If your Postgres server is protected by a password, you'll need to add PGUSER
and PGPASSWORD
to your .env
file where PGUSER
will be postgres
and PGPASSWORD
will be the Postgres server password entered during installation.
When the app is deployed to a cloud environment, the DATABASE_URL
.env
var will be used (and is automatically set in Heroku when an associated service is connected to your app).
We recommend using Postgres.app as the installation doesn't require a password and is generally easier to use that the traditional Postgres app below.
During the installation process (if you follow the steps on postgresql.org), you will be prompted to set a password - make sure to use something you'll remember.
If you'd like a visual way of viewing or editing your local database, try using TablePlus.
The best way to start the app and work on it is by using npm run dev
, which will start the app and then restart the app whenever a TypeScript file changes. After modifying a non-Typescript file, restart the app by typing rs
into the same terminal you ran npm run dev
from and then hitting return.
After the app starts, it will be accessible on localhost:3000
(unless the port was modified via .env
).
In order to make your app accessible to platforms like Slack, you'll need to use an app like ngrok
to obtain a URL which can be used within your Slack app configuration. After running npm i
to install dependencies, simply npm run tunnel
to create the tunnel, then use the following URL output to route web traffic to your app.
Before you can use Hangar, you'll need to create a Slack app. Follow our instructions for creating an app. Once you're done with the first section, continue below.
Once your app is running, copy your app's URL and complete the final configuration of your Slack app.
If database schema is changed, the migrations must be changed accordingly. After starting the app (or using npm run typeorm migration:run
), make changes to files in the src/entities
directory as needed and then run npm run typeorm migration:generate -- -n MigrationName
where MigrationName
is the name of the migration (without the timestamp).
Do not update or remove an existing migration, as this can cause unexpected issues with local and production data. All database schema changes must be made in a new migration.
If you'd like to customize the app, fork this repo. If you have an idea for something and you'd like to contribute back to this project, create a new Feature request. If we like your suggestion, we'll ask you to open a Pull Request. For more details, check out our Contributing Guidelines.
When you're ready to deploy your app, simply change the URL for the Deploy to Heroku
button then merge it into your main
branch. Once your repo is updated, just use that button you'll be good to go!
This project uses GitHub Actions for Continuous Integration and leverages Heroku for Continuous Deployment.
If you fork this project, deploy your app using the Deploy to Heroku
button above, then navigate to the Deploy
tab of your app in Heroku and configure Continuous Deployment as relevant for your app.
This project uses GitHub Secrets which ensure that certain environment variables are encrypted and securely stored for use in GitHub Actions. In order to create a secret, go to the settings tab in your GitHub Repository, and click on the secrets tab. Here you can set a secret by clicking New Secret
and adding the secret name in addition to its value. Within workflows, the values can be utilizes with the following syntax: ${{ secrets.YOUR_SECRET }}
.
The secret in used for CodeCov should be named CODECOV_TOKEN
, and the value of this token will be the Upload Token
generated when linking CodeCov to your Hangar repo. Secret values can also be updated in the secrets tab.
Interested in contributing to the project? Check out our Contributing Guidelines.