# miyevu/skillsphere architecture

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

- Interactive diagram: https://gitdiagram.com/miyevu/skillsphere
- Repository: https://github.com/miyevu/skillsphere

## Overview

SkillSphere is a university-focused learning and professional-development platform. Its main workflow spans account access, skill-course enrollment and progress, assignment submission, and portfolio building; lecturers can review submissions and verify portfolio work, while users can also find work through the marketplace. The tree shows the application routes and API domains, and sampled handlers confirm direct database access, session checks, and notification dispatch. Page-to-API wiring and most marketplace internals were not sampled, so those links are not inferred.

Main entry points: [`skillsphere-frontend/lib/prisma.ts`](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/prisma.ts) (Application database), [`skillsphere-frontend/lib/api-notify.ts`](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/api-notify.ts) (Notification dispatch), [`skillsphere-frontend/app/api/assignments/submissions`](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/assignments/submissions) (Assignment submissions), [`skillsphere-frontend/app/api/verification`](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/verification) (Verification decisions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_site["Application pages"]
  node_authpages["Sign-in and signup"]
end

subgraph group_learning["Learning"]
  node_learningpages["Skills and lessons"]
  node_enrollapi["Enrollment API<br/>[route.ts]"]
  node_progressapi["Lesson progress API<br/>[route.ts]"]
  node_submissionapi["Assignment submissions"]
end

subgraph group_marketplace["Marketplace"]
  node_marketpages["Marketplace pages"]
  node_marketapi["Marketplace API"]
end

subgraph group_trust["Portfolio and trust"]
  node_profileapi["Profile API<br/>[route.ts]"]
  node_portfolioapi["Portfolio API"]
  node_verificationapi["Verification decisions"]
  node_reviewapi["Project reviews<br/>[route.ts]"]
  node_badgeapi["Badges API<br/>[route.ts]"]
end

subgraph group_platform["Platform services"]
  node_authapi["Authentication API"]
  node_authlib["Session and password auth<br/>[auth.ts]"]
  node_notifyapi["Notification API"]
  node_notifylib["Notification dispatch<br/>[api-notify.ts]"]
  node_session["Session lookup<br/>[api-auth.ts]"]
  node_db[("Application database<br/>[prisma.ts]")]
end

node_user(("Student or lecturer"))

node_user -->|"uses pages"| node_site
node_user -->|"starts account"| node_authpages
node_user -->|"authenticates"| node_authapi
node_authapi -->|"hashes and signs"| node_authlib
node_authapi -->|"reads and writes users"| node_db
node_authapi -->|"alerts admins"| node_notifylib
node_user -->|"learns skills"| node_learningpages
node_user -->|"enrolls"| node_enrollapi
node_user -->|"records progress"| node_progressapi
node_user -->|"submits work"| node_submissionapi
node_submissionapi -->|"checks session"| node_session
node_submissionapi -->|"reads and writes submissions"| node_db
node_submissionapi -->|"alerts lecturers"| node_notifylib
node_user -->|"finds work"| node_marketpages
node_user -->|"uses marketplace"| node_marketapi
node_user -->|"manages profile"| node_profileapi
node_user -->|"builds portfolio"| node_portfolioapi
node_user -->|"requests review"| node_verificationapi
node_verificationapi -->|"checks role"| node_session
node_verificationapi -->|"updates review and badge"| node_db
node_verificationapi -->|"notifies student"| node_notifylib
node_user -->|"leaves review"| node_reviewapi
node_reviewapi -->|"checks session"| node_session
node_reviewapi -->|"reads and writes reviews"| node_db
node_reviewapi -->|"notifies reviewee"| node_notifylib
node_user -->|"views badges"| node_badgeapi
node_user -->|"views notifications"| node_notifyapi
node_notifyapi -->|"checks session"| node_session
node_notifyapi -->|"reads notifications"| node_db
node_notifylib -->|"creates notifications"| node_db

click node_site "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app"
click node_authpages "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/auth"
click node_authapi "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/auth"
click node_authlib "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/auth.ts"
click node_learningpages "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/skills"
click node_enrollapi "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/enrollments/route.ts"
click node_progressapi "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/lesson-progress/route.ts"
click node_submissionapi "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/assignments/submissions"
click node_marketpages "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/marketplace"
click node_marketapi "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/marketplace"
click node_profileapi "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/profile/route.ts"
click node_portfolioapi "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/portfolio"
click node_verificationapi "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/verification"
click node_reviewapi "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/reviews/route.ts"
click node_badgeapi "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/badges/route.ts"
click node_notifyapi "https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/notifications"
click node_notifylib "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/api-notify.ts"
click node_session "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/api-auth.ts"
click node_db "https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/prisma.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_site,node_authpages toneBlue
class node_learningpages,node_enrollapi,node_progressapi,node_submissionapi toneAmber
class node_marketpages,node_marketapi toneMint
class node_profileapi,node_portfolioapi,node_verificationapi,node_reviewapi,node_badgeapi toneRose
class node_authapi,node_authlib,node_notifyapi,node_notifylib,node_session,node_db,node_user toneIndigo
```

## Components

### User experience

- [Application pages](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app): `skillsphere-frontend/app`
- [Sign-in and signup](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/auth): `skillsphere-frontend/app/auth`

### Learning

- [Skills and lessons](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/skills): `skillsphere-frontend/app/skills`
- [Enrollment API](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/enrollments/route.ts): `skillsphere-frontend/app/api/enrollments/route.ts`
- [Lesson progress API](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/lesson-progress/route.ts): `skillsphere-frontend/app/api/lesson-progress/route.ts`
- [Assignment submissions](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/assignments/submissions): `skillsphere-frontend/app/api/assignments/submissions`

### Marketplace

- [Marketplace pages](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/marketplace): `skillsphere-frontend/app/marketplace`
- [Marketplace API](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/marketplace): `skillsphere-frontend/app/api/marketplace`

### Portfolio and trust

- [Profile API](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/profile/route.ts): `skillsphere-frontend/app/api/profile/route.ts`
- [Portfolio API](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/portfolio): `skillsphere-frontend/app/api/portfolio`
- [Verification decisions](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/verification): `skillsphere-frontend/app/api/verification`
- [Project reviews](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/reviews/route.ts): `skillsphere-frontend/app/api/reviews/route.ts`
- [Badges API](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/app/api/badges/route.ts): `skillsphere-frontend/app/api/badges/route.ts`

### Platform services

- [Authentication API](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/auth): `skillsphere-frontend/app/api/auth`
- [Session and password auth](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/auth.ts): `skillsphere-frontend/lib/auth.ts`
- [Notification API](https://github.com/miyevu/skillsphere/tree/main/skillsphere-frontend/app/api/notifications): `skillsphere-frontend/app/api/notifications`
- [Notification dispatch](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/api-notify.ts): `skillsphere-frontend/lib/api-notify.ts`
- [Session lookup](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/api-auth.ts): `skillsphere-frontend/lib/api-auth.ts`
- [Application database](https://github.com/miyevu/skillsphere/blob/main/skillsphere-frontend/lib/prisma.ts): `skillsphere-frontend/lib/prisma.ts`

### Other components

- **Student or lecturer**

## Connections

- Student or lecturer → Application pages: uses pages
- Student or lecturer → Sign-in and signup: starts account
- Student or lecturer → Authentication API: authenticates
- Authentication API → Session and password auth: hashes and signs
- Authentication API → Application database: reads and writes users
- Authentication API → Notification dispatch: alerts admins
- Student or lecturer → Skills and lessons: learns skills
- Student or lecturer → Enrollment API: enrolls
- Student or lecturer → Lesson progress API: records progress
- Student or lecturer → Assignment submissions: submits work
- Assignment submissions → Session lookup: checks session
- Assignment submissions → Application database: reads and writes submissions
- Assignment submissions → Notification dispatch: alerts lecturers
- Student or lecturer → Marketplace pages: finds work
- Student or lecturer → Marketplace API: uses marketplace
- Student or lecturer → Profile API: manages profile
- Student or lecturer → Portfolio API: builds portfolio
- Student or lecturer → Verification decisions: requests review
- Verification decisions → Session lookup: checks role
- Verification decisions → Application database: updates review and badge
- Verification decisions → Notification dispatch: notifies student
- Student or lecturer → Project reviews: leaves review
- Project reviews → Session lookup: checks session
- Project reviews → Application database: reads and writes reviews
- Project reviews → Notification dispatch: notifies reviewee
- Student or lecturer → Badges API: views badges
- Student or lecturer → Notification API: views notifications
- Notification API → Session lookup: checks session
- Notification API → Application database: reads notifications
- Notification dispatch → Application database: creates notifications
