Technical Documentation

WIN Student Goal Tracker Architecture and Implementation

System Overview

The WIN Student Goal Tracker is a containerized web application designed to allow teachers and program staff to track student progress, goals, benchmarks, and events. The system follows a modern multi-tier architecture separating the frontend interface, backend services, and database layer.

System Architecture

The system architecture is organized into four main components:

Browser
   │
   ▼
Angular Frontend
   │
   ▼
Traefik Reverse Proxy
   │
   ▼
.NET Core API
   │
   ▼
MySQL Database

Technology Stack

Layer Technology Purpose
Frontend Angular 20 User interface and client-side logic
Backend .NET Core 9.0 (C#) Business logic and REST APIs
ORM Dapper Lightweight database access
Authentication JWT + Refresh Tokens Secure user authentication
Database MySQL Persistent data storage
Infrastructure Docker Containers Application deployment
Reverse Proxy Traefik Routing and SSL certificate management

Authentication

The application uses JSON Web Tokens (JWT) for authentication. After login, the server generates a JWT token which is used to authenticate subsequent API requests.

Database Design

The MySQL database stores the application data for students and progress tracking.

The backend uses Dapper ORM to execute SQL queries and map results to application objects.

Infrastructure

The system is deployed using Docker containers on a Virtual Private Server (VPS). Each component runs in its own container to maintain separation and scalability.

Container Function
Angular Frontend application
.NET Core API Backend services
MySQL Database server
Traefik Reverse proxy and SSL manager

Deployment

The application is deployed using Docker containers orchestrated on a VPS. Traefik automatically handles HTTPS certificates and routes traffic to the appropriate container.

User Browser
   │
   ▼
Traefik Reverse Proxy
   │
   ├── Angular Container
   │
   └── .NET Core API Container
            │
            ▼
         MySQL Container
Back to Project Home