# alshdevprojects/innowise_laboratory architecture

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

- Interactive diagram: https://gitdiagram.com/alshdevprojects/innowise_laboratory
- Repository: https://github.com/alshdevprojects/innowise_laboratory

## Overview

This repository is a set of progressively numbered programming exercises: terminal output, profile and grade-analysis scripts, a school database artifact, and two similar book-collection APIs. The principal application workflow is a client request routed by FastAPI handlers to CRUD operations, which use SQLAlchemy models and a SQLite database; Pydantic schemas define request and response shapes. Lecture 5 and lecture 6 are represented separately because each has its own implementation. The README provides no capability details, and unsampled exercises are shown without inferred internal relationships.

Main entry points: [`lecture_5/book_api/app/main.py`](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/main.py) (Book API Routes), [`lecture_6/book_api/app/main.py`](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/main.py) (Book API Routes), [`lecture_5/book_api/app/crud.py`](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/crud.py) (Book Operations), [`lecture_6/book_api/app/crud.py`](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/crud.py) (Book Operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_basics["Introductory Exercises"]
  node_hello["Colored Greeting<br/>[main.py]"]
  node_profile["Profile Exercise<br/>[profile.py]"]
  node_grades["Grade Analyzer"]
end

subgraph group_school["School Data"]
  node_school_schema["School SQL<br/>[school.sql]"]
  node_school_db[("School Database<br/>[school.db]")]
end

subgraph group_api5["Lecture 5 API"]
  node_api5_user(("API Client"))
  node_api5_routes["Book API Routes<br/>[main.py]"]
  node_api5_crud["Book Operations<br/>[crud.py]"]
  node_api5_models["Book ORM Model<br/>[models.py]"]
  node_api5_schemas["Book Schemas<br/>[schemas.py]"]
  node_api5_dbconfig["Database Setup<br/>[database.py]"]
  node_api5_store[("Books SQLite Store<br/>[books.db]")]
end

subgraph group_api6["Lecture 6 API"]
  node_api6_user(("API Client"))
  node_api6_routes["Book API Routes<br/>[main.py]"]
  node_api6_crud["Book Operations<br/>[crud.py]"]
  node_api6_models["Book ORM Model<br/>[models.py]"]
  node_api6_schemas["Book Schemas<br/>[schemas.py]"]
  node_api6_dbconfig["Database Setup<br/>[database.py]"]
  node_api6_store[("Books SQLite Store<br/>[books.db]")]
end

node_user(("Exercise User"))

node_api5_user -->|"sends requests"| node_api5_routes
node_api5_routes -->|"calls operations"| node_api5_crud
node_api5_routes -->|"uses schemas"| node_api5_schemas
node_api5_routes -->|"creates sessions"| node_api5_dbconfig
node_api5_crud -->|"queries models"| node_api5_models
node_api5_crud -->|"accepts input"| node_api5_schemas
node_api5_models -->|"uses base"| node_api5_dbconfig
node_api5_dbconfig -->|"configures SQLite"| node_api5_store
node_api6_user -->|"sends requests"| node_api6_routes
node_api6_routes -->|"calls operations"| node_api6_crud
node_api6_routes -->|"uses schemas"| node_api6_schemas
node_api6_routes -->|"creates sessions"| node_api6_dbconfig
node_api6_crud -->|"queries models"| node_api6_models
node_api6_crud -->|"accepts input"| node_api6_schemas
node_api6_models -->|"uses base"| node_api6_dbconfig
node_api6_dbconfig -->|"configures SQLite"| node_api6_store

click node_hello "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_1/main.py"
click node_profile "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_2/profile.py"
click node_grades "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_3/student_grade_analyzer.py"
click node_school_schema "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_4/school.sql"
click node_school_db "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_4/school.db"
click node_api5_routes "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/main.py"
click node_api5_crud "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/crud.py"
click node_api5_models "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/models.py"
click node_api5_schemas "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/schemas.py"
click node_api5_dbconfig "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/database.py"
click node_api5_store "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/books.db"
click node_api6_routes "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/main.py"
click node_api6_crud "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/crud.py"
click node_api6_models "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/models.py"
click node_api6_schemas "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/schemas.py"
click node_api6_dbconfig "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/database.py"
click node_api6_store "https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/books.db"

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_hello,node_profile,node_grades,node_user toneBlue
class node_school_schema,node_school_db toneAmber
class node_api5_user,node_api5_routes,node_api5_crud,node_api5_models,node_api5_schemas,node_api5_dbconfig,node_api5_store toneMint
class node_api6_user,node_api6_routes,node_api6_crud,node_api6_models,node_api6_schemas,node_api6_dbconfig,node_api6_store toneRose
```

## Components

### Introductory Exercises

- [Colored Greeting](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_1/main.py): `lecture_1/main.py`
- [Profile Exercise](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_2/profile.py): `lecture_2/profile.py`
- [Grade Analyzer](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_3/student_grade_analyzer.py): `lecture_3/student_grade_analyzer.py`

### School Data

- [School SQL](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_4/school.sql): `lecture_4/school.sql`
- [School Database](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_4/school.db): `lecture_4/school.db`

### Lecture 5 API

- **API Client**
- [Book API Routes](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/main.py): `lecture_5/book_api/app/main.py`
- [Book Operations](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/crud.py): `lecture_5/book_api/app/crud.py`
- [Book ORM Model](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/models.py): `lecture_5/book_api/app/models.py`
- [Book Schemas](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/schemas.py): `lecture_5/book_api/app/schemas.py`
- [Database Setup](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/app/database.py): `lecture_5/book_api/app/database.py`
- [Books SQLite Store](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_5/book_api/books.db): `lecture_5/book_api/books.db`

### Lecture 6 API

- **API Client**
- [Book API Routes](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/main.py): `lecture_6/book_api/app/main.py`
- [Book Operations](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/crud.py): `lecture_6/book_api/app/crud.py`
- [Book ORM Model](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/models.py): `lecture_6/book_api/app/models.py`
- [Book Schemas](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/schemas.py): `lecture_6/book_api/app/schemas.py`
- [Database Setup](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/app/database.py): `lecture_6/book_api/app/database.py`
- [Books SQLite Store](https://github.com/alshdevprojects/innowise_laboratory/blob/main/lecture_6/book_api/books.db): `lecture_6/book_api/books.db`

### Other components

- **Exercise User**

## Connections

- API Client → Book API Routes: sends requests (evidence: `lecture_5/book_api/app/main.py`)
- Book API Routes → Book Operations: calls operations (evidence: `lecture_5/book_api/app/main.py`)
- Book API Routes → Book Schemas: uses schemas (evidence: `lecture_5/book_api/app/main.py`)
- Book API Routes → Database Setup: creates sessions (evidence: `lecture_5/book_api/app/main.py`)
- Book Operations → Book ORM Model: queries models (evidence: `lecture_5/book_api/app/crud.py`)
- Book Operations → Book Schemas: accepts input (evidence: `lecture_5/book_api/app/crud.py`)
- Book ORM Model → Database Setup: uses base (evidence: `lecture_5/book_api/app/models.py`)
- Database Setup → Books SQLite Store: configures SQLite (evidence: `lecture_5/book_api/app/database.py`)
- API Client → Book API Routes: sends requests (evidence: `lecture_6/book_api/app/main.py`)
- Book API Routes → Book Operations: calls operations (evidence: `lecture_6/book_api/app/main.py`)
- Book API Routes → Book Schemas: uses schemas (evidence: `lecture_6/book_api/app/main.py`)
- Book API Routes → Database Setup: creates sessions (evidence: `lecture_6/book_api/app/main.py`)
- Book Operations → Book ORM Model: queries models (evidence: `lecture_6/book_api/app/crud.py`)
- Book Operations → Book Schemas: accepts input (evidence: `lecture_6/book_api/app/crud.py`)
- Book ORM Model → Database Setup: uses base (evidence: `lecture_6/book_api/app/models.py`)
- Database Setup → Books SQLite Store: configures SQLite (evidence: `lecture_6/book_api/app/database.py`)
