Section | Description |
---|---|
🎯 Objectives and context | Project introduction and context |
🚧 Dependencies | Technical dependencies and how to install them |
🏎 Kickstart | Details on how to kickstart development on the project |
🏗 Code & architecture | Details on the application modules and technical specifications |
🔭 Possible improvements | Possible code refactors, improvements and ideas |
🚑 Troubleshooting | Recurring problems and proven solutions |
🚀 Deploy | Deployment details for various enviroments |
Phoenix Channel Workshop
Browser | OS | Constraint |
---|---|---|
… | … | … |
Every runtime dependencies are defined in the .tool-versions
file. These external dependencies are also required:
- PostgreSQL (
~> 12.0
)
All required environment variables are documented in .env.dev
.
When running mix
or make
commands, it is important that these variables are present in the environment. There are several ways to achieve this. Using nv
is recommended since it works out of the box with .env.*
files.
- Create both
.env.dev.local
and.env.test.local
from empty values in.env.dev
and.env.test
- Install Mix and NPM dependencies with
make dependencies
- Generate values for mandatory secrets in
.env.dev
withmix phx.gen.secret
Then, with variables from .env.dev
and .env.dev.local
present in the environment:
- Create and migrate the database with
mix ecto.setup
- Start the Phoenix server with
make run
A Makefile
is present at the root and expose common tasks. The list of these commands is available with make help
.
To avoid running PostgreSQL locally on your machine, a docker-compose.yml
file is included to be able start a PostgreSQL server in a Docker container with docker-compose up postgresql
.
Tests can be ran with make test
and test coverage can be calculated with make check-code-coverage
.
Several linting and formatting tools can be ran to ensure coding style consistency:
make lint-elixir
ensures Elixir code follows our guidelines and best practicesmake lint-scripts
ensures JavaScript code follows our guidelines and best practicesmake lint-styles
ensures SCSS code follows our guidelines and best practicesmake check-format
ensures all code is properly formattedmake format
formats files using Prettier andmix format
The .github/workflows/ci.yaml
workflow ensures that the codebase is in good shape on each pull request and branch push.
…
Description | Priority | Complexity | Ideas |
---|---|---|---|
… | … | … | … |
The project exposes a GET /ping
route that sends an HTTP 200 OK
response as soon as the server is ready to accept requests. The response also contains the project version for debugging purpose.
The project exposes a GET /health
route that serves the PhoenixChannelWorkshopHealth
module. This module contains checks to make sure the application and its external dependencies are healthy.
Name | Description |
---|---|
NOOP |
This check is always healthy |
Each deployment is made from a Git tag. The codebase version is managed with incr
.
A Docker image running an OTP release can be created with make build
, tested with docker-compose up application
and pushed to a registry with make push
.