/little_retro

Simple, fast, reactive, and easy to use retro platform.

Primary LanguageElixirMIT LicenseMIT

LittleRetro

A simple, fast, reactive, and easy to use retro platform. Still a work in progress!

To get the validated elixir and erlang versions using asdf:

  • Install asdf with brew install asdf or following the instructions
    • If you install with homebrew, make sure to source the shim in your shell as explained here.
  • Install asdf-erlang with asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
  • Install asdf-elixir with asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
  • Install the validated erlang and elixir versions with asdf install (it may take a few minutes to compile erlang)

Follow your operating system's instructions to install Postgres locally. Any supported version of Postgres should suffice.

To start your Phoenix server:

  • Run mix deps.get to get dependencies
  • Run mix do event_store.create, event_store.init to initialize the event store
    • If you get an error about a postgres user not existing, you can run psql -c "create user postgres with superuser password 'postgres'" and try again
  • Run mix setup to install and setup dependencies
  • Start Phoenix endpoint with mix phx.server or inside IEx with iex -S mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

How to add a new retro action

  1. Write domain-level tests here.
  2. Add an implementing domain function here.
  3. Add an implementing command here.
  4. Add the command to the router here.
  5. Add an implementing event here.
  6. Implement execute and apply functions for the command and event in the aggregate.
  7. Publish the event via Phoenix.PubSub here.
  8. If it is a custom pubsub event, add a handler to it in the liveview here.
  9. Implement the UI using the liveview and component modules.
  10. If feasible, add liveview tests for the action here.

How to run tests

To run the full test suite on watch mode:

mix test.watch

To only rerun stale tests:

mix test.watch --stale

Learn more