Skip to content

open-condo-software/open-condo-platform

Repository files navigation

CONDO

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.

condo

Getting started

1. Databases setup

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

2. Environment setup

Node.js 16.x

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.

Python 3.x

We also use Python with packages for database migrations. So make sure you have one installed.

3. Installing dependencies

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

4. Building @open-condo dependencies

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

5. Preparing the local app environment

We have a mechanism in place to get applications ready for launch, specifically:

  1. Copy the global and local .env.example to .env
  2. Create a database for each application and perform the necessary migrations in it
  3. Assign dedicated ports to the applications
  4. 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.

6. Start app locally in dev / prod mode

Development mode

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

Production mode

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 the SERVER_URL and PORT in the apps/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.

7. Start the worker

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

Developing

Check developing.md

Deploying

Check deploy.md

Contributing

Check contributing.md