Thanks for your interest in contributing!
- Docker (required for automated setup)
- Python 3.11+
- Git
Note: PostgreSQL runs in Docker, no local database installation needed!
The fastest way to get started:
-
Fork and clone the repository
git clone https://github.com/omnara-ai/omnara.git cd omnara -
Copy environment configuration
cp .env.example .env
-
Generate JWT keys
python infrastructure/scripts/generate_jwt_keys.py
-
Start everything with one command
./dev-start.sh
This automatically:
- Starts PostgreSQL in Docker
- Runs database migrations
- Starts the Backend API (port 8000)
- Starts the Unified Server (port 8080)
-
When you're done developing
./dev-stop.sh
If you need a fresh database:
./dev-start.sh --reset-dbIf you prefer manual control:
-
Set up your development environment:
python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate make dev-install make pre-commit-install
-
Set up PostgreSQL and configure
DATABASE_URLin.env -
Generate JWT keys:
python infrastructure/scripts/generate_jwt_keys.py -
Run migrations:
cd src/shared && alembic upgrade head -
Start services manually:
# Set Python path (required for imports) export PYTHONPATH="$(pwd)/src" # Terminal 1: Unified Server python -m servers.app # Terminal 2: Backend API (in project root, not backend/) uvicorn backend.main:app --port 8000
- Create a branch:
feature/,bugfix/, ordocs/ - Make your changes
- Run checks:
make lintandmake test - Submit a pull request
- Python 3.10+
- Type hints required
- Follow existing patterns
- Tests for new features
When modifying models:
- Edit models in
src/shared/database/models.py - Generate migration:
cd src/shared && alembic revision --autogenerate -m "description" - Test migration before committing
Use conventional commits:
feat:New featurefix:Bug fixdocs:Documentationrefactor:Code refactoringtest:Tests
Example: feat: add API key rotation endpoint
make lint # Run linting checks
make format # Auto-format code
make test # Run all tests
make test-unit # Unit tests only
make test-integration # Integration tests (needs Docker)
make typecheck # Type checkingOpen an issue on GitHub!