Installation
Modulo runs on Docker Compose. You’ll need Docker Desktop or a Docker Engine on Linux.
Prerequisites
- Docker & Docker Compose v2.20+
- Python 3.12+ and uv (or pip)
- A GitHub account (for GitHub connector setup)
- 4 GB RAM minimum (8 GB recommended)
Quick start
git clone https://github.com/farnalabs/modulo
cd modulo
# Start Postgres 16 and Redis 7
docker compose -f docker-compose.local.yml up -d
# The API will be at http://localhost:8000
# The frontend at http://localhost:5173
Configuration
Create a .env file in the backend/ directory:
DATABASE_URL=postgresql+asyncpg://modulo:modulo@localhost:5434/modulo
SECRET_KEY=generate-a-random-32-byte-key-here
FERNET_KEY=generate-a-fernet-key-here
MODULO_USERS=admin:admin
CORS_ORIGINS=http://localhost:5173
Generate the keys:
python -c "import secrets; print(secrets.token_hex(32))" # SECRET_KEY
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" # FERNET_KEY
Verify it works
# Run migrations
cd backend
uv run alembic upgrade heads
# Start the API
uv run uvicorn modulo.api.main:app --reload --port 8000
# In another terminal, start the frontend
cd frontend
npm run dev
Open http://localhost:5173 and log in with admin:admin.