A full-stack platform demo built with FastAPI (Backend) and Angular (Frontend) that explores patterns commonly used in internal developer platforms and platform engineering teams.
The API manages projects, environments, and deployments, inspired by tools such as Heroku, Render, Backstage, Humanitec, and custom internal PaaS solutions.
graph LR
A[Client/CLI] --> B[Nginx Proxy]
B --> C[Angular Frontend]
B --> D[FastAPI Backend]
D --> E[(PostgreSQL)]
D --> F[Simulated Provisioner]
F --> G[Simulated Deployment]
This project intentionally uses simulated provisioning and deployment flows to focus on API design, data modelling, authentication, and platform concepts, rather than real infrastructure execution.
- Frontend UI: https://internal-platform-api-frontend-3vr6excz6q-ew.a.run.app
- Backend API: https://internal-platform-api-backend-3vr6excz6q-ew.a.run.app (via Proxy)
- API Docs: Swagger UI
- Health Check: https://internal-platform-api-frontend-3vr6excz6q-ew.a.run.app/api/v1/health
- Full Auth Flow: Register, Verify Email (Mock), Login, and Logout.
- Dual Session Support: Uses Cookie-based sessions with CSRF protection (XSRF-TOKEN) for the browser/UI, and supports Bearer JWT for API-first usage.
- Reverse Proxy Architecture: Nginx gracefully handles routing and path normalization (
/api/v1).
- Represent applications owned by authenticated users.
- Full CRUD under
/api/v1/projects.
- Belong to a project with
ephemeralorpersistenttypes. - Lifecycle simulation:
provisioningβrunning. - TTL support for ephemeral environments.
- Dynamic metadata (Base URL/ID) assignment during provisioning.
- Version tracking (git SHA, tag) targeted at specific environments.
- Lifecycle simulation:
pendingβrunningβsucceeded. - Simulated async rollout and fake log streaming.
- Parallel Pipeline: Faster cycle times via concurrent
testanddockerizejobs. - Smart Caching: GitHub Actions caching enabled for both
npmandpoetry. - Terraform IAC: Fully automated deployment to Google Cloud Run and Artifact Registry.
- E2E Smoke Testing: Automated Python-based smoke tests (Backend, Frontend, and E2E) run on every push to ensure stability.
cd backend
poetry install
poetry run uvicorn app.main:app --reload --port 8000Docs: http://localhost:8000/docs
cd frontend
npm install
npm startUI: http://localhost:4200 (Note: requires running the backend or configuring a proxy).
curl -s -X POST http://localhost:8000/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","password":"secret123"}'curl -s -X POST http://localhost:8000/api/v1/auth/login \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=test@example.com&password=secret123"curl -s -X POST http://localhost:8000/api/v1/projects/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"payments","description":"payment service"}'.
βββ backend/ # FastAPI Backend (Python 3.12, SQLAlchemy, Pydantic)
βββ frontend/ # Angular Frontend (Standalone Components, Signals)
βββ terraform/ # Infrastructure as Code (GCP Cloud Run)
βββ scripts/ # E2E Smoke Testing Suite & CI/CD utilities
For the fastest local setup, use the provided Makefile:
# Installs both Backend & Frontend dependencies and starts the development servers
make allTip
Use make stop to kill all running processes and make clean to reset the database and clear caches.
MIT