# dima0808/studease-frontend-v2 architecture

> Architecture diagram of the GitHub repository dima0808/studease-frontend-v2, 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/dima0808/studease-frontend-v2
- Repository: https://github.com/dima0808/studease-frontend-v2

## Overview

StudEase is a React study-management frontend for authentication, tests, collections, courseboards, and student test-taking. The main assessment workflow opens a test link, loads test information, collects student credentials, serves questions, finishes the session, and lets an instructor review submitted answers. Separate management routes cover test and collection creation and detail views. The graph reflects routes and state interactions shown in sampled files; several page and action implementations were not sampled, so uncertain service calls and subsystem wiring are omitted.

Main entry points: [`src/App.jsx`](https://github.com/dima0808/studease-frontend-v2/blob/main/src/App.jsx) (Route application), [`src/pages/TestSessionPage/TestSessionPage.jsx`](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/TestSessionPage/TestSessionPage.jsx) (Test entry), [`src/pages/SessionDetailsPage/SessionDetailsPage.jsx`](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/SessionDetailsPage/SessionDetailsPage.jsx) (Answer review), [`src/store/testSession/testSession.actions.js`](https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/testSession/testSession.actions.js) (Session actions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authentication"]
  node_authforms["Login and register"]
  node_authlayout["Auth layout<br/>[AuthLayout.jsx]"]
  node_authactions["Auth actions<br/>[auth.actions.js]"]
  node_authstate["Auth state<br/>[auth.slice.js]"]
end

subgraph group_manage["Study management"]
  node_tests["Tests listing<br/>[TestsPage.jsx]"]
  node_testinfo["Test details<br/>[TestInfoPage.jsx]"]
  node_collections["Collections"]
  node_collectioninfo["Collection details"]
  node_courseboards["Courseboards"]
  node_create["Create content<br/>[CreatePage.jsx]"]
  node_aigenerator["AI generator"]
end

subgraph group_assessment["Assessment workflow"]
  node_testentry["Test entry"]
  node_testlayout["Session layout"]
  node_teststeps["Session stages"]
  node_questiontypes["Question renderers"]
  node_sessionactions["Session actions"]
  node_sessionstate["Session state"]
  node_sessiondetails["Answer review"]
  node_normalize["Response normalization"]
end

subgraph group_state["Application state"]
  node_app["Route application<br/>[App.jsx]"]
  node_collectionsactions["Collection actions"]
end

node_user(("User"))
node_backend["Backend API"]

node_user -->|"opens routes"| node_app
node_app -->|"routes auth"| node_authlayout
node_authlayout -->|"renders outlet"| node_authforms
node_authforms -->|"dispatches auth"| node_authactions
node_authactions -->|"updates state"| node_authstate
node_app -->|"routes tests"| node_tests
node_app -->|"routes collections"| node_collections
node_app -->|"routes boards"| node_courseboards
node_app -->|"routes details"| node_testinfo
node_app -->|"routes details"| node_collectioninfo
node_app -->|"routes creation"| node_create
node_app -->|"routes test link"| node_testentry
node_app -->|"routes review"| node_sessiondetails
node_tests -->|"dispatches actions"| node_collectionsactions
node_testentry -->|"loads test"| node_sessionactions
node_testentry -->|"reads session state"| node_sessionstate
node_sessionactions -->|"updates session"| node_sessionstate
node_testentry -->|"renders session"| node_testlayout
node_testentry -->|"selects stage"| node_teststeps
node_teststeps -->|"renders questions"| node_questiontypes
node_sessiondetails -->|"fetches responses"| node_sessionactions
node_sessiondetails -->|"normalizes response"| node_normalize
node_sessiondetails -->|"renders answers"| node_questiontypes
node_create -.->|"optional generation"| node_aigenerator

click node_app "https://github.com/dima0808/studease-frontend-v2/blob/main/src/App.jsx"
click node_authforms "https://github.com/dima0808/studease-frontend-v2/tree/main/src/components/AuthForm"
click node_authlayout "https://github.com/dima0808/studease-frontend-v2/blob/main/src/layout/AuthLayout/AuthLayout.jsx"
click node_authactions "https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/auth/auth.actions.js"
click node_authstate "https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/auth/auth.slice.js"
click node_tests "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/TestsPage/TestsPage.jsx"
click node_testinfo "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/TestInfoPage/TestInfoPage.jsx"
click node_collections "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CollectionsPage/CollectionsPage.jsx"
click node_collectioninfo "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CollectionInfoPage/CollectionInfoPage.jsx"
click node_courseboards "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CourseboardsPage/CourseboardsPage.jsx"
click node_create "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CreatePage/CreatePage.jsx"
click node_aigenerator "https://github.com/dima0808/studease-frontend-v2/blob/main/src/components/AIGeneratorBlock/AIGeneratorBlock.jsx"
click node_testentry "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/TestSessionPage/TestSessionPage.jsx"
click node_testlayout "https://github.com/dima0808/studease-frontend-v2/blob/main/src/layout/TestSessionLayout/TestSessionLayout.jsx"
click node_teststeps "https://github.com/dima0808/studease-frontend-v2/tree/main/src/pages/TestSessionPage/components"
click node_questiontypes "https://github.com/dima0808/studease-frontend-v2/tree/main/src/pages/TestSessionPage/components"
click node_sessionactions "https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/testSession/testSession.actions.js"
click node_sessionstate "https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/testSession/testSession.slice.js"
click node_sessiondetails "https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/SessionDetailsPage/SessionDetailsPage.jsx"
click node_normalize "https://github.com/dima0808/studease-frontend-v2/blob/main/src/utils/normalizeTestSession.js"
click node_collectionsactions "https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/collections/collections.actions.js"

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_authforms,node_authlayout,node_authactions,node_authstate,node_user toneBlue
class node_tests,node_testinfo,node_collections,node_collectioninfo,node_courseboards,node_create,node_aigenerator toneAmber
class node_testentry,node_testlayout,node_teststeps,node_questiontypes,node_sessionactions,node_sessionstate,node_sessiondetails,node_normalize,node_backend toneMint
class node_app,node_collectionsactions toneRose
```

## Components

### Authentication

- [Login and register](https://github.com/dima0808/studease-frontend-v2/tree/main/src/components/AuthForm): `src/components/AuthForm`
- [Auth layout](https://github.com/dima0808/studease-frontend-v2/blob/main/src/layout/AuthLayout/AuthLayout.jsx): `src/layout/AuthLayout/AuthLayout.jsx`
- [Auth actions](https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/auth/auth.actions.js): `src/store/auth/auth.actions.js`
- [Auth state](https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/auth/auth.slice.js): `src/store/auth/auth.slice.js`

### Study management

- [Tests listing](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/TestsPage/TestsPage.jsx): `src/pages/TestsPage/TestsPage.jsx`
- [Test details](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/TestInfoPage/TestInfoPage.jsx): `src/pages/TestInfoPage/TestInfoPage.jsx`
- [Collections](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CollectionsPage/CollectionsPage.jsx): `src/pages/CollectionsPage/CollectionsPage.jsx`
- [Collection details](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CollectionInfoPage/CollectionInfoPage.jsx): `src/pages/CollectionInfoPage/CollectionInfoPage.jsx`
- [Courseboards](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CourseboardsPage/CourseboardsPage.jsx): `src/pages/CourseboardsPage/CourseboardsPage.jsx`
- [Create content](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/CreatePage/CreatePage.jsx): `src/pages/CreatePage/CreatePage.jsx`
- [AI generator](https://github.com/dima0808/studease-frontend-v2/blob/main/src/components/AIGeneratorBlock/AIGeneratorBlock.jsx): `src/components/AIGeneratorBlock/AIGeneratorBlock.jsx`

### Assessment workflow

- [Test entry](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/TestSessionPage/TestSessionPage.jsx): `src/pages/TestSessionPage/TestSessionPage.jsx`
- [Session layout](https://github.com/dima0808/studease-frontend-v2/blob/main/src/layout/TestSessionLayout/TestSessionLayout.jsx): `src/layout/TestSessionLayout/TestSessionLayout.jsx`
- [Session stages](https://github.com/dima0808/studease-frontend-v2/tree/main/src/pages/TestSessionPage/components): `src/pages/TestSessionPage/components`
- [Question renderers](https://github.com/dima0808/studease-frontend-v2/tree/main/src/pages/TestSessionPage/components): `src/pages/TestSessionPage/components`
- [Session actions](https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/testSession/testSession.actions.js): `src/store/testSession/testSession.actions.js`
- [Session state](https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/testSession/testSession.slice.js): `src/store/testSession/testSession.slice.js`
- [Answer review](https://github.com/dima0808/studease-frontend-v2/blob/main/src/pages/SessionDetailsPage/SessionDetailsPage.jsx): `src/pages/SessionDetailsPage/SessionDetailsPage.jsx`
- [Response normalization](https://github.com/dima0808/studease-frontend-v2/blob/main/src/utils/normalizeTestSession.js): `src/utils/normalizeTestSession.js`

### Application state

- [Route application](https://github.com/dima0808/studease-frontend-v2/blob/main/src/App.jsx): `src/App.jsx`
- [Collection actions](https://github.com/dima0808/studease-frontend-v2/blob/main/src/store/collections/collections.actions.js): `src/store/collections/collections.actions.js`

### Other components

- **User**
- **Backend API**

## Connections

- User → Route application: opens routes
- Route application → Auth layout: routes auth
- Auth layout → Login and register: renders outlet
- Login and register → Auth actions: dispatches auth
- Auth actions → Auth state: updates state
- Route application → Tests listing: routes tests
- Route application → Collections: routes collections
- Route application → Courseboards: routes boards
- Route application → Test details: routes details
- Route application → Collection details: routes details
- Route application → Create content: routes creation
- Route application → Test entry: routes test link
- Route application → Answer review: routes review
- Tests listing → Collection actions: dispatches actions
- Test entry → Session actions: loads test
- Test entry → Session state: reads session state
- Session actions → Session state: updates session
- Test entry → Session layout: renders session
- Test entry → Session stages: selects stage
- Session stages → Question renderers: renders questions
- Answer review → Session actions: fetches responses
- Answer review → Response normalization: normalizes response
- Answer review → Question renderers: renders answers
- Create content → AI generator: optional generation
