# seasln/takvim architecture

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

## Overview

Kalender is a signed-in calendar application with event creation and editing, recurrence expansion, tags, reminders, attachments, and a separate scratch todo list. The principal workflow is a user working in the calendar interface and accessing authenticated event APIs, which persist or retrieve calendar data; recurring masters are expanded for requested time ranges. The tree and sampled routes support the API and persistence relationships shown, but the calendar component’s client-side API calls and several unsampled subsystems’ internals are not verified here.

Main entry points: [`src/lib/db/index.ts`](https://github.com/seasln/takvim/blob/main/src/lib/db/index.ts) (Application database), [`src/lib/auth.ts`](https://github.com/seasln/takvim/blob/main/src/lib/auth.ts) (Auth service), [`src/app/api/events/route.ts`](https://github.com/seasln/takvim/blob/main/src/app/api/events/route.ts) (Event collection API), [`src/app/api/events/[id]/route.ts`](https://github.com/seasln/takvim/blob/main/src/app/api/events/%5Bid%5D/route.ts) (Event item API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_calendar["Calendar interface<br/>[CalendarApp.tsx]"]
  node_login["Login and register<br/>[page.tsx]"]
end

subgraph group_api["Application API"]
  node_events["Event collection API<br/>[route.ts]"]
  node_event_item["Event item API<br/>[route.ts]"]
  node_tags["Tag API<br/>[route.ts]"]
  node_todos["Scratch todo API<br/>[route.ts]"]
  node_todo_item["Todo item API<br/>[route.ts]"]
  node_attachments["Attachment API<br/>[route.ts]"]
  node_upload_route["Upload endpoint<br/>[route.ts]"]
  node_auth_routes["Auth endpoint<br/>[route.ts]"]
end

subgraph group_services["Auth and recurrence"]
  node_auth["Auth service<br/>[auth.ts]"]
  node_recurrence["Recurrence expansion<br/>[expand.ts]"]
  node_upload_core["Upload configuration<br/>[core.ts]"]
end

subgraph group_data["Persistence"]
  node_db[("Application database<br/>[index.ts]")]
  node_app_schema["Calendar data schema<br/>[app.ts]"]
end

node_user(("User"))
node_upload_service["UploadThing"]

node_user -->|"uses"| node_calendar
node_user -->|"authenticates"| node_login
node_events -->|"checks session"| node_auth
node_event_item -->|"checks session"| node_auth
node_tags -->|"checks session"| node_auth
node_todos -->|"checks session"| node_auth
node_todo_item -->|"checks session"| node_auth
node_attachments -->|"checks session"| node_auth
node_auth_routes -->|"dispatches"| node_auth
node_events -->|"reads and writes"| node_db
node_event_item -->|"reads and writes"| node_db
node_tags -->|"reads and writes"| node_db
node_todos -->|"reads and writes"| node_db
node_todo_item -->|"reads and writes"| node_db
node_attachments -->|"reads and writes"| node_db
node_events -->|"expands occurrences"| node_recurrence
node_upload_route -->|"uses router"| node_upload_core
node_upload_route -.->|"handles uploads"| node_upload_service
node_db -->|"uses schema"| node_app_schema

click node_calendar "https://github.com/seasln/takvim/blob/main/src/components/calendar/CalendarApp.tsx"
click node_login "https://github.com/seasln/takvim/blob/main/src/app/(auth)/login/page.tsx"
click node_events "https://github.com/seasln/takvim/blob/main/src/app/api/events/route.ts"
click node_event_item "https://github.com/seasln/takvim/blob/main/src/app/api/events/%5Bid%5D/route.ts"
click node_tags "https://github.com/seasln/takvim/blob/main/src/app/api/tags/route.ts"
click node_todos "https://github.com/seasln/takvim/blob/main/src/app/api/todos/route.ts"
click node_todo_item "https://github.com/seasln/takvim/blob/main/src/app/api/todos/%5Bid%5D/route.ts"
click node_attachments "https://github.com/seasln/takvim/blob/main/src/app/api/attachments/route.ts"
click node_upload_route "https://github.com/seasln/takvim/blob/main/src/app/api/uploadthing/route.ts"
click node_auth_routes "https://github.com/seasln/takvim/blob/main/src/app/api/auth/%5B...all%5D/route.ts"
click node_auth "https://github.com/seasln/takvim/blob/main/src/lib/auth.ts"
click node_recurrence "https://github.com/seasln/takvim/blob/main/src/lib/recurrence/expand.ts"
click node_upload_core "https://github.com/seasln/takvim/blob/main/src/lib/uploadthing/core.ts"
click node_db "https://github.com/seasln/takvim/blob/main/src/lib/db/index.ts"
click node_app_schema "https://github.com/seasln/takvim/blob/main/src/lib/db/schema/app.ts"

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_calendar,node_login,node_user toneBlue
class node_events,node_event_item,node_tags,node_todos,node_todo_item,node_attachments,node_upload_route,node_auth_routes toneAmber
class node_auth,node_recurrence,node_upload_core toneMint
class node_db,node_app_schema toneRose
class node_upload_service toneIndigo
```

## Components

### User experience

- [Calendar interface](https://github.com/seasln/takvim/blob/main/src/components/calendar/CalendarApp.tsx): `src/components/calendar/CalendarApp.tsx`
- [Login and register](https://github.com/seasln/takvim/blob/main/src/app/(auth)/login/page.tsx): `src/app/(auth)/login/page.tsx`

### Application API

- [Event collection API](https://github.com/seasln/takvim/blob/main/src/app/api/events/route.ts): `src/app/api/events/route.ts`
- [Event item API](https://github.com/seasln/takvim/blob/main/src/app/api/events/%5Bid%5D/route.ts): `src/app/api/events/[id]/route.ts`
- [Tag API](https://github.com/seasln/takvim/blob/main/src/app/api/tags/route.ts): `src/app/api/tags/route.ts`
- [Scratch todo API](https://github.com/seasln/takvim/blob/main/src/app/api/todos/route.ts): `src/app/api/todos/route.ts`
- [Todo item API](https://github.com/seasln/takvim/blob/main/src/app/api/todos/%5Bid%5D/route.ts): `src/app/api/todos/[id]/route.ts`
- [Attachment API](https://github.com/seasln/takvim/blob/main/src/app/api/attachments/route.ts): `src/app/api/attachments/route.ts`
- [Upload endpoint](https://github.com/seasln/takvim/blob/main/src/app/api/uploadthing/route.ts): `src/app/api/uploadthing/route.ts`
- [Auth endpoint](https://github.com/seasln/takvim/blob/main/src/app/api/auth/%5B...all%5D/route.ts): `src/app/api/auth/[...all]/route.ts`

### Auth and recurrence

- [Auth service](https://github.com/seasln/takvim/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Recurrence expansion](https://github.com/seasln/takvim/blob/main/src/lib/recurrence/expand.ts): `src/lib/recurrence/expand.ts`
- [Upload configuration](https://github.com/seasln/takvim/blob/main/src/lib/uploadthing/core.ts): `src/lib/uploadthing/core.ts`

### Persistence

- [Application database](https://github.com/seasln/takvim/blob/main/src/lib/db/index.ts): `src/lib/db/index.ts`
- [Calendar data schema](https://github.com/seasln/takvim/blob/main/src/lib/db/schema/app.ts): `src/lib/db/schema/app.ts`

### Other components

- **User**
- **UploadThing**

## Connections

- User → Calendar interface: uses
- User → Login and register: authenticates
- Event collection API → Auth service: checks session
- Event item API → Auth service: checks session
- Tag API → Auth service: checks session
- Scratch todo API → Auth service: checks session
- Todo item API → Auth service: checks session
- Attachment API → Auth service: checks session
- Auth endpoint → Auth service: dispatches
- Event collection API → Application database: reads and writes
- Event item API → Application database: reads and writes
- Tag API → Application database: reads and writes
- Scratch todo API → Application database: reads and writes
- Todo item API → Application database: reads and writes
- Attachment API → Application database: reads and writes
- Event collection API → Recurrence expansion: expands occurrences
- Upload endpoint → Upload configuration: uses router
- Upload endpoint → UploadThing: handles uploads
- Application database → Calendar data schema: uses schema
