# piyush2676/dissertation-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/piyush2676/dissertation-management-system
- Repository: https://github.com/piyush2676/dissertation-management-system

## Overview

This Spring Boot application manages a dissertation from topic proposal and guide placement through versioned milestone submissions, review, evaluation, viva and results. The README documents these domain stages and the feature-oriented controller/service/repository architecture; sampled source confirms key submission, allocation, review, readiness and AI behaviors. Audit and notification listeners, provenance, and other major capabilities are represented as distinct branches. Some subsystem links are omitted where the available excerpts do not establish exact call ownership.

Main entry points: [`src/main/java/com/dms/submission`](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/submission) (Versioned submissions), [`src/main/java/com/dms/allocation`](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/allocation) (Guide allocation), [`src/main/java/com/dms/audit`](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/audit) (Audit trail), [`src/main/java/com/dms/review`](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/review) (Review comments)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Dissertation workflow"]
  node_topic["Topic proposals"]
  node_titlebank["Faculty title bank"]
  node_allocation["Guide allocation"]
  node_submission["Versioned submissions"]
  node_storage["Upload storage"]
  node_review["Review comments"]
  node_logbook["Logbook"]
  node_changes["Change requests"]
end

subgraph group_oversight["Oversight and outcomes"]
  node_outcomes["Research outcomes"]
  node_panel["Review panels"]
  node_evaluation["Rubric evaluation"]
  node_viva["Viva scheduling"]
  node_readiness["Readiness ledger"]
  node_exports["Reports and exports"]
  node_audit["Audit trail"]
  node_provenance["Tamper-evident certificates"]
end

subgraph group_intelligence["AI and discovery"]
  node_ai["Advisory AI features"]
  node_search["Role-aware search"]
end

subgraph group_platform["Identity and platform"]
  node_accounts["Accounts and authentication"]
  node_notifications["Notification feed"]
end

node_user(("Student, guide, coordinator"))
node_database[("PostgreSQL")]
node_disk[("Local disk")]
node_email["SMTP email"]

node_user -->|"proposes topic"| node_topic
node_titlebank -->|"informs proposals"| node_topic
node_topic -->|"approved topic"| node_allocation
node_user -->|"requests guide"| node_allocation
node_allocation -->|"enables filing"| node_submission
node_submission -->|"stores uploads"| node_storage
node_user -->|"files milestones"| node_submission
node_submission -->|"provides versions"| node_review
node_user -->|"comments, resolves"| node_review
node_user -->|"records activity"| node_logbook
node_user -->|"requests change"| node_changes
node_user -->|"reports research"| node_outcomes
node_user -->|"appoints reviewers"| node_panel
node_panel -->|"scores allocation"| node_evaluation
node_user -->|"records marks"| node_evaluation
node_evaluation -->|"supports progression"| node_viva
node_submission -->|"supplies deliverable evidence"| node_readiness
node_outcomes -->|"supplies verified evidence"| node_readiness
node_evaluation -->|"supplies marks evidence"| node_readiness
node_readiness -->|"reports eligibility"| node_viva
node_user -->|"schedules viva"| node_viva
node_user -->|"requests reports"| node_exports
node_database -->|"stores audit records"| node_audit
node_submission -->|"publishes domain events"| node_audit
node_allocation -->|"publishes domain events"| node_audit
node_review -->|"publishes domain events"| node_audit
node_submission -->|"publishes domain events"| node_notifications
node_allocation -->|"publishes domain events"| node_notifications
node_review -->|"publishes domain events"| node_notifications
node_audit -->|"rebuilds history"| node_provenance
node_user -.->|"requests advice"| node_ai
node_submission -.->|"indexes submissions"| node_ai
node_user -->|"searches records"| node_search
node_accounts -->|"persists accounts and tokens"| node_database
node_user -->|"authenticates"| node_accounts
node_accounts -.->|"sends mail"| node_email
node_submission -->|"persists versions and metadata"| node_database
node_storage -->|"writes and reads files"| node_disk

