# intermediateladka/ecotec architecture

> Architecture diagram of the GitHub repository intermediateladka/ecotec, 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/intermediateladka/ecotec
- Repository: https://github.com/intermediateladka/ecotec

## Overview

ECOTECH SERVICES is a Flask-based company and internship portal. Applicants browse opportunities, register or sign in, and submit applications; administrators review applications and manage their status, with accepted applicants able to access offer letters. The wider repository also supports internship tasks and reports, certificates, recommendation letters, and notifications. The app factory registers the route blueprints, while sampled routes show database-backed application and account work. README documents additional capabilities whose implementation wiring was not sampled, so uncertain call relationships are omitted.

Main entry points: [`routes/admin.py`](https://github.com/intermediateladka/ecotec/blob/main/routes/admin.py) (Admin Console), [`app.py`](https://github.com/intermediateladka/ecotec/blob/main/app.py) (Flask App), [`routes/auth.py`](https://github.com/intermediateladka/ecotec/blob/main/routes/auth.py) (User Accounts), [`notification_service.py`](https://github.com/intermediateladka/ecotec/blob/main/notification_service.py) (Notifications)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web Application"]
  node_app["Flask App<br/>[app.py]"]
  node_public["Public Pages<br/>[main.py]"]
  node_accounts["User Accounts<br/>[auth.py]"]
  node_admin_auth["Admin Sign-in<br/>[admin_auth.py]"]
  node_admin_routes["Admin Console<br/>[admin.py]"]
  node_policies["Policies<br/>[policies.py]"]
end

subgraph group_workflow["Internship Workflow"]
  node_applications["Applications<br/>[models.py]"]
  node_internship_tasks["Tasks and Reports<br/>[models.py]"]
  node_student_dashboard["Student Dashboard"]
end

subgraph group_outputs["Documents and Updates"]
  node_offer_letters["Offer Letters"]
  node_certificates["Certificates"]
  node_certificate_verify["Certificate Verification"]
  node_lor["Recommendation Letters<br/>[generate_lors.py]"]
  node_notifications["Notifications"]
  node_realtime["Realtime Delivery"]
end

subgraph group_platform["Persistence and Services"]
  node_email["Email Delivery<br/>[email_service.py]"]
  node_database[("Application Database<br/>[models.py]")]
  node_file_storage["Uploaded Files"]
end

node_visitor(("Visitor / Applicant"))
node_admin_actor(("Administrator"))
node_mysql[("MySQL")]

node_visitor -->|"uses"| node_app
node_admin_actor -->|"uses"| node_app
node_app -->|"registers"| node_public
node_app -->|"registers"| node_accounts
node_app -->|"registers"| node_admin_auth
node_app -->|"registers"| node_admin_routes
node_app -->|"registers"| node_policies
node_public -->|"reads / writes"| node_database
node_accounts -->|"reads / writes"| node_database
node_admin_routes -->|"reads / writes"| node_database
node_public -->|"saves uploads"| node_file_storage
node_admin_routes -.->|"generates"| node_offer_letters
node_accounts -.->|"manages submissions"| node_internship_tasks
node_admin_routes -.->|"manages tasks"| node_internship_tasks
node_accounts -.->|"serves dashboard"| node_student_dashboard
node_admin_routes -.->|"issues"| node_certificates
node_visitor -.->|"verifies"| node_certificate_verify
node_admin_routes -.->|"issues"| node_lor
node_admin_routes -.->|"triggers"| node_notifications
node_accounts -.->|"triggers"| node_notifications
node_notifications -->|"dispatches"| node_realtime
node_notifications -->|"sends email"| node_email
node_database -->|"persists in"| node_mysql

click node_app "https://github.com/intermediateladka/ecotec/blob/main/app.py"
click node_public "https://github.com/intermediateladka/ecotec/blob/main/routes/main.py"
click node_accounts "https://github.com/intermediateladka/ecotec/blob/main/routes/auth.py"
click node_admin_auth "https://github.com/intermediateladka/ecotec/blob/main/routes/admin_auth.py"
click node_admin_routes "https://github.com/intermediateladka/ecotec/blob/main/routes/admin.py"
click node_policies "https://github.com/intermediateladka/ecotec/blob/main/routes/policies.py"
click node_applications "https://github.com/intermediateladka/ecotec/blob/main/models.py"
click node_internship_tasks "https://github.com/intermediateladka/ecotec/blob/main/models.py"
click node_student_dashboard "https://github.com/intermediateladka/ecotec/blob/main/student_dashboard_models.py"
click node_offer_letters "https://github.com/intermediateladka/ecotec/blob/main/offer_letter_generator.py"
click node_certificates "https://github.com/intermediateladka/ecotec/blob/main/certificate_generator.py"
click node_certificate_verify "https://github.com/intermediateladka/ecotec/blob/main/certificate_verification.py"
click node_lor "https://github.com/intermediateladka/ecotec/blob/main/generate_lors.py"
click node_notifications "https://github.com/intermediateladka/ecotec/blob/main/notification_service.py"
click node_realtime "https://github.com/intermediateladka/ecotec/blob/main/realtime_notification_system.py"
click node_email "https://github.com/intermediateladka/ecotec/blob/main/email_service.py"
click node_database "https://github.com/intermediateladka/ecotec/blob/main/models.py"
click node_file_storage "https://github.com/intermediateladka/ecotec/blob/main/cloud_storage_solution.py"

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_app,node_public,node_accounts,node_admin_auth,node_admin_routes,node_policies toneBlue
class node_applications,node_internship_tasks,node_student_dashboard,node_mysql toneAmber
class node_offer_letters,node_certificates,node_certificate_verify,node_lor,node_notifications,node_realtime toneMint
class node_email,node_database,node_file_storage toneRose
class node_visitor,node_admin_actor toneIndigo
```

## Components

### Web Application

- [Flask App](https://github.com/intermediateladka/ecotec/blob/main/app.py): `app.py`
- [Public Pages](https://github.com/intermediateladka/ecotec/blob/main/routes/main.py): `routes/main.py`
- [User Accounts](https://github.com/intermediateladka/ecotec/blob/main/routes/auth.py): `routes/auth.py`
- [Admin Sign-in](https://github.com/intermediateladka/ecotec/blob/main/routes/admin_auth.py): `routes/admin_auth.py`
- [Admin Console](https://github.com/intermediateladka/ecotec/blob/main/routes/admin.py): `routes/admin.py`
- [Policies](https://github.com/intermediateladka/ecotec/blob/main/routes/policies.py): `routes/policies.py`

### Internship Workflow

- [Applications](https://github.com/intermediateladka/ecotec/blob/main/models.py): `models.py`
- [Tasks and Reports](https://github.com/intermediateladka/ecotec/blob/main/models.py): `models.py`
- [Student Dashboard](https://github.com/intermediateladka/ecotec/blob/main/student_dashboard_models.py): `student_dashboard_models.py`

### Documents and Updates

- [Offer Letters](https://github.com/intermediateladka/ecotec/blob/main/offer_letter_generator.py): `offer_letter_generator.py`
- [Certificates](https://github.com/intermediateladka/ecotec/blob/main/certificate_generator.py): `certificate_generator.py`
- [Certificate Verification](https://github.com/intermediateladka/ecotec/blob/main/certificate_verification.py): `certificate_verification.py`
- [Recommendation Letters](https://github.com/intermediateladka/ecotec/blob/main/generate_lors.py): `generate_lors.py`
- [Notifications](https://github.com/intermediateladka/ecotec/blob/main/notification_service.py): `notification_service.py`
- [Realtime Delivery](https://github.com/intermediateladka/ecotec/blob/main/realtime_notification_system.py): `realtime_notification_system.py`

### Persistence and Services

- [Email Delivery](https://github.com/intermediateladka/ecotec/blob/main/email_service.py): `email_service.py`
- [Application Database](https://github.com/intermediateladka/ecotec/blob/main/models.py): `models.py`
- [Uploaded Files](https://github.com/intermediateladka/ecotec/blob/main/cloud_storage_solution.py): `cloud_storage_solution.py`

### Other components

- **Visitor / Applicant**
- **Administrator**
- **MySQL**

## Connections

- Visitor / Applicant → Flask App: uses
- Administrator → Flask App: uses
- Flask App → Public Pages: registers
- Flask App → User Accounts: registers
- Flask App → Admin Sign-in: registers
- Flask App → Admin Console: registers
- Flask App → Policies: registers
- Public Pages → Application Database: reads / writes
- User Accounts → Application Database: reads / writes
- Admin Console → Application Database: reads / writes
- Public Pages → Uploaded Files: saves uploads
- Admin Console → Offer Letters: generates
- User Accounts → Tasks and Reports: manages submissions
- Admin Console → Tasks and Reports: manages tasks
- User Accounts → Student Dashboard: serves dashboard
- Admin Console → Certificates: issues
- Visitor / Applicant → Certificate Verification: verifies
- Admin Console → Recommendation Letters: issues
- Admin Console → Notifications: triggers
- User Accounts → Notifications: triggers
- Notifications → Realtime Delivery: dispatches
- Notifications → Email Delivery: sends email
- Application Database → MySQL: persists in
