Letteranne is a modular monolith with a Django headless API backend and a React SPA frontend.
** Warning ** This project is entirely AI-generated as my experiment on LLMs performance. So far I don't like the output...
- Docker and Docker Compose
- Make
- Node.js 22+ with
pnpm(for local frontend tooling and E2E runs)
# Clone repository
git clone <repo-url>
cd letteranne
# Create local environment variables
cp .env.example .env
# Start backend + frontend + database
make dev- Frontend:
http://localhost:5173 - Backend:
http://localhost:8000 - Healthcheck:
http://localhost:8000/healthz
make test # backend + frontend tests
make test-e2e # Playwright E2E tests| Variable | Required | Description |
|---|---|---|
DJANGO_SECRET_KEY |
Yes | Django secret key used for session and CSRF signing |
DATABASE_URL |
Yes | PostgreSQL connection string for backend |
ALLOWED_HOSTS |
Yes (prod) | Comma-separated Django allowed hosts |
DJANGO_DEBUG |
No | 1 for local dev, 0 for production |
POSTGRES_USER |
Yes (prod compose) | PostgreSQL username |
POSTGRES_PASSWORD |
Yes (prod compose) | PostgreSQL password |
POSTGRES_DB |
Yes (prod compose) | PostgreSQL database name |
- Backend: Django API (
backend/) with domain-specific apps. - Frontend: React + TanStack stack (
frontend/). - Database: PostgreSQL for users, letters, moderation, and profile data.
- API contract source:
.prodready/design/api/openapi.yaml.
- OpenAPI endpoint:
GET /openapi - Human-oriented API reference:
docs/api.md
Production deployment steps are documented in DEPLOYMENT.md.
The name came to my mind while reading L. M. Montgomery's book Anne of Windy Poplars which largely consists of letters Anne wrote to her fiancé Gilbert.