# hardius/go_final_project architecture

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

## Overview

This is a Go web-based task scheduler. A browser uses the served web interface and API to create, search, edit, complete, and delete tasks; task dates can follow daily, weekly, monthly, or yearly recurrence rules. The sampled code confirms startup, task creation/listing/deletion, recurrence calculation, and SQLite access. Other documented API capabilities are included by their source paths, but their wiring is not asserted because those handlers were not sampled.

Main entry points: [`pkg/db/task.go`](https://github.com/hardius/go_final_project/blob/main/pkg/db/task.go) (Task operations), [`pkg/api/taskhandlers.go`](https://github.com/hardius/go_final_project/blob/main/pkg/api/taskhandlers.go) (Task method router), [`pkg/server/server.go`](https://github.com/hardius/go_final_project/blob/main/pkg/server/server.go) (HTTP server), [`pkg/api/addtask.go`](https://github.com/hardius/go_final_project/blob/main/pkg/api/addtask.go) (Create task)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Server runtime"]
  node_webui["Web interface"]
  node_server["HTTP server<br/>[server.go]"]
  node_main["Application entry<br/>[main.go]"]
end

subgraph group_api["Task API"]
  node_taskroute["Task method router<br/>[taskhandlers.go]"]
  node_add["Create task<br/>[addtask.go]"]
  node_list["Search tasks<br/>[tasks.go]"]
  node_get["Read task<br/>[gettask.go]"]
  node_edit["Edit task<br/>[updatetask.go]"]
  node_remove["Delete task<br/>[deletehandler.go]"]
  node_complete["Complete task<br/>[taskdone.go]"]
  node_signin["Password sign-in<br/>[signin.go]"]
  node_nextapi["Next-date API<br/>[nexthandler.go]"]
end

subgraph group_domain["Scheduling"]
  node_recurrence["Recurrence rules<br/>[nextdate.go]"]
end

subgraph group_storage["Persistence"]
  node_taskstore["Task operations<br/>[task.go]"]
  node_sqlite[("SQLite database<br/>[db.go]")]
end

node_browser(("Browser user"))

node_browser -->|"uses"| node_webui
node_main -->|"initializes database"| node_taskstore
node_main -->|"starts"| node_server
node_server -->|"serves files"| node_webui
node_server -->|"initializes API"| node_taskroute
node_taskroute -->|"dispatches"| node_add
node_taskroute -->|"dispatches"| node_get
node_taskroute -->|"dispatches"| node_edit
node_taskroute -->|"dispatches"| node_remove
node_add -->|"inserts task"| node_taskstore
node_add -->|"checks recurrence"| node_recurrence
node_list -->|"queries tasks"| node_taskstore
node_remove -->|"deletes task"| node_taskstore
node_nextapi -->|"calculates date"| node_recurrence
node_taskstore -->|"reads and writes"| node_sqlite
node_complete -.->|"updates task date"| node_taskstore
node_taskstore -->|"calculates next date"| node_recurrence

click node_webui "https://github.com/hardius/go_final_project/tree/main/web"
click node_server "https://github.com/hardius/go_final_project/blob/main/pkg/server/server.go"
click node_main "https://github.com/hardius/go_final_project/blob/main/main.go"
click node_taskroute "https://github.com/hardius/go_final_project/blob/main/pkg/api/taskhandlers.go"
click node_add "https://github.com/hardius/go_final_project/blob/main/pkg/api/addtask.go"
click node_list "https://github.com/hardius/go_final_project/blob/main/pkg/api/tasks.go"
click node_get "https://github.com/hardius/go_final_project/blob/main/pkg/api/gettask.go"
click node_edit "https://github.com/hardius/go_final_project/blob/main/pkg/api/updatetask.go"
click node_remove "https://github.com/hardius/go_final_project/blob/main/pkg/api/deletehandler.go"
click node_complete "https://github.com/hardius/go_final_project/blob/main/pkg/api/taskdone.go"
click node_signin "https://github.com/hardius/go_final_project/blob/main/pkg/api/signin.go"
click node_nextapi "https://github.com/hardius/go_final_project/blob/main/pkg/api/nexthandler.go"
click node_recurrence "https://github.com/hardius/go_final_project/blob/main/pkg/functions/nextdate.go"
click node_taskstore "https://github.com/hardius/go_final_project/blob/main/pkg/db/task.go"
click node_sqlite "https://github.com/hardius/go_final_project/blob/main/pkg/db/db.go"

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_webui,node_server,node_main,node_browser toneBlue
class node_taskroute,node_add,node_list,node_get,node_edit,node_remove,node_complete,node_signin,node_nextapi toneAmber
class node_recurrence toneMint
class node_taskstore,node_sqlite toneRose
```

## Components

### Server runtime

- [Web interface](https://github.com/hardius/go_final_project/tree/main/web): `web`
- [HTTP server](https://github.com/hardius/go_final_project/blob/main/pkg/server/server.go): `pkg/server/server.go`
- [Application entry](https://github.com/hardius/go_final_project/blob/main/main.go): `main.go`

### Task API

- [Task method router](https://github.com/hardius/go_final_project/blob/main/pkg/api/taskhandlers.go): `pkg/api/taskhandlers.go`
- [Create task](https://github.com/hardius/go_final_project/blob/main/pkg/api/addtask.go): `pkg/api/addtask.go`
- [Search tasks](https://github.com/hardius/go_final_project/blob/main/pkg/api/tasks.go): `pkg/api/tasks.go`
- [Read task](https://github.com/hardius/go_final_project/blob/main/pkg/api/gettask.go): `pkg/api/gettask.go`
- [Edit task](https://github.com/hardius/go_final_project/blob/main/pkg/api/updatetask.go): `pkg/api/updatetask.go`
- [Delete task](https://github.com/hardius/go_final_project/blob/main/pkg/api/deletehandler.go): `pkg/api/deletehandler.go`
- [Complete task](https://github.com/hardius/go_final_project/blob/main/pkg/api/taskdone.go): `pkg/api/taskdone.go`
- [Password sign-in](https://github.com/hardius/go_final_project/blob/main/pkg/api/signin.go): `pkg/api/signin.go`
- [Next-date API](https://github.com/hardius/go_final_project/blob/main/pkg/api/nexthandler.go): `pkg/api/nexthandler.go`

### Scheduling

- [Recurrence rules](https://github.com/hardius/go_final_project/blob/main/pkg/functions/nextdate.go): `pkg/functions/nextdate.go`

### Persistence

- [Task operations](https://github.com/hardius/go_final_project/blob/main/pkg/db/task.go): `pkg/db/task.go`
- [SQLite database](https://github.com/hardius/go_final_project/blob/main/pkg/db/db.go): `pkg/db/db.go`

### Other components

- **Browser user**

## Connections

- Browser user → Web interface: uses
- Application entry → Task operations: initializes database
- Application entry → HTTP server: starts
- HTTP server → Web interface: serves files
- HTTP server → Task method router: initializes API
- Task method router → Create task: dispatches
- Task method router → Read task: dispatches
- Task method router → Edit task: dispatches
- Task method router → Delete task: dispatches
- Create task → Task operations: inserts task
- Create task → Recurrence rules: checks recurrence
- Search tasks → Task operations: queries tasks
- Delete task → Task operations: deletes task
- Next-date API → Recurrence rules: calculates date
- Task operations → SQLite database: reads and writes
- Complete task → Task operations: updates task date
- Task operations → Recurrence rules: calculates next date
