Kinh nghiệm
6 phút đọc5 tháng 6, 20261

Condo: Nền tảng quản lý bất động sản open-source đáng để fork

Một SaaS quản lý chung cư full-featured, open-source, với extension system cho mini-apps nghe hấp dẫn không?

N

Nguyễn Nhật Long

@nguyennhatlong1303

Condo: Nền tảng quản lý bất động sản open-source đáng để fork

Mình tình cờ đụng vào repo open-condo-software/condo trong lúc đang research về các property management system, và thật sự bị ấn tượng bởi scope của dự án này. Không phải kiểu "open-source cho có", mà là một platform thực sự được build để chạy production, với 353 stars, 120 forks, và lịch sử 16,128 commits con số đó nói lên rất nhiều thứ.

Nói ngắn gọn: Condo là một SaaS quản lý bất động sản (cụ thể là chung cư, tòa nhà dùng chung) với đầy đủ các tính năng từ quản lý ticket, danh bạ cư dân, theo dõi thanh toán, tạo hóa đơn, cho đến một service marketplace và quan trọng hơn, nó có một extension system cho phép bạn build mini-apps lên trên nền tảng này.

Stack kỹ thuật: Không có gì quá bất ngờ, nhưng solid

Nhìn vào codebase, Condo chạy trên Node.js (LTS 24.x), dùng Postgres 16.4 làm primary database, Redis 6.2 cho session, async tasks và cache. File storage thì dùng S3 (optional khi mới setup local). Build system là Turborepo cái này mình thấy là lựa chọn khá hợp lý cho một monorepo có nhiều apps và packages.

Structure của repo theo kiểu:

TEXT
1├── apps/ # Các ứng dụng chính
2├── packages/ # Shared packages/libraries
3├── docs/ # Documentation
4├── .helm/ # Helm charts để deploy lên K8s
5├── docker-compose.yml
6└── Dockerfile

Cái mình appreciate là họ chuẩn bị khá đầy đủ cho cả dev lẫn production. Có sẵn docker-compose.yml để spin up local, có Dockerfile ở root, có Helm charts cho Kubernetes deployment, dùng werf cho CI/CD pipeline. Không phải kiểu "chạy local được rồi, còn deploy thì tự lo".

Ngoài Node.js, họ còn dùng Python 3.x cho database migrations đây là điểm hơi lạ, nhưng có lẽ là legacy decision hoặc họ dùng Alembic/một migration tool Python nào đó quen thuộc hơn.

Developer Experience khi setup

Theo mình đánh giá, DX của project này ở mức khá. Getting started flow tương đối straightforward:

Terminal
1# Bước 1: Spin up databases
2docker compose up -d postgresdb redis
3
4# Bước 2: Install dependencies (dùng Yarn)
5yarn install
6
7# Bước 3: Setup env, build @open-condo dependencies
8# Bước 4: Chạy app

Họ dùng Yarn với PnP (.yarnrc.yml có trong repo), kết hợp Turborepo để chạy parallel builds. Với monorepo lớn như này, setup build tooling đúng cách là rất quan trọng và nhìn qua thì họ làm tốt.

Có một vài thứ anh em cần lưu ý trước khi dive in:

  • Cần cài cả Node.js 24.x lẫn Python 3.x hai runtime khác nhau, hơi phiền nhưng không quá khó
  • Mình recommend dùng nvm để quản lý Node version, họ cũng mention điều này trong README
  • Nếu chưa quen với Turborepo, có thể mất một chút thời gian để hiểu build graph của project

Tính năng core: Đủ dùng cho một property management company thực sự

Đây là phần mình thấy ấn tượng nhất. Condo không phải là một CRUD app đơn giản. Các tính năng bao gồm:

Cái mini-apps extension system là điểm khác biệt lớn nhất. Thay vì là một closed platform, Condo cho phép bạn (hoặc third-party developers) build các mini-apps tích hợp vào hệ thống. Đây là pattern mình thấy rất phổ biến ở các platform lớn như WeChat, Grab và việc một property management tool open-source có cái này thực sự là một big deal.

