# Architecture

Qlockify is deployed as a containerized web application behind Nginx.

## Runtime Flow

![Qlockify runtime request flow](../assets/diagrams/qlockify-runtime-request-flow.png)

High-level request flow:

- Browser requests are served through Nginx.
- Static frontend assets are served by the frontend container.
- API and admin requests are proxied to the Django backend.
- Django stores relational data in PostgreSQL.
- Redis is used for cache, async job brokering, and background coordination.
- Celery workers process async jobs.
- Celery Beat schedules recurring jobs such as demo cleanup.

## Multi-Repo Setup

![Qlockify runtime request flow](../assets/diagrams/qlockify-multi-repo-layout.png)

The actual source uses separate private repositories for:

- backend application code
- frontend application code
- deployment/orchestration configuration

This keeps application changes, frontend changes, and production operations changes isolated from each other. The public showcase repository does not include those private repositories or their deployment files.

## Public Safety Boundary

This repository intentionally excludes:

- source code
- database migrations and schemas
- Docker Compose and Nginx configuration
- CI/CD workflows
- backup scripts
- environment variables
- private repository URLs with credentials
- real production logs or user data

