A personal project for learning modern cloud-native development while building a practical book-tracking system.
The application consists of a React frontend, FastAPI backend, and PostgreSQL database running both locally (via Docker) and in Azure Container Apps.
- Track books, authors, series, reading sessions, locations, and ownership statuses
- PostgreSQL schema designed for normalization and extensibility
- Fully containerized development workflow
- Continuous deployment using GitHub Actions
- Azure-native hosting with Azure Container Apps and Azure Container Registry
flowchart LR
subgraph Frontend
A[React • TypeScript]
end
subgraph Backend
B[FastAPI • Python]
C[(PostgreSQL)]
end
subgraph Infrastructure
D[Azure Container Apps]
E[Azure Container Registry]
F[GitHub Actions CI/CD]
end
A -- REST/JSON --> B
B -- SQLAlchemy --> C
B --> E
A --> E
E --> D
D --> C
- Frontend: React, TypeScript
- Backend: FastAPI, SQLAlchemy, Pydantic
- Database: PostgreSQL
- Containers: Docker, Docker Compose
- CI/CD: GitHub Actions
- Cloud: Azure Container Apps, Azure Container Registry
book-tracker/
│
├─ frontend/ # React client
│ ├─ src/
│ └─ package.json
│
├─ backend/ # FastAPI service
│ ├─ app/
│ │ ├─ api/ # Routes
│ │ ├─ models/ # SQLAlchemy models
│ │ ├─ schemas/ # Pydantic models
│ │ ├─ db/ # DB session, engine, migrations
│ │ └─ core/ # Config, logging, settings
│ ├─ tests/
│ └─ requirements.txt
│
├─ database/
│ ├─ migrations/ # Alembic migrations
│ └─ seed/ # Initial lookup values
│
├─ infra/
│ ├─ docker/ # Dockerfiles, compose files
│ ├─ azure/ # Bicep/Terraform for ACA + ACR
│ └─ github/ # GitHub Actions pipelines
│
├─ docs/
│ ├─ schema/ # ERD + design docs
│ └─ architecture/
│
├─ .github/workflows/ # CI/CD pipelines
│
├─ LICENSE
└─ README.mddocker compose up --buildBackend will be available at:
http://localhost:8000
Frontend at:
http://localhost:3000
The deployment pipeline uses:
- GitHub Actions (CI + CD)
- Azure Container Registry (ACR)
- Azure Container Apps (ACA)
A push to main triggers:
- Build backend + frontend Docker images
- Push images to ACR
- Deploy updated revisions to ACA
Released under the MIT License.
Reuse, modification, and commercial use are welcome.
- User authentication
- Reading statistics dashboard
- Mobile-friendly UI
- Recommendation engine
- Offline reading list syncing