System Documentation
Comprehensive guides and technical documentation for the Government Programme Agenda Monitor (GATS).
Getting Started
Account Setup
Learn how to register, verify your account, and set up your profile.
- Registration process
 - Email verification
 - Profile configuration
 
System Navigation
Familiarize yourself with the interface and navigation features.
- Dashboard overview
 - Menu navigation
 - Quick actions
 
Core Features
Manage government programmes and initiatives effectively:
- Create and edit programmes with hierarchical structure
 - Set objectives, timelines, and success metrics
 - Track progress and milestones with visual indicators
 - Manage budgets, resources, and stakeholder assignments
 - Generate comprehensive progress and performance reports
 
Organize and track tasks within initiatives:
- Create and assign tasks with detailed descriptions
 - Set priorities, deadlines, and dependencies
 - Monitor task progress with real-time updates
 - Add comments, attachments, and collaboration notes
 - Use Kanban boards and Gantt chart views
 - Track time and effort estimation
 
Generate insights and track performance:
- Real-time dashboards with live metrics
 - Interactive progress tracking charts
 - Export reports in PDF and Excel formats
 - Performance analytics and trend analysis
 - Milestone trend analysis and forecasting
 - Custom report templates and scheduling
 
Manage users and permissions:
- Role-based access control (Admin, Manager, Reviewer, Auditor)
 - Agency-based data isolation and security
 - User registration approval workflows
 - Department and team assignments
 - Activity monitoring and audit trails
 - Notification management and preferences
 
Troubleshooting
Common Issues
Can't access your account? Check your credentials and contact support if needed.
Access denied messages typically indicate insufficient permissions for the requested action.
Clear your browser cache or try a different browser if the system is running slowly.
Best Practices
Keep tasks and milestones updated to maintain accurate progress tracking.
Use comments and attachments to maintain detailed records of decisions and changes.
Regularly export important reports and data for backup purposes.
Quick Actions
System Status
Last updated: Nov 04, 2025 15:56
Need Help?
System Architecture
GATS follows Clean Architecture principles with clear separation of concerns:
Architecture Layers
- Domain Layer - Core business entities and rules
 - Application Layer - Use cases and business logic (CQRS)
 - Infrastructure Layer - External services and integrations
 - Persistence Layer - Data access with Entity Framework Core
 - Presentation Layer - Web UI and API endpoints
 
Technology Stack
- .NET 9.0 - Core framework
 - ASP.NET Core - Web framework
 - Entity Framework Core - ORM
 - MediatR - CQRS implementation
 - SignalR - Real-time updates
 - .NET MAUI - Mobile application
 
Security & Authorization
Authorization Policies
IsActive- Ensures user account is activeAgencyAccess- Restricts access by user's agencyCrossAgency- Allows cross-agency access for specific rolesProgramTaskAccess- Controls programme/task access
User Roles
- Administrator - Full system access
 - Manager - Programme management
 - Reviewer - Review and approval
 - Auditor - Read-only audit access
 
Database Schema
The system uses SQL Server with Entity Framework Core Code-First approach:
Core Entities
- Programmes - Government programmes and metadata
 - Initiatives - Specific initiatives within programmes
 - Milestones - Key milestones for initiatives
 - Tasks - Individual tasks within milestones
 - Users - System users with roles
 - Agencies - Government departments
 
Supporting Tables
- AuditLogs - System activity tracking
 - Notifications - User notifications
 - TaskAttachments - File attachments
 - TaskComments - Task collaboration
 - TaskDependencies - Task relationships
 - ReviewerAssignments - Review workflows
 
Development Environment Setup
Prerequisites
- .NET 9.0 SDK
 - Visual Studio 2022 or VS Code
 - SQL Server or LocalDB
 - Git
 
Getting Started
# Clone the repository
git clone <repository-url>
cd government-programme-agenda-monitor
# Restore dependencies
dotnet restore
# Update database
cd Programme.WebUi
dotnet ef database update
# Run the application
dotnet run --project Programme.WebUi
                            Code Structure & Patterns
CQRS Implementation
Commands and Queries are separated using MediatR:
                                            // Command
                                            public class CreateTaskCommand : IRequest<TaskResult>
                                            {
                                                public string Name { get; set; }
                                            }
                                            // Handler
                                            public class CreateTaskHandler : IRequestHandler<CreateTaskCommand, TaskResult>
                                        
                                    Repository Pattern
Data access is abstracted through repositories:
                                            public interface ITaskRepository
                                            {
                                                Task<Domain.Entities.Task> GetByIdAsync(Guid id);
                                                Task AddAsync(Domain.Entities.Task task);
                                            }
                                        
                                    Database Migrations
Common Migration Commands
# Add new migration
dotnet ef migrations add MigrationName --project Programme.Persistence --startup-project Programme.WebUi
# Update database
dotnet ef database update --project Programme.WebUi
# Remove last migration
dotnet ef migrations remove --project Programme.Persistence --startup-project Programme.WebUi
# Generate SQL script
dotnet ef migrations script --project Programme.Persistence --startup-project Programme.WebUi
                            API Endpoints
The system provides RESTful APIs for mobile and external integrations.
Authentication
All API endpoints require authentication using Bearer tokens.
Programme Endpoints
| Method | Endpoint | Description | 
|---|---|---|
| GET | /api/programmes | 
                                                    Get all programmes | 
| POST | /api/programmes | 
                                                    Create programme | 
| GET | /api/programmes/{id} | 
                                                    Get specific programme | 
| PUT | /api/programmes/{id} | 
                                                    Update programme | 
Task Endpoints
| Method | Endpoint | Description | 
|---|---|---|
| GET | /api/tasks | 
                                                    Get all tasks | 
| POST | /api/tasks | 
                                                    Create task | 
| GET | /api/tasks/{id} | 
                                                    Get specific task | 
| PUT | /api/tasks/{id} | 
                                                    Update task | 
Response Format
All API responses follow a consistent structure:
{
  "success": true,
  "data": { ... },
  "message": "Operation completed successfully",
  "errors": []
}
                            Error Response
{
  "success": false,
  "data": null,
  "message": "Operation failed",
  "errors": [
    "Validation error message",
    "Another error message"
  ]
}