Skip to main content

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.