ericjuta/elixir-template

★ 0Forks 0ElixirGitHub ↗Compare

README

Brier

Minimal Phoenix 1.8 starter optimized for fast local feedback and AI-assisted development.

Assumptions

  • The app starts without Ecto so a fresh clone works without database setup.
  • Tidewave is enabled only in the dev environment, matching its current Phoenix installation guidance.
  • TimelessPhoenix is mounted behind Phoenix dev routes at /dev/dashboard so the starter stays safe by default.
  • usage_rules keeps AGENTS.md and .agents/skills aligned with the exact project dependencies.

Prerequisites

  • Elixir 1.19.x
  • Erlang/OTP 28
  • A working C/C++ toolchain for native dependency builds

Setup

mix deps.get
mix setup

mix setup fetches dependencies, syncs agent guidance, and builds the default frontend assets.

Run

iex -S mix phx.server

Visit http://localhost:4000. Observability is available at http://localhost:4000/dev/dashboard.

Runtime Tooling

  • Tidewave is mounted only in development and becomes available when the Phoenix server is running.
  • Timeless provides local logs, metrics, and traces at /dev/dashboard.
  • Timeless stores local observability data under priv/observability/.
  • usage_rules generates dependency-aware agent references under .agents/skills/.

Checks

mix test
mix credo --strict
mix format --check-formatted

Or use the repo helpers:

make setup
make check
make symphony-setup
make symphony-build
make symphony-check

Use mix check or make check before pushing changes to stay aligned with CI. Use make symphony-check for changes under symphony/elixir.

Agent Workflow

  • Start the Phoenix server in development when you want Tidewave runtime context available to an agent.
  • Use the Timeless dashboard for logs, metrics, and traces while iterating locally.
  • Run mix usage_rules.sync after dependency changes to refresh dependency-aware guidance.
  • Keep AGENTS.md and generated skills committed so a fresh clone is immediately agent-ready.

Symphony

This repository now vendors the Symphony service under ./symphony/elixir alongside the repo-facing files it uses to orchestrate Codex against Brier:

  • WORKFLOW.md is the project workflow contract Symphony reads at startup.
  • .codex/worktree_init.sh bootstraps a fresh workspace clone with mix setup.
  • .codex/skills/ contains repo-local skills for commit, pull, push, land, linear, and launch-app.
  • .github/pull_request_template.md gives Symphony a stable PR body shape.
  • ai_docs/symphony.md is the local operator runbook for pointing Symphony at this repository.
  • symphony/elixir/ contains the vendored Elixir/OTP Symphony service.

Before using Symphony, update WORKFLOW.md for your Linear project:

  • replace tracker.project_slug
  • confirm your Linear workflow includes Todo, In Progress, Human Review, Merging, Rework, and Done, or adjust the state names in WORKFLOW.md
  • change workspace.root if you want workspaces somewhere other than ~/code/brier-symphony-workspaces
  • change the clone URL in hooks.after_create if this repository remote changes

Install and validate the vendored service from the repo root:

mise trust --yes
mise install
make symphony-setup
make symphony-build
make symphony-check

Start Symphony from the vendored service directory and point it at this repo's workflow:

cd symphony/elixir
mise exec -- ./bin/symphony ../../WORKFLOW.md \
  --i-understand-that-this-will-be-running-without-the-usual-guardrails

To expose the optional observability dashboard, add --port 4040.

Contributors

ericjuta

Issues