Tính năngMô tả
Ticket managementQuản lý yêu cầu từ cư dân, assign cho staff
Resident contactsDanh bạ cư dân, quản lý thông tin liên lạc
Property managementQuản lý tòa nhà, căn hộ, mặt bằng
Payment trackingTheo dõi thanh toán, phí dịch vụ
Invoice creationTạo và quản lý hóa đơn
Service marketplaceMarketplace cho các dịch vụ liên quan đến tòa nhà
Mini-apps extensionHệ thống mở rộng cho third-party apps

Codebase quality: Nhìn vào các signals

Mình không có thời gian đọc hết 16k commits, nhưng có một số signals tốt:

Tooling setup nghiêm túc:

  • Có ESLint + Stylelint config
  • commitlint.config.js tức là họ enforce conventional commits
  • Có Husky hooks
  • Dùng SonarCloud (.sonarcloud.properties) và Semgrep (.semgrepignore) cho code quality và security scanning
  • Renovate để auto-update dependencies

Nhìn vào đây mình thấy đây là một team làm việc professional, không phải side project bỏ bê. 91 open pull requests cũng cho thấy project đang được actively develop.

Về security: Họ dùng GitHub Advanced Security và Semgrep scan với một SaaS xử lý payment data, điều này là bắt buộc phải có.

Ai nên dùng Condo?

Thẳng thắn mà nói, Condo phù hợp với một số nhóm cụ thể:

Phù hợp nếu bạn:

  • Đang build hoặc maintain một property management platform và muốn có một solid foundation thay vì build from scratch
  • Là một công ty quản lý tòa nhà muốn self-host thay vì phụ thuộc vào SaaS đắt tiền
  • Muốn học cách một production-grade Node.js monorepo được tổ chức như thế nào
  • Đang nghiên cứu về mini-app extension architecture

Không phù hợp nếu bạn:

  • Cần một solution plug-and-play không cần config nhiều Condo có learning curve nhất định
  • Team không có Node.js experience, vì codebase khá lớn và phức tạp
  • Chỉ cần một vài tính năng nhỏ overhead của một full SaaS platform có thể quá lớn

Deployment: Kubernetes-first

Nhìn vào .helm/ directory và werf.yaml, rõ ràng team này design Condo để chạy trên Kubernetes. werf là một tool của Flant (công ty Nga) để manage K8s deployments, khá ít phổ biến ở Việt Nam nhưng powerful.

Nếu team bạn chưa có K8s infrastructure, thì deploy Condo lên production sẽ là một challenge không nhỏ. Tuy nhiên với Docker Compose setup sẵn, chạy local hoặc trên một VPS đơn giản vẫn hoàn toàn khả thi chỉ cần adjust một chút.

Theo kinh nghiệm của mình, với các project monorepo phức tạp như này, phần tốn thời gian nhất không phải là code mà là infrastructure setup. Anh em nên dành thời gian đọc kỹ phần Deploying trong docs trước khi bắt đầu.

Điểm trừ thực tế

Mình không muốn chỉ nói tốt, nên thẳng thắn một chút:

  • Documentation nhìn qua có vẻ còn sparse README cover được getting started nhưng deep-dive vào architecture hay extension system thì chưa rõ
  • Python dependency cho migrations là một điểm hơi awkward trong một Node.js project. Không phải dealbreaker nhưng thêm một bước setup
  • werf cho deployment là một tool khá niche nếu team bạn dùng ArgoCD hay Flux thì cần adapt
  • 26 open issues không nhiều, nhưng với 91 PRs đang mở, review bandwidth của maintainers có thể là bottleneck

Verdict

Condo là một trong những open-source property management platform solid nhất mình từng thấy. Không phải vì nó perfect, mà vì nó thực sự được build để chạy production có đủ tooling, security scanning, CI/CD setup, và một extension system thực sự có tư duy về scalability.

Nếu bạn đang trong lĩnh vực proptech hoặc đơn giản là muốn study một Node.js monorepo production-grade được tổ chức tốt, thì fork về và đọc codebase là một investment thời gian xứng đáng. Với các bạn đang build property management features từ đầu seriously, hãy xem qua cái này trước khi reinvent the wheel.

NN

Nguyễn Nhật Long

@nguyennhatlong1303

Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.

Thấy hay? Chia sẻ cho bạn bè!