Skip to content

vereis/blog

Repository files navigation

Blog

vereis.com

CI Status

Personal blog and portfolio site built with Phoenix LiveView, SQLite, and LiteFS.

Live at vereis.com

Architecture

Phoenix umbrella application with two apps:

App Description
blog Core domain logic - posts, projects, assets, tags
blog_web Phoenix web interface - LiveView pages, components

Tech Stack

Quick Start

Nix Users

The project includes a Nix flake for reproducible development environments:

# Enter dev shell (or use direnv)
nix develop

# Install dependencies and setup
mix setup

# Start Phoenix server
mix phx.server

The flake provides Elixir, Erlang, Rust (for native dependencies), and platform-specific tools automatically.

Manual Setup

Requires:

  • Elixir 1.17+
  • Erlang/OTP 27+
  • Rust (nightly, for MDEx)
  • libvips (for image processing)
mix setup
mix phx.server

Visit localhost:4000.

Development

Commands

# Run tests
mix test

# Pre-commit checks (format, lint, dialyzer, test)
make precommit

# Generate new blog post
mix blog.gen.post "My Post Title"

Content

  • Posts: Markdown files in apps/blog/priv/posts/
  • Projects: YAML config in apps/blog/priv/projects/projects.yaml
  • Assets: Images in apps/blog/priv/assets/

See apps/blog/README.md for content format details.

Deployment

Deployed to Fly.io with distributed SQLite via LiteFS:

make deploy       # Deploy to Fly.io
make logs         # Tail logs (all regions)
make ssh          # SSH into instance
make remote       # Open IEx remote shell

Configuration in fly.toml and litefs.yml.

Related Projects

This blog uses several open-source libraries I maintain:

Project Description
EctoLiteFS LiteFS-aware Ecto middleware for automatic write forwarding
EctoMiddleware Middleware pipeline pattern for Ecto operations
EctoHooks Before/after callbacks for Ecto schemas

License

MIT

About

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published