Property Management Platform
Copyright (c) 2026 erik erik@erik.xyz — https://erik.xyz
A full-stack property management system covering 15 business modules, from community management and fee collection to repair and maintenance, parking and access control, security, and cleaning. The admin side (admin) and the owner side (service) are deployed separately, and the front end covers Flutter Web (PC admin console style) plus a HarmonyOS mobile app.
Project Structure
1 | property-management-platform/ |
Feature Modules (15 major modules)
| Batch | Modules | Admin side | Owner side |
|---|---|---|---|
| Batch 1 | Community management, Building management, Unit management, Owner management, Tenant management, Fee management, Repair management, Announcements | Full CRUD | View / pay / submit repairs / review |
| Batch 2 | Parking management, Equipment management, Complaints & suggestions, Visitor management, Contract management, Financial management | Full CRUD + approvals | Book / submit / view |
| Batch 3 | Security patrols, Cleaning management, Landscaping management, Community events, Energy management, Staff management | Full CRUD | View / sign up |
Download
Tech Stack
Backend
- Framework: webman v2 (workerman/webman)
- Language: PHP 8.3+
- Database: MySQL 8.0+, table prefix
erik_, non-auto-increment BIGINT primary keys - Search engine: Elasticsearch 8.x
- Cache: Redis 7.x
Core Dependencies
| Package | Purpose |
|---|---|
erikwang2013/snowflake-php |
Globally unique BIGINT primary key generation |
erikwang2013/hashids |
ID encryption/decryption at the API layer |
erikwang2013/jwt-webman |
JWT authentication (HS256) |
erikwang2013/encryption |
AES-256-CBC encryption for sensitive data in API transport |
erikwang2013/encryptable |
Encryption/decryption of sensitive database fields |
erikwang2013/webman-scout |
Elasticsearch data sync and full-text search |
erikwang2013/season |
Country flag data |
erikwang2013/security-php |
Security tool detection |
erikwang2013/poster-php |
Random verification codes for sensitive operations |
phpoffice/phpspreadsheet |
Excel export |
barryvdh/laravel-dompdf |
PDF export |
Frontend
- Flutter 3.x + GetX (with i18n) + Dio + fl_chart — PC-style web admin console
- HarmonyOS ArkTS + @ohos.net.http — mobile app
Internationalization
- PHP backend: symfony/translation, language files at
resource/translations/{zh_CN,en}/messages.php - Flutter Web: GetX
Translations,apps/flutter/lib/i18n/messages.dart - Default language: Simplified Chinese (zh_CN), with English (en) switching
- Request header: the response language can be controlled through the
Accept-Languageheader
Security Architecture (18 layers of defense in depth)
- Click captcha → 2. Secondary password confirmation → 3. poster random verification → 4. security-php security scan → 5. SecurityFilter attack blocking → 6. HTTPS + AES-256-CBC transport encryption → 7. JWT HS256 authentication → 8. Concurrent session limit (3 max) → 9. Account lockout (5 failures/15 minutes) → 10. RBAC authorization (method.path granularity) → 11. Redis sliding-window rate limiting → 12. Hashids ID protection → 13. Request body sensitive field encryption → 14. Encrypted DB field storage → 15. Presentation-layer data masking → 16. Full operation log auditing (8 source platforms) → 17. CSP header protection → 18. PDF copyright watermark
Coding Conventions
- Every new file starts with a copyright notice:
Copyright (c) 2026 erik <erik@erik.xyz> — https://erik.xyz - Global functions and classes are imported with
use, never with a leading\ - Configuration files carry Chinese comments explaining each option
- Primary key IDs use BIGINT UNSIGNED NOT NULL, generated at the application layer by snowflake-php
- IDs sent over the API are encrypted and decrypted with hashids
Quick Start
Requirements
- PHP 8.1+
- MySQL 8.0+
- Redis 6.0+
- Composer 2.x
- Flutter SDK 3.x (front-end development)
1. Initialize the Database
1 | # create the database |
2. Start the Admin Side
1 | cd admin |
3. Start the Service Side
1 | cd service |
4. Start the Front End (development)
1 | cd apps/flutter |
Docker Deployment
1 | cd admin |
Deployment Topology
1 | Nginx (:443) → admin webman (:8787) + service webman (:8788) → MySQL + Redis + Elasticsearch |
Default Administrator
| Username | Password | Role |
|---|---|---|
| admin | admin123 | Super administrator |
Change the default password immediately in production.
The property management system comes in three editions — Lite, Standard, and Full — each one building on the last.
Overview
| Metric | Lite | Standard | Full |
|---|---|---|---|
| Database tables | 21 | 31 | 65 |
| Eloquent models | 19 | 30 | 58 |
| Admin controllers | 17 | 28 | 47 |
| Owner-side controllers | 9 | 12 | 17 |
| API routes | 35 | 70 | 178 |
| Business modules | 10 | 18 | 34 |
| Security layers | 18 layers | 18 layers | 18 layers |
Feature Module Comparison
Lite
Core property management, with the generic admin backend plus 10 core business modules.
Admin side: Dashboard, User/Role/Permission/Config/Log CRUD, Community/Building/Unit/Floor plan/Property/Owner/Tenant/Fee/Repair/Announcement CRUD
Owner side: Register/login, home, my properties, bill payment, repair submission/review, announcement viewing, personal profile
Standard
Adds 6 auxiliary business modules + dashboard visualizations + data export on top of Lite.
New on the admin side: Parking space/vehicle CRUD, equipment ledger + maintenance, complaint handling + follow-up, visitor approval, contract management, income and expense management + statistics
New on the owner side: My vehicles / parking spaces, parking history, visitor booking / access code
Full
Adds advanced modules + 12 extended features on top of Standard.
New on the admin side: Patrol routes + records, cleaning zones + records, landscaping zones + upkeep, community event management, energy meters + meter reading, staff management, notification templates + sending, approval engine, payment orders + refunds, voting management + SLA rules + dunning strategies + inspection tasks + mall management + face recognition review + group management + knowledge base
New on the owner side: Community event sign-up, parking/visitor booking, message notifications, voting + vote counting, browse products + place orders, smart Q&A, face registration
Technical Metrics Comparison
| Metric | Lite | Standard | Full |
|---|---|---|---|
| Database tables | 21 | 31 | 65 |
| Model files | 19 | 30 | 58 |
| admin controllers | 17 | 28 | 47 |
| service controllers | 9 | 12 | 17 |
| admin routes | 45 | 80 | 123 |
| service routes | 20 | 35 | 55 |
| Flutter pages | 4 | 7 | 10 |
| HarmonyOS pages | 2 | 3 | 5 |
| Middleware | 7 | 8 | 9 |
| PHP tests | 18 | 18 | 18 |
Security Architecture (common to all three editions)
18 layers of defense in depth: captcha → password confirmation → random verification → security scan → attack blocking → HTTPS + AES-256-CBC → JWT → session control → account lockout → RBAC → rate limiting → ID protection → request encryption → storage encryption → presentation masking → auditing → CSP → copyright watermark
Upgrade Path
1 | Lite |
Upgrading only requires running the SQL migration files for the matching batch — no data migration and no breaking changes.

