Production build broke because our custom lint rule was compiled. The
credo linter is not available and not necessary in production.
Solution: create separate directory for dev tools.
Detects `conn = get(conn, ...)` patterns and directs to
refactor_conn_aliasing.sh for automatic fixing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Uses a multi-stage Docker build that copies both app/ and blogex/,
preserving the path dependency. Includes release scripts, migration
module, and a sample Dokku setup script.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ran a claude /security-review, fixed two vulnerabilities
Use a plug to resolve blog_id, returning a clean 404 for unknown blogs
instead of raising with inspect(). Parse page param with Integer.parse
so invalid values (non-numeric, negative, zero) fall back to page 1
instead of crashing. Add 5 tests covering these cases.a
Goal: have a personal blog, and try out another point in the 'modular
app design with elixir' space.
Designing OTP systems with elixir had some interesting ideas.