click node_topic "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/topic"
click node_titlebank "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/titlebank"
click node_allocation "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/allocation"
click node_submission "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/submission"
click node_storage "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/storage"
click node_review "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/review"
click node_logbook "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/logbook"
click node_changes "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/change"
click node_outcomes "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/outcome"
click node_panel "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/panel"
click node_evaluation "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/evaluation"
click node_viva "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/viva"
click node_readiness "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/readiness"
click node_exports "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/export"
click node_audit "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/audit"
click node_provenance "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/provenance"
click node_ai "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/ai"
click node_search "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/search"
click node_accounts "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/account"
click node_notifications "https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/notification"

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_topic,node_titlebank,node_allocation,node_submission,node_storage,node_review,node_logbook,node_changes toneBlue
class node_outcomes,node_panel,node_evaluation,node_viva,node_readiness,node_exports,node_audit,node_provenance,node_database,node_disk toneAmber
class node_ai,node_search toneMint
class node_accounts,node_notifications toneRose
class node_user,node_email toneIndigo
```

## Components

### Dissertation workflow

- [Topic proposals](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/topic): `src/main/java/com/dms/topic`
- [Faculty title bank](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/titlebank): `src/main/java/com/dms/titlebank`
- [Guide allocation](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/allocation): `src/main/java/com/dms/allocation`
- [Versioned submissions](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/submission): `src/main/java/com/dms/submission`
- [Upload storage](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/storage): `src/main/java/com/dms/storage`
- [Review comments](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/review): `src/main/java/com/dms/review`
- [Logbook](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/logbook): `src/main/java/com/dms/logbook`
- [Change requests](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/change): `src/main/java/com/dms/change`

### Oversight and outcomes

- [Research outcomes](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/outcome): `src/main/java/com/dms/outcome`
- [Review panels](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/panel): `src/main/java/com/dms/panel`
- [Rubric evaluation](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/evaluation): `src/main/java/com/dms/evaluation`
- [Viva scheduling](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/viva): `src/main/java/com/dms/viva`
- [Readiness ledger](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/readiness): `src/main/java/com/dms/readiness`
- [Reports and exports](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/export): `src/main/java/com/dms/export`
- [Audit trail](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/audit): `src/main/java/com/dms/audit`
- [Tamper-evident certificates](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/provenance): `src/main/java/com/dms/provenance`

### AI and discovery

- [Advisory AI features](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/ai): `src/main/java/com/dms/ai`
- [Role-aware search](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/search): `src/main/java/com/dms/search`

### Identity and platform

- [Accounts and authentication](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/account): `src/main/java/com/dms/account`
- [Notification feed](https://github.com/piyush2676/dissertation-management-system/tree/main/src/main/java/com/dms/notification): `src/main/java/com/dms/notification`

### Other components

- **Student, guide, coordinator**
- **PostgreSQL**
- **Local disk**
- **SMTP email**

## Connections

- Student, guide, coordinator → Topic proposals: proposes topic
- Faculty title bank → Topic proposals: informs proposals
- Topic proposals → Guide allocation: approved topic
- Student, guide, coordinator → Guide allocation: requests guide
- Guide allocation → Versioned submissions: enables filing
- Versioned submissions → Upload storage: stores uploads
- Student, guide, coordinator → Versioned submissions: files milestones
- Versioned submissions → Review comments: provides versions
- Student, guide, coordinator → Review comments: comments, resolves
- Student, guide, coordinator → Logbook: records activity
- Student, guide, coordinator → Change requests: requests change
- Student, guide, coordinator → Research outcomes: reports research
- Student, guide, coordinator → Review panels: appoints reviewers
- Review panels → Rubric evaluation: scores allocation
- Student, guide, coordinator → Rubric evaluation: records marks
- Rubric evaluation → Viva scheduling: supports progression
- Versioned submissions → Readiness ledger: supplies deliverable evidence
- Research outcomes → Readiness ledger: supplies verified evidence
- Rubric evaluation → Readiness ledger: supplies marks evidence
- Readiness ledger → Viva scheduling: reports eligibility
- Student, guide, coordinator → Viva scheduling: schedules viva
- Student, guide, coordinator → Reports and exports: requests reports
- PostgreSQL → Audit trail: stores audit records
- Versioned submissions → Audit trail: publishes domain events
- Guide allocation → Audit trail: publishes domain events
- Review comments → Audit trail: publishes domain events
- Versioned submissions → Notification feed: publishes domain events
- Guide allocation → Notification feed: publishes domain events
- Review comments → Notification feed: publishes domain events
- Audit trail → Tamper-evident certificates: rebuilds history
- Student, guide, coordinator → Advisory AI features: requests advice
- Versioned submissions → Advisory AI features: indexes submissions
- Student, guide, coordinator → Role-aware search: searches records
- Accounts and authentication → PostgreSQL: persists accounts and tokens
- Student, guide, coordinator → Accounts and authentication: authenticates
- Accounts and authentication → SMTP email: sends mail
- Versioned submissions → PostgreSQL: persists versions and metadata
- Upload storage → Local disk: writes and reads files
