Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/unstacked/level
Team communication optimized for deep work
https://github.com/unstacked/level
elixir elm graphql
Last synced: about 1 month ago
JSON representation
Team communication optimized for deep work
- Host: GitHub
- URL: https://github.com/unstacked/level
- Owner: derrickreimer
- License: other
- Created: 2018-04-02T16:23:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-11T17:59:03.000Z (over 1 year ago)
- Last Synced: 2024-10-30T00:32:23.133Z (about 2 months ago)
- Topics: elixir, elm, graphql
- Language: Elm
- Homepage:
- Size: 7.9 MB
- Stars: 1,013
- Watchers: 43
- Forks: 92
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE-README.md
Awesome Lists containing this project
README
# Level
[![CircleCI](https://circleci.com/gh/unstacked/level.svg?style=svg)](https://circleci.com/gh/unstacked/level)
## Project Status
Level began with the ambitious idea of [solving the problems](https://www.derrickreimer.com/essays/2018/03/02/the-war-on-developer-productivity.html) 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.
[Read the full story here →](https://www.derrickreimer.com/essays/2019/05/17/im-walking-away-from-the-product-i-spent-a-year-building.html)
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:
- [Elixir](https://elixir-lang.org/install.html) ([version](https://github.com/levelhq/level/blob/master/mix.exs#L4))
- [PostgreSQL](https://postgresapp.com/) 10
- [Yarn](https://yarnpkg.com/en/docs/install) ([latest](https://yarnpkg.com/en/docs/install#mac-stable))
- [Node](#nodejs) ([version](https://github.com/levelhq/level/blob/master/.nvmrc))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`](http://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](https://github.com/creationix/nvm) 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 asLEVEL_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.
Transactional Email
POSTMARK_API_KEY
The API key for Postmark.
Web Push Notifications
See instructions here: https://github.com/web-push-libs/web-push#command-line
LEVEL_WEB_PUSH_PUBLIC_KEY
A VAPID public key.
LEVEL_WEB_PUSH_PRIVATE_KEY
A VAPID private key.
The following variables are for non-essential external services.
Variable
Description
Exception Monitoring
HONEYBADGER_API_KEY
The API key for Honeybadger.io exception monitoring (Elixir).
HONEYBADGER_JS_API_KEY
The API key for Honeybadger.io exception monitoring (JavaScript).
Analytics
FATHOM_SITE_ID
The site ID for Fathom Analytics.
FULLSTORY_ORG
The organization ID for FullStory.
HEAP_ANALYTICS_APP_ID
The app ID for Heap Analytics.
Email Marketing
DRIP_ACCOUNT_ID
The account ID for Drip.
DRIP_API_KEY
The personal api key for Drip.
Support
HELPSCOUT_BEACON_ID
The Beacon ID for Help Scout.
## Documentation
Run the `script/docs` to generate and view the project ExDocs locally.
## Heroku Deployment (Experimental)
One of our goals is to make self-installation as painless as possible for those who are interested in hosting their own instance.
The relevant configuration files for Heroku live here:
- [app.json](https://github.com/levelhq/level/blob/master/app.json)
- [elixir_buildpack.config](https://github.com/levelhq/level/blob/master/elixir_buildpack.config)
- [phoenix_static_buildpack.config](https://github.com/levelhq/level/blob/master/phoenix_static_buildpack.config)
- [Procfile](https://github.com/levelhq/level/blob/master/Procfile)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](https://postmarkapp.com)). You'll be asked for SMTP host, port, username, and password environment variables during setup.[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/levelhq/level/tree/master)
## Copyright
© 2019 Level Technologies, LLC
Level is [source-available](https://en.wikipedia.org/wiki/Source-available_software) software. ([license](https://github.com/levelhq/level/blob/master/LICENSE.txt) | [readme](https://github.com/levelhq/level/blob/master/LICENSE-README.md))