Portfolio is a full-stack biography and project showcase application with a Nuxt frontend and a FastAPI backend.
| Layer | Technology | Notes |
|---|---|---|
| Frontend | Nuxt 4 + Vue 3 + TypeScript | SSR/SSG-ready UI, composables, file-based routes |
| Content | TinaCMS + Nuxt Content | Git-backed content editing workflow |
| State | Pinia | Centralized frontend state (language stats and UI data) |
| Styling | Sass | Modular style architecture |
| Backend | FastAPI + Uvicorn | Async Python API for repository, health, and announcements |
| Data | SQLAlchemy + asyncpg | PostgreSQL-oriented backend data layer |
frontend/: Nuxt application, content, Tina config, and UI componentsbackend/: FastAPI app, services, models, database configuration, and testsdocs/: Top-level architecture docs and prototype assetsdocker-compose.yml: Local multi-service orchestration
From the repository root:
docker compose up --buildDefault ports:
- Frontend:
http://localhost:3002 - Backend:
http://localhost:8080
The compose setup reads variables from .env at repository root.
- Top-level architecture: docs/architecture.md
- Frontend architecture: frontend/docs/ARCHITECTURE.md
- Frontend context diagram: frontend/docs/context-diagram.md
- Backend architecture: backend/docs/architecture.md
- Prototype entry point: docs/prototype/index.html
Project release history is tracked in CHANGELOG.md.