# achindbabucs/mecqp architecture

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

- Interactive diagram: https://gitdiagram.com/achindbabucs/mecqp
- Repository: https://github.com/achindbabucs/mecqp

## Overview

MecQP is a Flask-backed question-paper repository. Students search papers by academic and exam metadata, download available PDFs, or submit missing papers for administrator review; admins authenticate and manage papers and submissions. The sampled Flask excerpt shows search queries against SQLite, upload handling, and admin operations, while the README documents additional capabilities such as submission-status checks and announcements. Those less-visible features are represented from the README rather than inferred from unsampled code.

Main entry points: [`mecqp.py`](https://github.com/achindbabucs/mecqp/blob/master/mecqp.py) (Admin dashboard), [`static/js/mecqpsubmit.js`](https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpsubmit.js) (Upload validation), [`static/js/mecqpadmin.js`](https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpadmin.js) (Admin interface), [`papers`](https://github.com/achindbabucs/mecqp/tree/master/papers) (Published PDFs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Student access"]
  node_flask["Flask routes<br/>[mecqp.py]"]
  node_search["Paper search<br/>[mecqp.py]"]
  node_search_ui["Search validation<br/>[mecqpsearch.js]"]
  node_paper_download["PDF download<br/>[mecqp.py]"]
end

subgraph group_review["Submission review"]
  node_submit_ui["Upload validation<br/>[mecqpsubmit.js]"]
  node_submission["Paper submission<br/>[mecqp.py]"]
  node_status["Submission status"]
end

subgraph group_admin["Administration"]
  node_admin_auth["Admin authentication<br/>[mecqp.py]"]
  node_admin_dashboard["Admin dashboard<br/>[mecqp.py]"]
  node_admin_ui["Admin interface<br/>[mecqpadmin.js]"]
  node_announcements["Admin messages"]
end

subgraph group_storage["Application storage"]
  node_sqlite[("SQLite database")]
  node_paper_files[("Published PDFs")]
  node_submission_files[("Submitted PDFs")]
end

node_student(("Student"))
node_admin(("Administrator"))

node_student -->|"uses"| node_flask
node_flask -->|"routes"| node_search
node_search_ui -->|"validates"| node_search
node_search -->|"queries"| node_sqlite
node_flask -->|"routes"| node_paper_download
node_paper_download -->|"serves"| node_paper_files
node_student -->|"submits"| node_submit_ui
node_submit_ui -->|"validates"| node_submission
node_submission -->|"records"| node_sqlite
node_submission -.->|"stores"| node_submission_files
node_student -->|"checks status"| node_status
node_admin -->|"signs in"| node_admin_auth
node_admin_auth -->|"authorizes"| node_admin_dashboard
node_admin -->|"manages papers"| node_admin_ui
node_admin_ui -->|"drives actions"| node_admin_dashboard
node_admin_dashboard -->|"updates records"| node_sqlite
node_admin_dashboard -->|"manages files"| node_paper_files
node_admin_dashboard -.->|"reviews uploads"| node_submission_files
node_admin -->|"publishes messages"| node_announcements

click node_flask "https://github.com/achindbabucs/mecqp/blob/master/mecqp.py"
click node_search "https://github.com/achindbabucs/mecqp/blob/master/mecqp.py"
click node_search_ui "https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpsearch.js"
click node_paper_download "https://github.com/achindbabucs/mecqp/blob/master/mecqp.py"
click node_submit_ui "https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpsubmit.js"
click node_submission "https://github.com/achindbabucs/mecqp/blob/master/mecqp.py"
click node_status "https://github.com/achindbabucs/mecqp/tree/master/templates"
click node_admin_auth "https://github.com/achindbabucs/mecqp/blob/master/mecqp.py"
click node_admin_dashboard "https://github.com/achindbabucs/mecqp/blob/master/mecqp.py"
click node_admin_ui "https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpadmin.js"
click node_announcements "https://github.com/achindbabucs/mecqp/tree/master/templates"
click node_paper_files "https://github.com/achindbabucs/mecqp/tree/master/papers"
click node_submission_files "https://github.com/achindbabucs/mecqp/tree/master/submissions"

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_flask,node_search,node_search_ui,node_paper_download toneBlue
class node_submit_ui,node_submission,node_status toneAmber
class node_admin_auth,node_admin_dashboard,node_admin_ui,node_announcements toneMint
class node_sqlite,node_paper_files,node_submission_files toneRose
class node_student,node_admin toneIndigo
```

## Components

### Student access

- [Flask routes](https://github.com/achindbabucs/mecqp/blob/master/mecqp.py): `mecqp.py`
- [Paper search](https://github.com/achindbabucs/mecqp/blob/master/mecqp.py): `mecqp.py`
- [Search validation](https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpsearch.js): `static/js/mecqpsearch.js`
- [PDF download](https://github.com/achindbabucs/mecqp/blob/master/mecqp.py): `mecqp.py`

### Submission review

- [Upload validation](https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpsubmit.js): `static/js/mecqpsubmit.js`
- [Paper submission](https://github.com/achindbabucs/mecqp/blob/master/mecqp.py): `mecqp.py`
- [Submission status](https://github.com/achindbabucs/mecqp/tree/master/templates): `templates`

### Administration

- [Admin authentication](https://github.com/achindbabucs/mecqp/blob/master/mecqp.py): `mecqp.py`
- [Admin dashboard](https://github.com/achindbabucs/mecqp/blob/master/mecqp.py): `mecqp.py`
- [Admin interface](https://github.com/achindbabucs/mecqp/blob/master/static/js/mecqpadmin.js): `static/js/mecqpadmin.js`
- [Admin messages](https://github.com/achindbabucs/mecqp/tree/master/templates): `templates`

### Application storage

- **SQLite database**
- [Published PDFs](https://github.com/achindbabucs/mecqp/tree/master/papers): `papers`
- [Submitted PDFs](https://github.com/achindbabucs/mecqp/tree/master/submissions): `submissions`

### Other components

- **Student**
- **Administrator**

## Connections

- Student → Flask routes: uses (evidence: `README.md`)
- Flask routes → Paper search: routes (evidence: `mecqp.py`)
- Search validation → Paper search: validates (evidence: `static/js/mecqpsearch.js`)
- Paper search → SQLite database: queries (evidence: `mecqp.py`)
- Flask routes → PDF download: routes (evidence: `mecqp.py`)
- PDF download → Published PDFs: serves (evidence: `README.md`)
- Student → Upload validation: submits (evidence: `README.md`)
- Upload validation → Paper submission: validates (evidence: `static/js/mecqpsubmit.js`)
- Paper submission → SQLite database: records (evidence: `mecqp.py`)
- Paper submission → Submitted PDFs: stores
- Student → Submission status: checks status (evidence: `README.md`)
- Administrator → Admin authentication: signs in (evidence: `README.md`)
- Admin authentication → Admin dashboard: authorizes (evidence: `mecqp.py`)
- Administrator → Admin interface: manages papers (evidence: `README.md`)
- Admin interface → Admin dashboard: drives actions (evidence: `static/js/mecqpadmin.js`)
- Admin dashboard → SQLite database: updates records (evidence: `mecqp.py`)
- Admin dashboard → Published PDFs: manages files (evidence: `mecqp.py`)
- Admin dashboard → Submitted PDFs: reviews uploads
- Administrator → Admin messages: publishes messages (evidence: `README.md`)
