# PostFundManagement (PFM) Platform An enterprise system designed to manage the entire post-funding grant and project lifecycle. PFM provides end-to-end oversight across strategic portfolios, programme allocation, project execution tracking, financial disbursements, monitoring & evaluation (M&E), and candidate notifications. --- ## 🏛️ System Architecture & Domain Model The application follows a modular, hierarchical architecture where high-level funding directives cascade into measurable project outcomes and evidence verification. [Portfolios] ───> [Programmes] ───> [Projects] ───> [Awards] ───> [Contracts] ───> [Beneficiaries] ──> [Outcomes] │ │ │ ▼ │ ▼ [Rules] ├─> [Milestones] ──> [Activities] ──> [Evidences] ├─> [Disbursements] ├─> [Indicators] ├─> [Risks] & [Issues] └─> [SiteVisits] & [ComplianceItems] ### **1. Portfolio & Programme Governance** * **Portfolios**: Top-level containers for strategic investment themes. * **Programmes**: Direct implementation vehicles linked to specific financial instruments (`Instruments`) and operational guidelines (`Rules`). ### **2. Project Execution & Monitoring** * **Projects**: Central operational units categorized by `IndustrySector` and `ProjectType`. * **Milestones & Activities**: Project progress is tracked through structured milestones. Project Managers author `Activities` against specific milestones to log ground work. * **Risks, Issues & Compliance**: Managed via dedicated tracking logs (`Risks`, `Issues`, `ComplianceItems`, `ChangeRequests`) to maintain project integrity. ### **3. Grants, Contracting & Disbursements** * **Awards & Contracts**: Binding grant agreements signed with target `Organisations`. * **Beneficiaries & Outcomes**: Social and economic impact measurement down to individual beneficiary groups. * **Disbursements**: Milestone-gated tranche releases tied to approved evidence and verification audits. ### **4. Monitoring, Evaluation & Evidence (M&E)** * **Indicators**: KPI baseline, target, and actual metrics tracking. * **Evidences**: Verifiable artifacts (`EvidenceType`) uploaded alongside activities, indicators, or milestones. * **Site Visits**: Independent audit logs (`SiteVisits`) submitted by field inspectors. ### **5. Notifications & Platform Services** * Multi-channel delivery engine (`NotificationPlatform`) tracking candidate invitations, reminders, and status updates (`NotificationStatus`) across Email, SMS, WhatsApp, In-App, and Webhooks. --- ## 🧩 Key System Enums | Enum | Scope | Purpose | | :--- | :--- | :--- | | `IndustrySector` | Project Domain | Standardizes reporting across sectors (e.g., ICT, Agriculture, Manufacturing). | | `ProjectType` | Project Domain | Classifies project scope (e.g., R&D, Infrastructure, Capacity Building). | | `EvidenceType` | M&E / Verification | Categorizes uploaded proof (e.g., Attendance Register, Geotagged Photo, Bank Statement). | | `NotificationPlatform` | System / Comms | Outlines dispatch channels (Email, SMS, WhatsApp, Push, Webhooks). | | `NotificationStatus` | System / Comms | Tracks communication lifecycle (Pending, Queued, Sent, Delivered, Failed). | --- ## 🛠️ Tech Stack & Patterns * **Backend Framework**: .NET 8 / 9 C# Web API * **Database**: PostgreSQL * **ORM**: Entity Framework Core (Fluent API Configuration) * **Architecture**: Clean Architecture / Domain-Driven Design (DDD) with CQRS (`MediatR`) * **Utilities**: `Humanizer` (Automated entity-to-table pluralization) --- ## 📁 Solution Structure ```text src/ ├── PostFundManagement.Domain/ # Core Domain Entities, Enums & Interfaces ├── PostFundManagement.Infrastructure/ # EF Core Configurations, DbContext, Migrations ├── PostFundManagement.Application/ # CQRS Handlers, DTOs, Business Rules & Logic └── PostFundManagement.Api/ # REST Controllers, Middleware, Auth & Swagger ``` ## 🚀 Getting Started ### Prerequisites .NET 8.0 SDK or higher PostgreSQL 14+ dotnet-ef CLI Tool (dotnet tool install --global dotnet-ef) ## Setup & Execution ## Clone Repository 1. Clone Repository: ```bash git clone [https://github.com/your-org/PostFundManagement.git](https://github.com/your-org/PostFundManagement.git) cd PostFundManagement ``` 2. Configure Database Connection: Update appsettings.Development.json in the API project with your local PostgreSQL details: ```json { "ConnectionStrings": { "DefaultConnection": "Host=localhost;Database=pfm_db;Username=postgres;Password=your_password" } } ``` 3. Apply Database Migrations: ```bash dotnet ef database update --project src/PostFundManagement.Infrastructure ``` 4. Launch Application: ```bash dotnet run --project src/PostFundManagement.Api ``` ## 📄 License Internal Proprietary Software — All rights reserved.