Skip to main content

Project Structure

Conformly.ai is a monorepo-style workspace with three projects:
conformly/
├── conformly-core/       # FastAPI backend (Python)
├── conformly-frontend/   # Platform app (React + TypeScript)
└── conformly-web/        # Marketing site (React + TypeScript)

Development Setup

The backend runs in Docker with hot-reload enabled:
cd conformly-core
cp env.example .env          # Configure credentials
docker compose up -d         # Start all services
docker compose logs -f backend   # Watch logs
Services started:
  • backend — FastAPI on port 8000 (with --reload)
  • redis — Message broker on port 6379
  • celery-worker — Background task processing
  • celery-beat — Scheduled tasks
To restart after .env changes:
docker compose up -d --force-recreate backend

Backend (Local Python — alternative)

cd conformly-core
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp env.example .env
python run.py

Platform Frontend

cd conformly-frontend
yarn install
yarn dev          # Runs on http://localhost:8080

Marketing Site

cd conformly-web
yarn install
yarn dev          # Runs on http://localhost:5173

CORS Configuration

The backend must allow requests from both frontend dev servers. In conformly-core/.env:
ALLOWED_ORIGINS=http://localhost:5173,http://localhost:8080,http://localhost:3000

Running Tests

Backend

cd conformly-core
pytest

Frontend

cd conformly-frontend
yarn test

Code Formatting

Backend

black app/
isort app/
flake8 app/

Frontend

yarn lint
yarn format

Hot Reload

All three projects support hot reload:
  • Backend (Docker): The docker-compose.yml passes --reload to uvicorn. Source files are volume-mounted, so changes take effect immediately.
  • Backend (local): run.py starts uvicorn with reload=True in development mode.
  • Frontend: Vite HMR (Hot Module Replacement) — instant updates in the browser.
  • Marketing site: Vite HMR — same behavior.

Environment Variable Cross-References

The three projects reference each other via environment variables. See the Quickstart for the full mapping table.

Debugging

Backend

  • Interactive API docs: http://localhost:8000/docs
  • Container logs: docker compose logs -f backend
  • Celery task monitor (Flower): docker compose --profile monitoring up -d, then http://localhost:5555

Frontend

  • Browser DevTools + React DevTools extension
  • Network tab to inspect API calls and auth headers
  • Console for auth events logged by ProtectedRoute

Contributing Guide

Learn about contributing to Conformly.ai