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
IndustrySectorandProjectType. - Milestones & Activities: Project progress is tracked through structured milestones. Project Managers author
Activitiesagainst 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
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
- Clone Repository:
git clone [https://github.com/your-org/PostFundManagement.git](https://github.com/your-org/PostFundManagement.git)
cd PostFundManagement
- Configure Database Connection: Update appsettings.Development.json in the API project with your local PostgreSQL details:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=pfm_db;Username=postgres;Password=your_password"
}
}
- Apply Database Migrations:
dotnet ef database update --project src/PostFundManagement.Infrastructure
- Launch Application:
dotnet run --project src/PostFundManagement.Api
📄 License
Internal Proprietary Software — All rights reserved.