Development
Papercups runs on Elixir/Phoenix, with a TypeScript React app for the frontend.
Setup with asdf (recommended)#
First, you'll need to install the following:
- Install PostgreSQL
- Install Node
- Install asdf
- Install Erlang dependencies
Once that's all set, clone the repo:
And install all our dependencies:
Manual setup (deprecated)#
If you haven't installed Elixir, Phoenix, NodeJS, and PostgresQL yet, you can find some great instructions here: https://hexdocs.pm/phoenix/installation.html
tl;dr:
- Install Elixir: https://elixir-lang.org/install.html
- Install Hex:
- To check that we are on Elixir 1.6 and Erlang 20 or later, run:
- Install the Phoenix application generator:
- Install NodeJS: https://nodejs.org/en/download/
- Install PostgresQL: https://wiki.postgresql.org/wiki/Detailed_installation_guides
Cloning the repo#
To start your server#
- Install backend dependencies with
mix deps.get - Install frontend dependencies with
npm install --prefix=assets(orcd assets && npm install) - Create and migrate your database with
mix ecto.setup - Start the server with
mix phx.server(oriex -S mix phx.serverfor interactive mode)
This will automatically start up the React frontend in watch mode on localhost:3000, with the API running on localhost:4000.
Frontend development#
The frontend code will start up automatically when you run mix phx.server, but for more information see: assets/README.md
Developing on Docker#
You can edit your local code when developing with docker and it will update in the container.
The docker file is made for development only at the moment
Running tests#
Create a PostgreSQL test database named: chat_api_test, and run:
Setting up email alerts#
Set the environment variables in the .env.example file.
At the moment we only support Mailgun โ other messaging channels are coming soon!
Deploying#
We currently use Heroku for deployments. (This is for internal use only.)