Jumar is a heavily opinionated Elixir boilerplate repository. It contains a ton of useful features and documentation explaining the how and why.
One of the goals of this project is to bookmark some good decisions I've learned over the years working in this space. I don't want to say this is "best practices" because truth be told, those change wildly based on the project's context. With that said, this project aims to start on the right foot and document the "why this way" decisions made in the process.
Features marked with ✅ should be feature complete. Anything with 🟨 is a planned feature that is not yet complete.
Jumar is currently a work in progress. Not all features are complete. If you have an idea or request, please open up a GitHub discussion.
- ✅ CLI scripts written in Elixir
- 🟨 Unique CLI command to start message consuming separately from web server
- ✅ Cockroach DB usage via
ecto
- 🟨 Database multi tenant setup
- ✅ Prefixed primary keys similar to Stripe (
usr_abc123
)
- ✅ HTTP server with
bandit
- ✅ User authentication via
mix phx.gen.auth
- 🟨 User organizationse
- 🟨 User and organization permissions
- 🟨 User notification preferences
- ✅ Code documentation via
ex_doc
- ✅ Published documentation to GitHub pages
- ✅ Code formatting via
mix format
- ✅ Tailwind class ordering via
tailwind_formatter
- ✅ Code linting via
dialyzer
- ✅ Code linting via
credo
- ✅ Code linting via
boundary
- ✅ Linting for other file types (almost too much linting 🤯)
- ✅ Linting GitHub actions via
actionlint
- ✅ Linting for insensitive and inconsiderate writing via
alex
- ✅ Linting CSS via
stylelint
- ✅ Linting
Dockerfile
s viahadolint
- ✅ Linting Javascript via
eslint
andstandard
- ✅ Linting Markdown via
markdownlint
- ✅ Spell checking via
misspell
- ✅ Linting shell scripts via
shellcheck
- ✅ Linting shell scripts via
shfmt
- ✅ Linting YAML via
yamllint
- ✅ Linting GitHub actions via
- ✅ Code testing via
exunit
- 🟨 Browser testing via
wallaby
- ✅ Property testing via
stream_data
- 🟨 Continuous integration with GitHub actions
- ✅ Releasing via
release-please
- 🟨 Container building on PRs and releases
- 🟨 Continuous deployment with GitHub actions to Fly.io
Documentation for this project is hosted at https://jumar.btkostner.io. It is built and published on every merge to the main
branch.