# taheem-a/personal-university-planner architecture

> Architecture diagram of the GitHub repository taheem-a/personal-university-planner, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/taheem-a/personal-university-planner
- Repository: https://github.com/taheem-a/personal-university-planner

## Overview

This is a production university-planning application: users manage academic data and availability, then use planning capabilities to organize upcoming work. The visible API routes delegate to application services; the README identifies the deterministic planner, domain contracts, integrations, assistant, and analytics packages as major product capabilities. Source excerpts confirm selected route-to-service calls and database construction, but not the internal service-to-repository or planner wiring, so those links are omitted. The UI and several product subsystems are represented from the repository map rather than sampled implementation.

Main entry points: [`apps/web/src/server/transport.ts`](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/transport.ts) (HTTP transport), [`apps/web/src/app/api/v1/terms/route.ts`](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/terms/route.ts) (Terms API), [`apps/web/src/app/api/v1/tasks/route.ts`](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/tasks/route.ts) (Tasks API), [`apps/web/src/app/api/v1/availability/route.ts`](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/availability/route.ts) (Availability API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_webapp["Web application<br/>[page.tsx]"]
  node_authroute["Authentication route<br/>[route.ts]"]
  node_accountstatus["Account status API<br/>[route.ts]"]
  node_termsapi["Terms API<br/>[route.ts]"]
  node_tasksapi["Tasks API<br/>[route.ts]"]
  node_availabilityapi["Availability API<br/>[route.ts]"]
  node_coursesapi["Courses API<br/>[route.ts]"]
  node_exportapi["Account export API<br/>[route.ts]"]
end

subgraph group_application["Application services"]
  node_transport["HTTP transport<br/>[transport.ts]"]
  node_academic["Academic services<br/>[academic.ts]"]
  node_schedule["Schedule services<br/>[schedule.ts]"]
  node_lifecycle["Account lifecycle<br/>[lifecycle.ts]"]
  node_auth["Authentication<br/>[auth.ts]"]
end

subgraph group_planning["Planning capabilities"]
  node_planner["Planning engine<br/>[index.ts]"]
  node_domain["Domain vocabulary<br/>[index.ts]"]
  node_assistant["Assistant intents<br/>[index.ts]"]
  node_integrations["Provider contracts<br/>[index.ts]"]
  node_analytics["Estimate learning<br/>[index.ts]"]
end

subgraph group_persistence["Persistence"]
  node_database["Database boundary<br/>[client.ts]"]
  node_repositories["Data repositories<br/>[index.ts]"]
end

node_user(("Planner user"))
node_postgres[("PostgreSQL")]

node_user -->|"uses"| node_webapp
node_user -->|"manages terms"| node_termsapi
node_user -->|"manages tasks"| node_tasksapi
node_user -->|"sets availability"| node_availabilityapi
node_user -->|"views courses"| node_coursesapi
node_user -->|"authenticates"| node_authroute
node_user -->|"requests export"| node_exportapi
node_termsapi -->|"calls"| node_academic
node_termsapi -->|"formats response"| node_transport
node_tasksapi -->|"calls"| node_academic
node_tasksapi -->|"formats response"| node_transport
node_availabilityapi -->|"calls"| node_schedule
node_availabilityapi -->|"formats response"| node_transport
node_exportapi -->|"calls"| node_lifecycle
node_exportapi -->|"formats response"| node_transport
node_accountstatus -->|"checks actor"| node_auth
node_authroute -->|"loads options"| node_auth
node_database -->|"creates"| node_repositories
node_database -->|"connects"| node_postgres

click node_webapp "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/page.tsx"
click node_authroute "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/auth/%5B...nextauth%5D/route.ts"
click node_accountstatus "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/account/status/route.ts"
click node_termsapi "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/terms/route.ts"
click node_tasksapi "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/tasks/route.ts"
click node_availabilityapi "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/availability/route.ts"
click node_coursesapi "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/courses/route.ts"
click node_exportapi "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/account/export/route.ts"
click node_transport "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/transport.ts"
click node_academic "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/application/academic.ts"
click node_schedule "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/application/schedule.ts"
click node_lifecycle "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/application/lifecycle.ts"
click node_auth "https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/auth.ts"
click node_planner "https://github.com/taheem-a/personal-university-planner/blob/master/packages/planner-core/src/index.ts"
click node_domain "https://github.com/taheem-a/personal-university-planner/blob/master/packages/domain/src/index.ts"
click node_assistant "https://github.com/taheem-a/personal-university-planner/blob/master/packages/assistant/src/index.ts"
click node_integrations "https://github.com/taheem-a/personal-university-planner/blob/master/packages/integrations/src/index.ts"
click node_analytics "https://github.com/taheem-a/personal-university-planner/blob/master/packages/analytics/src/index.ts"
click node_database "https://github.com/taheem-a/personal-university-planner/blob/master/packages/database/src/client.ts"
click node_repositories "https://github.com/taheem-a/personal-university-planner/blob/master/packages/database/src/repositories/index.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webapp,node_authroute,node_accountstatus,node_termsapi,node_tasksapi,node_availabilityapi,node_coursesapi,node_exportapi,node_user toneBlue
class node_transport,node_academic,node_schedule,node_lifecycle,node_auth,node_postgres toneAmber
class node_planner,node_domain,node_assistant,node_integrations,node_analytics toneMint
class node_database,node_repositories toneRose
```

## Components

### Web application

- [Web application](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/page.tsx): `apps/web/src/app/page.tsx`
- [Authentication route](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/auth/%5B...nextauth%5D/route.ts): `apps/web/src/app/api/auth/[...nextauth]/route.ts`
- [Account status API](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/account/status/route.ts): `apps/web/src/app/api/account/status/route.ts`
- [Terms API](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/terms/route.ts): `apps/web/src/app/api/v1/terms/route.ts`
- [Tasks API](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/tasks/route.ts): `apps/web/src/app/api/v1/tasks/route.ts`
- [Availability API](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/availability/route.ts): `apps/web/src/app/api/v1/availability/route.ts`
- [Courses API](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/courses/route.ts): `apps/web/src/app/api/v1/courses/route.ts`
- [Account export API](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/app/api/v1/account/export/route.ts): `apps/web/src/app/api/v1/account/export/route.ts`

### Application services

- [HTTP transport](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/transport.ts): `apps/web/src/server/transport.ts`
- [Academic services](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/application/academic.ts): `apps/web/src/server/application/academic.ts`
- [Schedule services](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/application/schedule.ts): `apps/web/src/server/application/schedule.ts`
- [Account lifecycle](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/application/lifecycle.ts): `apps/web/src/server/application/lifecycle.ts`
- [Authentication](https://github.com/taheem-a/personal-university-planner/blob/master/apps/web/src/server/auth.ts): `apps/web/src/server/auth.ts`

### Planning capabilities

- [Planning engine](https://github.com/taheem-a/personal-university-planner/blob/master/packages/planner-core/src/index.ts): `packages/planner-core/src/index.ts`
- [Domain vocabulary](https://github.com/taheem-a/personal-university-planner/blob/master/packages/domain/src/index.ts): `packages/domain/src/index.ts`
- [Assistant intents](https://github.com/taheem-a/personal-university-planner/blob/master/packages/assistant/src/index.ts): `packages/assistant/src/index.ts`
- [Provider contracts](https://github.com/taheem-a/personal-university-planner/blob/master/packages/integrations/src/index.ts): `packages/integrations/src/index.ts`
- [Estimate learning](https://github.com/taheem-a/personal-university-planner/blob/master/packages/analytics/src/index.ts): `packages/analytics/src/index.ts`

### Persistence

- [Database boundary](https://github.com/taheem-a/personal-university-planner/blob/master/packages/database/src/client.ts): `packages/database/src/client.ts`
- [Data repositories](https://github.com/taheem-a/personal-university-planner/blob/master/packages/database/src/repositories/index.ts): `packages/database/src/repositories/index.ts`

### Other components

- **Planner user**
- **PostgreSQL**

## Connections

- Planner user → Web application: uses
- Planner user → Terms API: manages terms
- Planner user → Tasks API: manages tasks
- Planner user → Availability API: sets availability
- Planner user → Courses API: views courses
- Planner user → Authentication route: authenticates
- Planner user → Account export API: requests export
- Terms API → Academic services: calls
- Terms API → HTTP transport: formats response
- Tasks API → Academic services: calls
- Tasks API → HTTP transport: formats response
- Availability API → Schedule services: calls
- Availability API → HTTP transport: formats response
- Account export API → Account lifecycle: calls
- Account export API → HTTP transport: formats response
- Account status API → Authentication: checks actor
- Authentication route → Authentication: loads options
- Database boundary → Data repositories: creates
- Database boundary → PostgreSQL: connects
