Skip to content

btkostner/jumar

Repository files navigation

Jumar

Jumar

Jumar is Blake's opinionated Elixir bike shedding "I want to write some code" project. It is a boilerplate repository with a ton of useful features and documentation explaining the how and why. It probably has some cool code you could use in your own project. It most definitely has some choices you don't want to use.

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

Features marked with ✅ should be feature complete. Anything with 🟨 is a planned feature that is not yet complete.

Note

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.

Command Line Interface

  • ✅ CLI scripts written in Elixir
  • 🟨 Unique CLI command to start message consuming separately from web server

Database Layer

  • Cockroach DB usage via ecto
  • 🟨 Database multi tenant setup
  • ✅ Prefixed primary keys similar to Stripe (usr_abc123)

Web Server Layer

User Layer

  • ✅ User authentication via mix phx.gen.auth
  • 🟨 User organizationse
  • 🟨 User and organization permissions
  • 🟨 User notification preferences

Event Layer

  • 🟨 Phoenix PubSub setup
  • ✅ Internal event bus for cross context communication
  • 🟨 Rabbitmq for worker queue message producing
  • 🟨 Broadway for worker queue message consuming
  • ✅ Document the difference between the three and when to use each

Documentation Generation

Continuous Integration

Continuous Deployment

  • 🟨 Continuous integration with GitHub actions
  • ✅ Releasing via release-please
  • 🟨 Container building on PRs and releases
  • 🟨 Continuous deployment with GitHub actions to Fly.io

Documentation

Documentation for this project is hosted at https://jumar.btkostner.io. It is built and published on every merge to the main branch.