Prerequisites
Before you begin, make sure you have the following installed:Node.js 24.x
The current LTS version. Use nvm to manage versions. Check with
node -v.Python 3.x
Required for database migrations via the Django-based
kmigrator tool.Docker & Docker Compose
Used to run PostgreSQL 16 and Redis 6.2 locally. Optional if you run databases directly on the host.
Condo uses Yarn 3.2.2+ (Berry) as its package manager. If you don’t have it, follow the Yarn installation guide.
Setup steps
Start the databases
Condo requires PostgreSQL (port
5432) and Redis (port 6379). Start both with Docker Compose:Install Python packages
The database migration tool (
kmigrator) is Django-based and requires two Python packages:Install Node.js dependencies
Install all Node.js dependencies across the monorepo:
If you see a
turbo: command not found error in later steps, install Turbo globally:Build @open-condo packages
Condo depends on several internal packages in the This command uses Turbo to build all upstream package dependencies of
packages/ directory. Build them before launching the app:@app/condo in the correct order.Prepare the local environment
The prepare script handles first-time setup automatically:After the script completes, check
- Copies
.env.examplefiles to.env - Creates the application database and runs migrations
- Assigns a port to the app
- Creates test users and other seed data needed for first launch
apps/condo/.env for the assigned PORT, SERVER_URL, DEFAULT_TEST_ADMIN_IDENTITY, and DEFAULT_TEST_ADMIN_SECRET values.Start the app in development mode
Launch the main Condo application with hot-reload enabled:The app will be available at http://localhost:4006. The exact port depends on what was assigned during the prepare step — verify with
SERVER_URL in apps/condo/.env.Start the worker
The worker is a separate process that handles asynchronous tasks such as sending notifications, imports, and exports. It requires the app to be built first:
The worker must be running for notifications, data imports, and exports to function. You can run both the dev server and the worker simultaneously in separate terminal sessions.
Accessing the admin UI
Once the app is running, open your browser and navigate to:| Field | Value |
|---|---|
Value of DEFAULT_TEST_ADMIN_IDENTITY in apps/condo/.env | |
| Password | Value of DEFAULT_TEST_ADMIN_SECRET in apps/condo/.env |
Quick reference
The full setup sequence in one block:Production mode
To run the app in production mode instead of dev:Next steps
Architecture
Understand the monorepo structure, tech stack, and how apps and packages relate.
Project structure
Learn about domain-driven design inside
apps/condo/domains/.Testing
Run schema tests and unit tests with Jest.
Deploy with Docker
Run Condo in production using the included Docker Compose configuration.