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?
Nguyễn Nhật Long
@nguyennhatlong1303
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:
1├── apps/ # Các ứng dụng chính2├── packages/ # Shared packages/libraries3├── docs/ # Documentation4├── .helm/ # Helm charts để deploy lên K8s5├── docker-compose.yml6└── 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:
1# Bước 1: Spin up databases2docker compose up -d postgresdb redis34# Bước 2: Install dependencies (dùng Yarn)5yarn install67# Bước 3: Setup env, build @open-condo dependencies8# 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ăng | Mô tả |
|---|---|
| Ticket management | Quản lý yêu cầu từ cư dân, assign cho staff |
| Resident contacts | Danh bạ cư dân, quản lý thông tin liên lạc |
| Property management | Quản lý tòa nhà, căn hộ, mặt bằng |
| Payment tracking | Theo dõi thanh toán, phí dịch vụ |
| Invoice creation | Tạo và quản lý hóa đơn |
| Service marketplace | Marketplace cho các dịch vụ liên quan đến tòa nhà |
| Mini-apps extension | Hệ 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
- Có
commitlint.config.jstức là họ enforce conventional commits - Có Husky hooks
- Dùng SonarCloud (
.sonarcloud.properties) và Semgrep (.semgrepignore) cho code quality và security scanning - Có 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.
Nguyễn Nhật Long
@nguyennhatlong1303Nguyễ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è!