{"id":30695893,"url":"https://github.com/c-kiplimo/property-management-system","last_synced_at":"2026-05-07T04:42:48.300Z","repository":{"id":291735556,"uuid":"977459742","full_name":"c-kiplimo/Property-Management-System","owner":"c-kiplimo","description":"Property Management is a backend service designed to manage tenants, landlords, and rental operations. It provides APIs for onboarding landlords, managing tenant profiles, handling authentication (e.g., via Google ID), and integrating with property or rental-related data. Built with Go","archived":false,"fork":false,"pushed_at":"2025-08-08T14:34:47.000Z","size":55,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-08-08T16:26:40.159Z","etag":null,"topics":["authentication","backend-api","docker","gin","golang","google","gorm"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/c-kiplimo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-04T09:03:58.000Z","updated_at":"2025-08-08T14:38:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"eee71d3b-418b-4131-a664-4b89f087036e","html_url":"https://github.com/c-kiplimo/Property-Management-System","commit_stats":null,"previous_names":["c-kiplimo/tenant-management-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/c-kiplimo/Property-Management-System","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-kiplimo%2FProperty-Management-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-kiplimo%2FProperty-Management-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-kiplimo%2FProperty-Management-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-kiplimo%2FProperty-Management-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/c-kiplimo","download_url":"https://codeload.github.com/c-kiplimo/Property-Management-System/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-kiplimo%2FProperty-Management-System/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273245128,"owners_count":25071166,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","backend-api","docker","gin","golang","google","gorm"],"created_at":"2025-09-02T07:10:48.923Z","updated_at":"2026-05-07T04:42:43.278Z","avatar_url":"https://github.com/c-kiplimo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README.md - Updated for DDD Architecture\n# Property Management System - Domain-Driven Design\n\nA comprehensive property management system built with Domain-Driven Design (DDD) principles using Go, Gin, GORM, and PostgreSQL.\n\n## Architecture Overview\n\nThis system follows Domain-Driven Design (DDD) architecture with clear separation of concerns:\n\n### Domain Boundaries\n\n1. **Identity Domain** - Authentication, authorization, and landlord management\n2. **Property Domain** - Physical properties and units management\n3. **Tenant Domain** - Tenant information and relationships\n4. **Leasing Domain** - Rental agreements and occupancy\n5. **Financial Domain** - Payments, rent collection, and expenses\n6. **Maintenance Domain** - Work orders and property maintenance\n7. **Document Domain** - File storage and management\n\n### Architecture Layers\n\n```\n┌─────────────────────────────────────────┐\n│           Interface Layer               │\n│    (HTTP Handlers, Routes, Middleware)  │\n├─────────────────────────────────────────┤\n│          Application Layer              │\n│   (Commands, Queries, Command Handlers) │\n├─────────────────────────────────────────┤\n│            Domain Layer                 │\n│  (Entities, Value Objects, Events)     │\n├─────────────────────────────────────────┤\n│         Infrastructure Layer           │\n│   (Repositories, External Services)    │\n└─────────────────────────────────────────┘\n```\n\n## Key Features\n\n### Domain-Driven Benefits\n- **Business Focus**: Code structure mirrors business domains\n- **Scalability**: Independent domain evolution\n- **Maintainability**: Clear boundaries and responsibilities\n- **Testability**: Isolated domains for easier testing\n- **Event-Driven**: Loose coupling through domain events\n\n### Technical Features\n- **CQRS Pattern**: Separate commands and queries\n- **Domain Events**: Cross-domain communication\n- **Value Objects**: Rich domain modeling\n- **Repository Pattern**: Data access abstraction\n- **Clean Architecture**: Dependency inversion\n\n## Project Structure\n\n```\nproperty-management/\n├── cmd/api/main.go                    # Application entry point\n├── internal/\n│   ├── shared/                        # Shared kernel\n│   │   ├── domain/                    # Shared domain concepts\n│   │   ├── infrastructure/            # Shared infrastructure\n│   │   └── application/               # Shared application layer\n│   ├── domains/                       # Business domains\n│   │   ├── identity/                  # Identity \u0026 Access\n│   │   ├── property/                  # Property Management\n│   │   ├── tenant/                    # Tenant Management\n│   │   ├── leasing/                   # Lease Management\n│   │   ├── financial/                 # Financial Management\n│   │   ├── maintenance/               # Maintenance Management\n│   │   └── document/                  # Document Management\n│   └── interfaces/                    # External interfaces\n└── pkg/                              # Public packages\n```\n\nEach domain follows the same structure:\n```\ndomain/\n├── domain/                           # Domain layer\n│   ├── entities/                     # Domain entities\n│   ├── valueobjects/                 # Value objects\n│   ├── events/                       # Domain events\n│   ├── repositories/                 # Repository interfaces\n│   └── services/                     # Domain services\n├── application/                      # Application layer\n│   ├── commands/                     # Command objects\n│   ├── queries/                      # Query objects\n│   └── handlers/                     # Command/Query handlers\n├── infrastructure/                   # Infrastructure layer\n│   └── repositories/                 # Repository implementations\n└── interfaces/                       # Interface layer\n    └── http/                         # HTTP handlers\n```\n\n## Setup Instructions\n\n1. **Clone and setup**:\n```bash\ngit clone \u003crepository-url\u003e\ncd property-management\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n2. **Install dependencies**:\n```bash\nmake deps\n```\n\n3. **Set up database**:\n```bash\n# Create PostgreSQL database\ncreatedb property_management\n```\n\n4. **Configure Google OAuth**:\n- Create OAuth credentials in Google Cloud Console\n- Add credentials to .env file\n\n5. **Run the application**:\n```bash\nmake run\n# or\nmake build \u0026\u0026 ./bin/property-management\n```\n\n## API Documentation\n\n### Domain APIs\n\n#### Identity Domain\n- `GET /api/auth/login` - Get Google OAuth URL\n- `GET /api/auth/callback` - Handle OAuth callback\n- `GET /api/me` - Get current user\n\n#### Property Domain\n- `POST /api/properties` - Create property\n- `GET /api/properties` - List properties\n- `POST /api/properties/:id/units` - Add unit\n\n#### Tenant Domain\n- `POST /api/tenants` - Create tenant\n- `GET /api/tenants` - List tenants\n\n#### Leasing Domain\n- `POST /api/leases` - Create lease\n- `GET /api/leases` - List leases\n\n#### Financial Domain\n- `POST /api/payments` - Record payment\n- `GET /api/payments` - List payments\n- `POST /api/expenses` - Record expense\n\n## Development Commands\n\n```bash\nmake build        # Build application\nmake run          # Run application  \nmake test         # Run tests\nmake test-coverage # Run tests with coverage\nmake fmt          # Format code\nmake lint         # Lint code\nmake clean        # Clean build artifacts\n```\n\n## Domain Events Flow\n\nExample: When a lease is signed\n```\n1. Leasing Domain → LeaseSignedEvent\n2. Financial Domain → Generates payment schedule\n3. Property Domain → Marks unit as occupied\n4. Document Domain → Creates lease document record\n```\n\n## Testing Strategy\n\n- **Unit Tests**: Test individual domain entities and value objects\n- **Integration Tests**: Test repository implementations\n- **Application Tests**: Test command/query handlers\n- **API Tests**: Test HTTP endpoints\n\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Follow DDD principles\n4. Write tests for new domains/features\n5. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc-kiplimo%2Fproperty-management-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fc-kiplimo%2Fproperty-management-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc-kiplimo%2Fproperty-management-system/lists"}