diff --git a/Documentation/Architecture.drawio b/Documentation/Architecture.drawio new file mode 100644 index 0000000..62041c7 --- /dev/null +++ b/Documentation/Architecture.drawio @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Architecture.md b/Documentation/Architecture.md similarity index 97% rename from Architecture.md rename to Documentation/Architecture.md index d36fcd0..70bb73d 100644 --- a/Architecture.md +++ b/Documentation/Architecture.md @@ -2,7 +2,8 @@ > **Document Version**: 2.0 > **Target Runtimes**: .NET 10.0 (C# 13) | React 19 / TypeScript 5.8 / Vite -> **Scope**: System Architecture, Security Topology, RBAC Enforcement, and Maker-Checker Pattern +> **Scope**: System Architecture, Security Topology, RBAC Enforcement, and Maker-Checker Pattern +> **Technology Partner & Technical Authorship**: **Lite Charms (PTY) Ltd** is the official technology partner and author of every technical implementation, architecture, and maintenance of the Post-Fund Management (PFM) Platform. **Ifri Technologies** is an initiative and entity within **Lite Charms (PTY) Ltd**. --- @@ -328,7 +329,7 @@ The background job runner powers four essential operational workloads: The PFM platform integrates the **Model Context Protocol (MCP)** standard (v2.3.0) to expose domain capabilities both internally and externally while preventing token exhaustion and eliminating network call overhead: 1. **Dual Realisation Pattern**: - * **In-App MCP (`PostFundManagement.Api`)**: Internal features, handlers, and workflows obtain in-process access to MCP tooling via `IInAppMcpClient`. Calls are executed directly against scoped services with zero network latency, zero serialization overhead, and no external web requests. + * **In-App MCP (`PostFundManagement.Api` & `PostFundManagement.Jobs`)**: Internal features, background jobs, and workflows obtain in-process access to MCP tooling via `IInAppMcpClient`. Calls are executed directly against scoped services with zero network latency, zero serialization overhead, and no external web requests. * **External MCP Server (`PostFundManagement.Mcp`)**: A dedicated standalone presentation host exposes the exact same tools over standard external transports (HTTP/SSE at `/mcp` and command-line Stdio via `--stdio`) for external LLMs, agentic workbenches, and client IDEs. 2. **Application.Services Proxying Pattern**: diff --git a/Documentation/ERD.erd b/Documentation/ERD.erd new file mode 100644 index 0000000..368eb8e --- /dev/null +++ b/Documentation/ERD.erd @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Documentation/HIGH-LEVEL SYSTEM REQUIREMENTS SPECIFICATION.pdf b/Documentation/HIGH-LEVEL SYSTEM REQUIREMENTS SPECIFICATION.pdf new file mode 100644 index 0000000..55650cf Binary files /dev/null and b/Documentation/HIGH-LEVEL SYSTEM REQUIREMENTS SPECIFICATION.pdf differ diff --git a/Marketing/1.jpeg b/Documentation/Marketing/1.jpeg similarity index 100% rename from Marketing/1.jpeg rename to Documentation/Marketing/1.jpeg diff --git a/Marketing/2.jpeg b/Documentation/Marketing/2.jpeg similarity index 100% rename from Marketing/2.jpeg rename to Documentation/Marketing/2.jpeg diff --git a/Marketing/3.jpeg b/Documentation/Marketing/3.jpeg similarity index 100% rename from Marketing/3.jpeg rename to Documentation/Marketing/3.jpeg diff --git a/Marketing/4.jpg b/Documentation/Marketing/4.jpg similarity index 100% rename from Marketing/4.jpg rename to Documentation/Marketing/4.jpg diff --git a/Marketing/5.jpg b/Documentation/Marketing/5.jpg similarity index 100% rename from Marketing/5.jpg rename to Documentation/Marketing/5.jpg diff --git a/Marketing/6.jpeg b/Documentation/Marketing/6.jpeg similarity index 100% rename from Marketing/6.jpeg rename to Documentation/Marketing/6.jpeg diff --git a/Marketing/PFM Platform Marketing Posters (6-Page Campaign Deck).pdf b/Documentation/Marketing/PFM Platform Marketing Posters (6-Page Campaign Deck).pdf similarity index 100% rename from Marketing/PFM Platform Marketing Posters (6-Page Campaign Deck).pdf rename to Documentation/Marketing/PFM Platform Marketing Posters (6-Page Campaign Deck).pdf diff --git a/Documentation/PFM_SRS_v2_review.pdf b/Documentation/PFM_SRS_v2_review.pdf new file mode 100644 index 0000000..0b5ec96 Binary files /dev/null and b/Documentation/PFM_SRS_v2_review.pdf differ diff --git a/Documentation/PostFundManagement_SaaS_Manual.pdf b/Documentation/PostFundManagement_SaaS_Manual.pdf new file mode 100644 index 0000000..3d913a3 Binary files /dev/null and b/Documentation/PostFundManagement_SaaS_Manual.pdf differ diff --git a/Processes.md b/Documentation/Processes.md similarity index 98% rename from Processes.md rename to Documentation/Processes.md index 856c03c..3f83e8f 100644 --- a/Processes.md +++ b/Documentation/Processes.md @@ -1,6 +1,6 @@ # PostFundManagement (PFM) Platform — Operational Processes & Governance (Processes.md) -> **Document Context**: Authoritative operational manual and process specification for the PFM Platform. Derived from the PFM SRS v2.0 and governing all lifecycle transitions, workflow gates, RBAC controls, and Maker-Checker segregation of duties. +> **Document Context**: Authoritative operational manual and process specification for the PFM Platform. Derived from the PFM SRS v2.0 and governed by **Lite Charms (PTY) Ltd** (official technology partner and author of every technical implementation, architecture, and maintenance of the system, with **Ifri Technologies** operating within Lite Charms (PTY) Ltd). --- diff --git a/Screenshots/1.png b/Documentation/Screenshots/1.png similarity index 100% rename from Screenshots/1.png rename to Documentation/Screenshots/1.png diff --git a/Screenshots/10.png b/Documentation/Screenshots/10.png similarity index 100% rename from Screenshots/10.png rename to Documentation/Screenshots/10.png diff --git a/Screenshots/2.png b/Documentation/Screenshots/2.png similarity index 100% rename from Screenshots/2.png rename to Documentation/Screenshots/2.png diff --git a/Screenshots/3.png b/Documentation/Screenshots/3.png similarity index 100% rename from Screenshots/3.png rename to Documentation/Screenshots/3.png diff --git a/Screenshots/4.png b/Documentation/Screenshots/4.png similarity index 100% rename from Screenshots/4.png rename to Documentation/Screenshots/4.png diff --git a/Screenshots/6.png b/Documentation/Screenshots/6.png similarity index 100% rename from Screenshots/6.png rename to Documentation/Screenshots/6.png diff --git a/Screenshots/7.png b/Documentation/Screenshots/7.png similarity index 100% rename from Screenshots/7.png rename to Documentation/Screenshots/7.png diff --git a/Screenshots/8.png b/Documentation/Screenshots/8.png similarity index 100% rename from Screenshots/8.png rename to Documentation/Screenshots/8.png diff --git a/Screenshots/9.png b/Documentation/Screenshots/9.png similarity index 100% rename from Screenshots/9.png rename to Documentation/Screenshots/9.png diff --git a/Screenshots/console.png b/Documentation/Screenshots/console.png similarity index 100% rename from Screenshots/console.png rename to Documentation/Screenshots/console.png diff --git a/Screenshots/partner.png b/Documentation/Screenshots/partner.png similarity index 100% rename from Screenshots/partner.png rename to Documentation/Screenshots/partner.png diff --git a/GEMINI.md b/GEMINI.md index 275a740..92b4417 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -2,6 +2,8 @@ > **Document Context**: This document serves as the primary system specification, technical architectural guide, and development roadmap for the **Post-Fund Management, Performance & Impact Management Platform (PFM)**. It is directly derived from the **PFM System Requirements Specification (SRS) v2.0** (authored by S. Phiri, 13 August 2026) and reflects the actual technical implementation and project layout in this repository. > +> **Technology Partner & Technical Authorship**: **Lite Charms (PTY) Ltd** is the official technology partner and author of every technical implementation, system architecture, and maintenance of the Post-Fund Management (PFM) Platform. **Ifri Technologies** is an initiative and entity within **Lite Charms (PTY) Ltd**. +> > **Role for Gemini / Antigravity**: Use this file as your authoritative blueprint when extending, debugging, testing, or implementing any features, endpoints, domain models, or UI components across the PFM solution. --- @@ -194,8 +196,8 @@ The platform establishes a dual-channel Model Context Protocol (MCP) architectur * `CommunicationsMcpTools`: Proxies `ICommunicationsService` (Notifications M25, Onboarding Invites M03). * `UsersMcpTools`: Proxies `IUserService` (Identity accounts, RBAC roles, security claims). -2. **In-App MCP Consumer in `PostFundManagement.Api` (Zero Web Hops)**: - - `PostFundManagement.Api` accesses tools in-process via `IInAppMcpClient` registered by `AddApplicationMcpTools()`. +2. **In-App MCP Consumer in `PostFundManagement.Api` & `PostFundManagement.Jobs` (Zero Web Hops)**: + - Both `PostFundManagement.Api` and `PostFundManagement.Jobs` access tools in-process via `IInAppMcpClient` registered by `AddApplicationMcpTools()`. - Resolves and executes tool methods directly against scoped domain services without issuing HTTP network calls to an external MCP server. - Provides optional in-process protocol compatibility via `CreateProtocolClientAsync()` using duplex in-memory streams. - *Design Boundary*: No autonomous AI agents are defined in the solution at this time; the tooling layer and in-app consumer interfaces provide the underlying foundation for future agentic orchestration. diff --git a/LICENSE b/LICENSE index ad0fbfd..649382d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,13 +1,17 @@ PROPRIETARY LICENSE -Copyright (c) 2026 IFRI TECHNOLOGIES (PTY) Ltd. All rights reserved. +Copyright (c) 2026 Lite Charms (PTY) Ltd / Ifri Technologies. All rights reserved. -This software and its associated documentation (the "Software") are the -proprietary property of IFRI TECHNOLOGIES (PTY) Ltd. +This software and its associated documentation (the "Software") are the proprietary +property of Lite Charms (PTY) Ltd. -The Software is provided for internal use only. Unauthorized copying, -distribution, modification, or use of this file via any medium is -strictly prohibited. +Ifri Technologies is an entity within Lite Charms (PTY) Ltd. +Lite Charms (PTY) Ltd is the technology partner and author of every technical +implementation and maintenance of the system. + +The Software is provided for internal and authorized partner use only. +Unauthorized copying, distribution, modification, reverse engineering, +or use of this file via any medium is strictly prohibited. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, diff --git a/PostFundManagement.Jobs/Program.cs b/PostFundManagement.Jobs/Program.cs index c49ab71..5879abc 100644 --- a/PostFundManagement.Jobs/Program.cs +++ b/PostFundManagement.Jobs/Program.cs @@ -11,6 +11,7 @@ builder.Services.AddFeatureManagement(); builder.Services.AddSharedServices(); builder.Services.AddHostedService(); builder.Services.AddRegisterServicesWithCaching(builder.Configuration); +builder.Services.AddApplicationMcpTools(); builder.Services.AddEndpointAndServiceCaching(builder.Configuration); builder.Services.AddTransient(); builder.Services.AddSkorubaApiService(builder.Configuration); diff --git a/README.md b/README.md index eb30eb8..26d82ac 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ 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. +> **Technology Partner & Technical Authorship**: **Lite Charms (PTY) Ltd** is the official technology partner and author of every technical implementation, system architecture, and maintenance of the Post-Fund Management (PFM) Platform. **Ifri Technologies** is an initiative and entity within **Lite Charms (PTY) Ltd**. + --- ## 🏛️ System Architecture & Domain Model @@ -43,7 +45,7 @@ The application follows a modular, hierarchical architecture where high-level fu ### **6. Model Context Protocol (MCP) — In-App & External Tooling** * **Central Tool Definitions (`PostFundManagement.Application/Mcp`)**: Tools proxy core domain services organized by business domain (`Grants`, `Projects`, `Execution`, `Governance`, `Evidence`, `Communications`, `Users`). -* **In-App MCP (`PostFundManagement.Api`)**: The API has direct in-process access to tooling via `IInAppMcpClient` without making external web or HTTP calls. +* **In-App MCP (`PostFundManagement.Api` & `PostFundManagement.Jobs`)**: Both the API and Jobs background worker hosts have direct in-process access to tooling via `IInAppMcpClient` without making external web or HTTP calls. * **External MCP Server (`PostFundManagement.Mcp`)**: Dedicated .NET 10 host serving MCP tools over HTTP/SSE (`/mcp`) and Stdio (`--stdio`) for external agents, Claude Desktop, and IDEs. * **Token Optimization**: Standardized `McpToolResult` models minimize prompt token overhead. * **Agent Status**: Tooling infrastructure is established; agent definitions are deferred to future milestones. @@ -78,6 +80,7 @@ The application follows a modular, hierarchical architecture where high-level fu * **Frontend Portals**: * `PostFundManagement.ConsoleUI`: Internal Staff & Portfolio Administration Portal (React 19 + TypeScript + Vite + Tailwind CSS) * `PostFundManagement.PartnerUI`: External Recipient & Grantee Portal (React 19 + TypeScript + Vite + WebGL OGL) + * `PostFundManagement.ShowcaseUI`: Public-Facing Product & Experience Showcase Portal (React 19 + TypeScript + Vite + Tailwind CSS) * **Database**: PostgreSQL 14+ with Npgsql & EF Core 10 * **Security & Authentication**: Duende IdentityServer / OIDC PKCE + Claim-Based RBAC * **Governance Patterns**: Maker-Checker Pattern (Dual Authorization & Segregation of Duties) @@ -113,8 +116,8 @@ To eliminate conflicts of interest, record creators ("Makers") cannot approve (" $$\text{Can Approve} = \text{Has 'update' permission} \land (\text{Current User ID} \neq \text{Record Creator ID})$$ For in-depth architectural and operational specifications, see: -* [Architecture.md](file:///c:/Users/Admin/source/repos/PostFundManagement/Architecture.md) -* [Processes.md](file:///c:/Users/Admin/source/repos/PostFundManagement/Processes.md) +* [Architecture.md](file:///c:/Users/Admin/source/repos/PostFundManagement/Documentation/Architecture.md) +* [Processes.md](file:///c:/Users/Admin/source/repos/PostFundManagement/Documentation/Processes.md) * [GEMINI.md](file:///c:/Users/Admin/source/repos/PostFundManagement/GEMINI.md) --- @@ -125,14 +128,19 @@ For in-depth architectural and operational specifications, see: PostFundManagement/ ├── PostFundManagement.Domain/ # Core Domain Entities, Enums, Value Objects & Abstractions (IEvent) ├── PostFundManagement.Infrastructure/ # EF Core 10, PostgreSQL (Npgsql), Migrations, Data Protection - ├── PostFundManagement.Application/ # CQRS Handlers, Mediator, DTOs, Validations, S3, Email, Job Orchestrator - ├── PostFundManagement.Api/ # ASP.NET Core Minimal APIs / Carter, Auth (OIDC), Swagger/Scalar, Versioning + ├── PostFundManagement.Application/ # CQRS Handlers, Mediator, DTOs, Validations, S3, Email, Quartz, Mcp Tools + ├── PostFundManagement.Api/ # ASP.NET Core Minimal APIs / Carter, Auth (OIDC), Swagger/Scalar, In-App MCP Consumer + ├── PostFundManagement.Mcp/ # Dedicated Model Context Protocol (MCP) Server Host (HTTP/SSE & Stdio Transports) ├── PostFundManagement.Jobs/ # Dedicated Quartz.NET Background Worker Host (Recurring & Event-Driven Jobs) ├── PostFundManagement.Tests/ # Unit & Integration Test Suite (xUnit, Coverlet) ├── PostFundManagement.ConsoleUI/ # Internal Staff & Admin Web Portal (React 19 + Vite + Tailwind 4) ├── PostFundManagement.PartnerUI/ # External Grantee / Recipient Portal (React 19 + Vite + WebGL OGL) - ├── Architecture.md # System Architecture, Security, RBAC, Caching & Quartz Spec - ├── Processes.md # Operational Grant Lifecycle, Maker-Checker & Background Workflows + ├── PostFundManagement.ShowcaseUI/ # Public-Facing Product Experience Showcase Portal (React 19 + Vite + Tailwind 4) + ├── Documentation/ # System Architecture, Operational Manuals, Marketing & Screenshots + │ ├── Architecture.md # System Architecture, Security, RBAC, Caching, MCP & Quartz Spec + │ ├── Processes.md # Operational Grant Lifecycle, Maker-Checker & Background Workflows + │ ├── Marketing/ # Campaign Decks & Marketing Posters + │ └── Screenshots/ # Backoffice (ConsoleUI) & Partner Portal Screenshots ├── GEMINI.md # Master Technical & Architecture Roadmap (SRS v2.0 Alignment) └── docker-compose.yml # Container orchestration for API and Frontends ``` @@ -179,6 +187,9 @@ yarn install yarn dev ``` -## 📄 License +## 📄 License & Legal Notice -Internal Proprietary Software — All rights reserved. +Internal Proprietary Software — All rights reserved. +Copyright (c) 2026 **Lite Charms (PTY) Ltd** / **Ifri Technologies**. + +This software and its associated documentation are the proprietary property of **Lite Charms (PTY) Ltd**. **Ifri Technologies** is an initiative and entity within **Lite Charms (PTY) Ltd**. **Lite Charms (PTY) Ltd** is the official technology partner and author of every technical implementation, system architecture, and maintenance of the Post-Fund Management (PFM) Platform. Unauthorized copying, distribution, or modification via any medium is strictly prohibited.