# chefcurry34/kalendar architecture

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

- Interactive diagram: https://gitdiagram.com/chefcurry34/kalendar
- Repository: https://github.com/chefcurry34/kalendar

## Overview

Kalendar is a browser-based shared reminder calendar with user registration, login, session-based identity, and reminder management. The main workflow is user interaction in the frontend, authentication or calendar requests to the Spring API, service-level validation and participant handling, and JPA persistence. The source confirms controller-to-service and service-to-repository calls; frontend API wiring and deployment of the frontend are not sampled, and there is no README, so those links are omitted.

Main entry points: [`src/frontend/script/main.js`](https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/main.js) (Frontend bootstrap), [`src/main/java/com/krizik/kalendar/service/ReminderService.java`](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/service/ReminderService.java) (Reminder service), [`src/main/java/com/krizik/kalendar/service/UserService.java`](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/service/UserService.java) (User service), [`src/main/java/com/krizik/kalendar/repository/UserRepository.java`](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/repository/UserRepository.java) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Browser interface"]
  node_main["Frontend bootstrap<br/>[main.js]"]
  node_index["Calendar page<br/>[index.html]"]
  node_auth["Authentication UI<br/>[auth.js]"]
  node_calendar["Calendar UI<br/>[calendar.js]"]
  node_api_client["API client<br/>[api.js]"]
  node_theme["Theme controls<br/>[theme.js]"]
end

subgraph group_api["HTTP API"]
  node_user_controller["User endpoints"]
  node_reminder_controller["Reminder endpoints"]
  node_security["Security and CORS"]
  node_application["Spring application"]
end

subgraph group_domain["Domain services"]
  node_user_service["User service<br/>[UserService.java]"]
  node_reminder_service["Reminder service"]
  node_user_entity["User model<br/>[User.java]"]
  node_reminder_entity["Reminder model<br/>[Reminder.java]"]
end

subgraph group_persistence["Persistence"]
  node_user_repo["User repository"]
  node_reminder_repo["Reminder repository"]
  node_database[("Relational database")]
end

node_user(("Calendar user"))

node_user -->|"uses"| node_index
node_main -->|"initializes"| node_auth
node_main -->|"exposes"| node_calendar
node_main -->|"initializes"| node_theme
node_main -->|"queries user"| node_api_client
node_user_controller -->|"calls"| node_user_service
node_reminder_controller -->|"calls"| node_reminder_service
node_user_service -->|"reads and saves"| node_user_repo
node_reminder_service -->|"looks up users"| node_user_repo
node_reminder_service -->|"reads and writes"| node_reminder_repo
node_user_repo -->|"persists"| node_database
node_reminder_repo -->|"persists"| node_database
node_user_service -->|"checks credentials"| node_user_entity
node_reminder_service -->|"creates and updates"| node_reminder_entity
node_application -->|"starts configured API"| node_security

click node_main "https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/main.js"
click node_index "https://github.com/chefcurry34/kalendar/blob/master/src/frontend/index.html"
click node_auth "https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/auth.js"
click node_calendar "https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/calendar.js"
click node_api_client "https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/api.js"
click node_theme "https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/theme.js"
click node_user_controller "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/controller/UserController.java"
click node_reminder_controller "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/controller/ReminderController.java"
click node_security "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/config/SecurityConfig.java"
click node_user_service "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/service/UserService.java"
click node_reminder_service "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/service/ReminderService.java"
click node_user_entity "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/entity/User.java"
click node_reminder_entity "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/entity/Reminder.java"
click node_user_repo "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/repository/UserRepository.java"
click node_reminder_repo "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/repository/ReminderRepository.java"
click node_application "https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/KalendarApplication.java"

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_main,node_index,node_auth,node_calendar,node_api_client,node_theme,node_user toneBlue
class node_user_controller,node_reminder_controller,node_security,node_application toneAmber
class node_user_service,node_reminder_service,node_user_entity,node_reminder_entity toneMint
class node_user_repo,node_reminder_repo,node_database toneRose
```

## Components

### Browser interface

- [Frontend bootstrap](https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/main.js): `src/frontend/script/main.js`
- [Calendar page](https://github.com/chefcurry34/kalendar/blob/master/src/frontend/index.html): `src/frontend/index.html`
- [Authentication UI](https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/auth.js): `src/frontend/script/auth.js`
- [Calendar UI](https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/calendar.js): `src/frontend/script/calendar.js`
- [API client](https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/api.js): `src/frontend/script/api.js`
- [Theme controls](https://github.com/chefcurry34/kalendar/blob/master/src/frontend/script/theme.js): `src/frontend/script/theme.js`

### HTTP API

- [User endpoints](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/controller/UserController.java): `src/main/java/com/krizik/kalendar/controller/UserController.java`
- [Reminder endpoints](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/controller/ReminderController.java): `src/main/java/com/krizik/kalendar/controller/ReminderController.java`
- [Security and CORS](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/config/SecurityConfig.java): `src/main/java/com/krizik/kalendar/config/SecurityConfig.java`
- [Spring application](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/KalendarApplication.java): `src/main/java/com/krizik/kalendar/KalendarApplication.java`

### Domain services

- [User service](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/service/UserService.java): `src/main/java/com/krizik/kalendar/service/UserService.java`
- [Reminder service](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/service/ReminderService.java): `src/main/java/com/krizik/kalendar/service/ReminderService.java`
- [User model](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/entity/User.java): `src/main/java/com/krizik/kalendar/entity/User.java`
- [Reminder model](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/entity/Reminder.java): `src/main/java/com/krizik/kalendar/entity/Reminder.java`

### Persistence

- [User repository](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/repository/UserRepository.java): `src/main/java/com/krizik/kalendar/repository/UserRepository.java`
- [Reminder repository](https://github.com/chefcurry34/kalendar/blob/master/src/main/java/com/krizik/kalendar/repository/ReminderRepository.java): `src/main/java/com/krizik/kalendar/repository/ReminderRepository.java`
- **Relational database**

### Other components

- **Calendar user**

## Connections

- Calendar user → Calendar page: uses
- Frontend bootstrap → Authentication UI: initializes
- Frontend bootstrap → Calendar UI: exposes
- Frontend bootstrap → Theme controls: initializes
- Frontend bootstrap → API client: queries user
- User endpoints → User service: calls
- Reminder endpoints → Reminder service: calls
- User service → User repository: reads and saves
- Reminder service → User repository: looks up users
- Reminder service → Reminder repository: reads and writes
- User repository → Relational database: persists
- Reminder repository → Relational database: persists
- User service → User model: checks credentials
- Reminder service → Reminder model: creates and updates
- Spring application → Security and CORS: starts configured API
