From 24087c281015dc2a16e97129dc3de6968aed5038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Trkan?= Date: Sun, 2 Nov 2025 22:59:12 +0100 Subject: [PATCH] updated report --- 7project/report.md | 74 ++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/7project/report.md b/7project/report.md index 3debd2c..6669ed8 100644 --- a/7project/report.md +++ b/7project/report.md @@ -52,46 +52,45 @@ flowchart LR - Backend: Python, FastAPI, FastAPI Users, SQLAlchemy, Pydantic, Alembic, Celery - Frontend: React, TypeScript, Vite -- Database: PostgreSQL -- Messaging: RabbitMQ -- Cache: Redis +- Database: MariaDB (Maxscale) +- Background jobs: RabbitMQ, Celery - Containerization/Orchestration: Docker, Docker Compose (dev), Kubernetes, Helm -- IaC/Platform: OpenTofu (Terraform), Argo CD, cert-manager, MetalLB, Cloudflare Tunnel, Prometheus +- IaC/Platform: Proxmox, Talos, Cloudflare pages, OpenTofu (Terraform), cert-manager, MetalLB, Cloudflare Tunnel, Prometheus, Loki ## Prerequisites ### System Requirements -- Operating System: Linux, macOS, or Windows +- Operating System (dev): Linux, macOS, or Windows with Docker support +- Operating System (prod): Linux with kubernetes - Minimum RAM: 4 GB (8 GB recommended for running backend, frontend, and database together) -- Storage: 2 GB free (Docker images may require additional space) +- Storage: 4 GB free (Docker images may require additional space) ### Required Software -- Docker Desktop or Docker Engine 24+ -- Docker Compose v2+ -- Node.js 20+ and npm 10+ (for local frontend dev/build) -- Python 3.12+ (for local backend dev outside Docker) -- PostgreSQL 15+ (optional if running DB outside Docker) -- Helm 3.12+ and kubectl 1.29+ (for Kubernetes deployment) -- OpenTofu 1.7+ (for infrastructure provisioning) +- Docker Desktop or Docker Engine +- Docker Compose +- Node.js and npm +- Python 3.12+ +- MariaDB 11 +- Helm 3.12+ and kubectl 1.29+ +- OpenTofu ### Environment Variables (common) +# TODO: UPDATE - Backend: SECRET, FRONTEND_URL, BACKEND_URL, DATABASE_URL, RABBITMQ_URL, REDIS_URL + - OAuth vars (Backend): MOJEID_CLIENT_ID/SECRET, BANKID_CLIENT_ID/SECRET (optional) - Frontend: VITE_BACKEND_URL ### Dependencies (key libraries) -I am not sure what is meant by "key libraries" +Backend: FastAPI, fastapi-users, SQLAlchemy, pydantic v2, Alembic, Celery, uvicorn +Frontend: React, TypeScript, Vite -Backend: FastAPI, fastapi-users, SQLAlchemy, pydantic v2, Alembic, Celery -Frontend: React, TypeScript, Vite -Services: PostgreSQL, RabbitMQ, Redis +## Local development -## Build Instructions - -You can run the project with Docker Compose (recommended for local development) or run services manually. +You can run the project with Docker Compose and Python virtual environment for testing and dev purposes ### 1) Clone the Repository @@ -103,9 +102,8 @@ cd 7project ### 2) Install dependencies Backend ```bash -# In 7project/backend -python3.12 -m venv .venv -source .venv/bin/activate # Windows: .venv\Scripts\activate +python3 -m venv .venv +source .venv/bin/activate pip install -r requirements.txt ``` Frontend @@ -120,9 +118,10 @@ Backend ```bash # From the 7project/ directory docker compose up --build -# This starts: PostgreSQL, RabbitMQ/Redis (if defined) +# This starts: MariaDB, RabbitMQ # Set environment variables (or create .env file) +# TODO: fix export SECRET=CHANGE_ME_SECRET export BACKEND_URL=http://127.0.0.1:8000 export FRONTEND_URL=http://localhost:5173 @@ -131,13 +130,12 @@ export RABBITMQ_URL=amqp://guest:guest@127.0.0.1:5672/ export REDIS_URL=redis://127.0.0.1:6379/0 # Apply DB migrations (Alembic) -# From 7project/backend -alembic upgrade head +# From 7project +bash upgrade_database.sh # Run API uvicorn app.app:fastApi --reload --host 0.0.0.0 --port 8000 -# Run Celery worker (optional, for emails/background tasks) celery -A app.celery_app.celery_app worker -l info ``` @@ -152,18 +150,22 @@ npm run dev - Backend default: http://127.0.0.1:8000 (OpenAPI at /docs) - Frontend default: http://localhost:5173 -If needed, adjust compose services/ports in compose.yml. - +## Build Instructions +### Backend +```bash +# run in project7/backend +docker buildx build --platform linux/amd64,linux/arm64 -t your_container_registry/your_name --push . +``` +### Frontend +```bash +# run in project7/frontend +npm ci +npm run build +``` ## Deployment Instructions -### Local (Docker Compose) - -Described in the previous section (Manual Local Run) - -### Kubernetes (via OpenTofu + Helm) - -1) Provision platform services (RabbitMQ/Redis/ingress/tunnel/etc.) with OpenTofu +1) Install base services to cluster ```bash cd tofu # copy and edit variables