Condo is an Open Source property management SaaS that allows users to manage tickets, resident contacts, properties, payment tracking, create invoices, and oversee a service marketplace, all while offering an extension system for mini-apps, making it an ideal platform for property management companies and those servicing shared properties.
We use postgres 16.4 to store most of the information, and Redis 6.2 to store session information, asynchronous tasks, and various caches. In addition to them, we use s3 to store files, but it is optional to get started.
You can start the databases using docker compose with this command:
docker compose up -d postgresdb redis
Or you can bring up the databases directly on the host machine, using the corresponding tutorials
All of our applications are written in Node.js, so you should also install it before you run the project.
Node version must be 16.x. You can check node version using
node -v
command in your terminal.
We recommend using nvm for local development, and for deploying the application there is Dockerfile ready to use at the root of the repository.
We also use Python with packages for database migrations. So make sure you have one installed.
To install Node.js dependencies simply type the following command:
yarn install
If you get errors related to missing yarn, use these instructions to install it.
We also use turborepo to orchestrate npm modules in this monorepo. Even though it is specified in the global
package.json
, in some environments you may get the error“turbo: command not found”
in further steps...In such cases, we recommend installing it globally using:
npm i -g turbo@^2
To install python packages type the command:
pip install Django psycopg2-binary
Condo depends on several packages located in ./packages
directory,
so it is required to build them before launching the main application.
You can do it using this command:
yarn workspace @app/condo build:deps
We have a mechanism in place to get applications ready for launch, specifically:
- Copy the global and local .env.example to .env
- Create a database for each application and perform the necessary migrations in it
- Assign dedicated ports to the applications
- Run the local prepare of each application
During the "local prepare" step each app prepares itself by filling extra environment variables, creating test users and other entities, needed for the first launch.
To launch prepare script, run the following command:
node bin/prepare -f condo
This step is only used in local development, so consider manually setting all environment variables and migrating databases using
yarn workspace @app/condo migrate
in real deployment pipelines.
The application is now fully ready to be started. To start the application locally in development mode, simply run the following command:
yarn workspace @app/condo dev
If, however, you want to build the app in production mode, then to do so, execute:
yarn workspace @app/condo build
And then run the project with:
yarn workspace @app/condo start
Now open your browser and navigate to http://localhost:4006, where you should see the app running 🥳.
You can control the port assigned by manually setting it in
apps/condo/.env
file. Default one is assigned by prepare script during the prepare step (You can verify theSERVER_URL
andPORT
in theapps/condo/.env
file)
To log in, go to http://localhost:4006/admin/signin and enter the following credentials:
- Email:
DEFAULT_TEST_ADMIN_IDENTITY
- Password:
DEFAULT_TEST_ADMIN_SECRET
These credentials can be found in the app/condo/.env
file, which is generated by the ./bin/prepare.js
script.
Worker is a separate process that handles asynchronous tasks (such as sending notifications, importing, exporting and others)
To run it, you need to first build the application using:
yarn workspace @app/condo build
And then start it using:
yarn workspace @app/condo worker
Check developing.md
Check deploy.md
Check contributing.md