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
Login Problems

Can't access your account? Check your credentials and contact support if needed.

Permission Errors

Access denied messages typically indicate insufficient permissions for the requested action.

Slow Performance

Clear your browser cache or try a different browser if the system is running slowly.

Best Practices
Regular Updates

Keep tasks and milestones updated to maintain accurate progress tracking.

Document Everything

Use comments and attachments to maintain detailed records of decisions and changes.

Backup Important Data

Regularly export important reports and data for backup purposes.

System Status
? All Systems Operational
? Database: Online
? API: Operational
? Support: Available

Last updated: Nov 04, 2025 15:56
Need Help?

Our support team is here to help:

support@gats.gov.vg

+1 (284) 394-1234

Mon-Fri: 8AM-5PM AST

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 active
  • AgencyAccess - Restricts access by user's agency
  • CrossAgency - Allows cross-agency access for specific roles
  • ProgramTaskAccess - 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
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"
  ]
}