Level began with the ambitious idea of solving the problems caused by real-time communication tools. After pouring thousands of hours effort into the cause, I made the tough decision to move on from the project.
This codebase is a full-scale Elixir/Phoenix SaaS application with a single-page app Elm front-end. I hope it will live on as a helpful resource for the community.
— Derrick Reimer, Founder
Developer Setup
You'll need to install the following dependencies first:
Run the bootstrap script to install the remaining dependencies and create your
development database:
cd level
script/bootstrap
If your local PostgreSQL install does not have a default postgres user, open the config/dev.secret.exs file and update the credentials. Then, run the bootstrap script again.
Use the script/server command to start up your local server and visit localhost:4000 from your browser.
Installing Node.js
This repository includes a .nvmrc file targeting a specific version of Node
that is known to be compatible with all current node dependencies. Things might work
with a newer version of Node, but the most guaranteed route is to install
Node Version Manager and run nvm install from
the project root.
Then, be sure to run script/bootstrap to install node dependencies with the
correct version of node.
Running tests and analyses
We have a handful of helper scripts available:
script/elixir-test: runs the Elixir test suite with coveralls
script/elm-test: runs the Elm test suite
script/test: runs the Elixir and Elm test suites
script/static-analysis: runs Credo (Elixir linting), Dialyzer, and Elixir formatter verification
script/build: runs all the test suites and static analysis
Dependencies
The following environment variables must be set in production:
Variable
Description
AWS
AWS_ACCESS_KEY_ID
The AWS access key id for your account (with access to S3).
AWS_SECRET_ACCESS_KEY
The AWS secret access key corresponding to the access key id.
LEVEL_ASSET_STORE_BUCKET
The name of the S3 bucket in which to store uploaded assets.
Host
PORT
The port on which to host the application (typically 80).
LEVEL_HOST
The domain on which you are serving the app (used for generating URLs).
LEVEL_CDN_HOST
The host for the CDN for serving static assets (like Level's CSS and application JS).
LEVEL_MAILER_HOST
The domain via which to send transaction emails (usually same as LEVEL_HOST).
LEVEL_SECRET_KEY_BASE
A secret key for verifying the integrity of signed cookies.
Database
LEVEL_DATABASE_URL
The URL for the PostgreSQL database.
LEVEL_POOL_SIZE
The maximum number of database connections each process may consume.
We are aiming to keep seamless Heroku deployment up-to-date, with a few important "alpha software" notes:
It's possible you may find it broken on master. If you do, please file an issue.
As deployment needs grow more complex, it may become no longer feasible to support Heroku deploys. Caveat emptor.
Required additional services
In addition to a Heroku account, you'll need the following services to get your Heroku install up and running:
An AWS account and an S3 bucket for storing file uploads. You'll be asked for AWS API keys and bucket name environment variables during setup.
A transactional email provider (we recommend Postmark). You'll be asked for SMTP host, port, username, and password environment variables during setup.
请发表评论