Property Management Platform

Property Management Platform

Copyright (c) 2026 erik erik@erik.xyzhttps://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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
property-management-platform/
├── admin/ # admin-side webman v2 project
│ ├── app/
│ │ ├── admin/controller/ # admin controllers
│ │ ├── api/v1/controller/ # public API controllers
│ │ ├── common/ # shared utility classes
│ │ ├── middleware/ # middleware (auth/permission/rate limiting/security)
│ │ ├── model/ # data models (Eloquent ORM)
│ │ ├── queue/ # queued jobs
│ │ └── process/ # process management
│ ├── apps/
│ │ ├── flutter/ # admin console Flutter Web (PC style)
│ │ └── harmonyos/ # admin console HarmonyOS app
│ ├── config/ # configuration files (with Chinese comments)
│ ├── database/
│ │ ├── migrations/ # SQL migration files
│ │ └── backup/ # database backup scripts
│ ├── resource/
│ │ └── translations/ # i18n language files (zh_CN / en)
│ ├── docs/ # admin-side docs
│ ├── tests/ # unit tests
│ └── public/ # web entry point
├── service/ # owner-side webman v2 project
│ ├── app/
│ │ ├── api/v1/controller/ # owner-side API controllers
│ │ ├── common/ # shared utility classes
│ │ ├── middleware/ # middleware
│ │ ├── model/ # data models
│ │ └── process/ # process management
│ ├── config/ # configuration files
│ ├── resource/
│ │ └── translations/ # i18n language files
│ └── database/migrations/ # SQL migration files
├── apps/
│ ├── flutter/ # owner-side Flutter Web (PC style)
│ └── harmonyos/ # owner-side HarmonyOS app
└── docs/ # project docs
├── ARCHITECTURE.md
├── ARCHITECTURE_DESIGN.md
├── API.md
├── FEATURES.md
└── FEATURE_DESIGN.md

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-Language header

Security Architecture (18 layers of defense in depth)

  1. 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
2
3
4
5
6
7
8
# create the database
mysql -u root -e "CREATE DATABASE IF NOT EXISTS property_management DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# import the admin-side tables
mysql -u root property_management < admin/database/migrations/2026_05_16_000000_init_tables.sql
mysql -u root property_management < admin/database/migrations/2026_05_20_000001_seed_permissions.sql
mysql -u root property_management < admin/database/migrations/2026_05_21_000002_add_source_to_operation_log.sql
mysql -u root property_management < admin/database/migrations/2026_05_22_000001_property_batch1_tables.sql

2. Start the Admin Side

1
2
3
4
5
6
cd admin
cp .env.example .env
# edit .env to set the database password and other config
composer install
php start.php start -d
# the admin side runs at http://localhost:8787

3. Start the Service Side

1
2
3
4
5
6
cd service
cp .env.example .env
# edit .env to set the database password and other config
composer install
php start.php start -d
# the service side runs at http://localhost:8788

4. Start the Front End (development)

1
2
3
cd apps/flutter
flutter pub get
flutter run -d chrome

Docker Deployment

1
2
3
4
cd admin
cp .env.docker .env
docker-compose up -d
# includes Nginx + PHP + MySQL + Redis + Elasticsearch

Deployment Topology

1
2
Nginx (:443) → admin webman (:8787) + service webman (:8788) → MySQL + Redis + Elasticsearch
Static files: Flutter Web build/

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
2
3
4
5
6
7
8
9
Lite

│ + 6 auxiliary modules + dashboard + export

Standard

│ + 6 advanced modules + 12 extended features

Full

Upgrading only requires running the SQL migration files for the matching batch — no data migration and no breaking changes.