# yashwardhan61/code_frolics architecture

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

## Overview

The Legacy Trunk is a secure, collaborative family archive for preserving and revisiting stories, media, recipes, heirlooms, and scrapbooks. A family member enters through the React app, signs in, and uses archive features; frontend API modules send requests to Spring REST controllers, which delegate business work to services and persist domain records and media. The README documents family, friend, profile, notification, search/statistics, AI, and administration capabilities. Some subsystem links are documented rather than confirmed in sampled implementation; those are shown at the broad API boundary.

Main entry points: [`frontend/src/api`](https://github.com/yashwardhan61/code_frolics/tree/main/frontend/src/api) (API clients), [`backend/src/main/java/com/codefrolics/legacytrunk/repository`](https://github.com/yashwardhan61/code_frolics/tree/main/backend/src/main/java/com/codefrolics/legacytrunk/repository) (Domain repositories), [`frontend/src/App.jsx`](https://github.com/yashwardhan61/code_frolics/blob/main/frontend/src/App.jsx) (React application), [`backend/src/main/java/com/codefrolics/legacytrunk/controller/AuthController.java`](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/controller/AuthController.java) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Family experience"]
  node_webapp["React application<br/>[App.jsx]"]
  node_authui["Sign-in and profile"]
  node_archiveui["Archive workspace"]
  node_api_clients["API clients"]
end

subgraph group_api["API surface"]
  node_auth_api["Authentication API"]
  node_story_api["Story and memory APIs"]
  node_archive_api["Archive feature APIs"]
  node_media_api["Media delivery API"]
end

subgraph group_domain["Domain services"]
  node_account_service["Account services<br/>[UserService.java]"]
  node_story_service["Story workflows<br/>[StoryService.java]"]
  node_archive_service["Archive workflows"]
  node_media_service["Media storage"]
  node_ai_service["AI assistance<br/>[GroqService.java]"]
  node_email_service["Email and reset<br/>[EmailService.java]"]
end

subgraph group_persistence["Persistence"]
  node_repositories["Domain repositories"]
  node_media_repo["Media repository"]
  node_database[("PostgreSQL archive")]
end

subgraph group_integrations["External integrations"]
  node_firebase["Firebase auth"]
  node_groq["Groq API"]
  node_smtp["Email provider"]
end

node_member(("Family member"))

node_member -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_authui
node_webapp -->|"routes to"| node_archiveui
node_authui -->|"requests auth"| node_api_clients
node_archiveui -->|"requests features"| node_api_clients
node_api_clients -->|"calls"| node_auth_api
node_api_clients -->|"calls"| node_story_api
node_api_clients -->|"calls"| node_archive_api
node_api_clients -->|"fetches media"| node_media_api
node_auth_api -->|"delegates"| node_account_service
node_auth_api -->|"requests reset"| node_email_service
node_story_api -->|"delegates"| node_story_service
node_archive_api -->|"delegates"| node_archive_service
node_media_api -->|"loads media"| node_media_service
node_story_service -->|"stores uploads"| node_media_service
node_story_service -->|"reads and writes"| node_repositories
node_account_service -->|"reads and writes"| node_repositories
node_archive_service -->|"reads and writes"| node_repositories
node_media_service -->|"reads and writes"| node_media_repo
node_repositories -->|"persists records"| node_database
node_media_repo -->|"persists blobs"| node_database
node_email_service -.->|"updates password"| node_firebase
node_email_service -.->|"sends email"| node_smtp
node_archive_api -.->|"requests AI"| node_ai_service
node_ai_service -.->|"calls"| node_groq

click node_webapp "https://github.com/yashwardhan61/code_frolics/blob/main/frontend/src/App.jsx"
click node_authui "https://github.com/yashwardhan61/code_frolics/tree/main/frontend/src/pages"
click node_archiveui "https://github.com/yashwardhan61/code_frolics/tree/main/frontend/src/pages"
click node_api_clients "https://github.com/yashwardhan61/code_frolics/tree/main/frontend/src/api"
click node_auth_api "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/controller/AuthController.java"
click node_story_api "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/controller/StoryController.java"
click node_archive_api "https://github.com/yashwardhan61/code_frolics/tree/main/backend/src/main/java/com/codefrolics/legacytrunk/controller"
click node_media_api "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/controller/MediaController.java"
click node_account_service "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/UserService.java"
click node_story_service "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/StoryService.java"
click node_archive_service "https://github.com/yashwardhan61/code_frolics/tree/main/backend/src/main/java/com/codefrolics/legacytrunk/service"
click node_media_service "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/MediaStorageService.java"
click node_ai_service "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/GroqService.java"
click node_email_service "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/EmailService.java"
click node_repositories "https://github.com/yashwardhan61/code_frolics/tree/main/backend/src/main/java/com/codefrolics/legacytrunk/repository"
click node_media_repo "https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/repository/StoredMediaRepository.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_webapp,node_authui,node_archiveui,node_api_clients toneBlue
class node_auth_api,node_story_api,node_archive_api,node_media_api toneAmber
class node_account_service,node_story_service,node_archive_service,node_media_service,node_ai_service,node_email_service toneMint
class node_repositories,node_media_repo,node_database toneRose
class node_firebase,node_groq,node_smtp,node_member toneIndigo
```

## Components

### Family experience

- [React application](https://github.com/yashwardhan61/code_frolics/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Sign-in and profile](https://github.com/yashwardhan61/code_frolics/tree/main/frontend/src/pages): `frontend/src/pages`
- [Archive workspace](https://github.com/yashwardhan61/code_frolics/tree/main/frontend/src/pages): `frontend/src/pages`
- [API clients](https://github.com/yashwardhan61/code_frolics/tree/main/frontend/src/api): `frontend/src/api`

### API surface

- [Authentication API](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/controller/AuthController.java): `backend/src/main/java/com/codefrolics/legacytrunk/controller/AuthController.java`
- [Story and memory APIs](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/controller/StoryController.java): `backend/src/main/java/com/codefrolics/legacytrunk/controller/StoryController.java`
- [Archive feature APIs](https://github.com/yashwardhan61/code_frolics/tree/main/backend/src/main/java/com/codefrolics/legacytrunk/controller): `backend/src/main/java/com/codefrolics/legacytrunk/controller`
- [Media delivery API](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/controller/MediaController.java): `backend/src/main/java/com/codefrolics/legacytrunk/controller/MediaController.java`

### Domain services

- [Account services](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/UserService.java): `backend/src/main/java/com/codefrolics/legacytrunk/service/UserService.java`
- [Story workflows](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/StoryService.java): `backend/src/main/java/com/codefrolics/legacytrunk/service/StoryService.java`
- [Archive workflows](https://github.com/yashwardhan61/code_frolics/tree/main/backend/src/main/java/com/codefrolics/legacytrunk/service): `backend/src/main/java/com/codefrolics/legacytrunk/service`
- [Media storage](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/MediaStorageService.java): `backend/src/main/java/com/codefrolics/legacytrunk/service/MediaStorageService.java`
- [AI assistance](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/GroqService.java): `backend/src/main/java/com/codefrolics/legacytrunk/service/GroqService.java`
- [Email and reset](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/service/EmailService.java): `backend/src/main/java/com/codefrolics/legacytrunk/service/EmailService.java`

### Persistence

- [Domain repositories](https://github.com/yashwardhan61/code_frolics/tree/main/backend/src/main/java/com/codefrolics/legacytrunk/repository): `backend/src/main/java/com/codefrolics/legacytrunk/repository`
- [Media repository](https://github.com/yashwardhan61/code_frolics/blob/main/backend/src/main/java/com/codefrolics/legacytrunk/repository/StoredMediaRepository.java): `backend/src/main/java/com/codefrolics/legacytrunk/repository/StoredMediaRepository.java`
- **PostgreSQL archive**

### External integrations

- **Firebase auth**
- **Groq API**
- **Email provider**

### Other components

- **Family member**

## Connections

- Family member → React application: uses
- React application → Sign-in and profile: routes to
- React application → Archive workspace: routes to
- Sign-in and profile → API clients: requests auth
- Archive workspace → API clients: requests features
- API clients → Authentication API: calls
- API clients → Story and memory APIs: calls
- API clients → Archive feature APIs: calls
- API clients → Media delivery API: fetches media
- Authentication API → Account services: delegates
- Authentication API → Email and reset: requests reset
- Story and memory APIs → Story workflows: delegates
- Archive feature APIs → Archive workflows: delegates
- Media delivery API → Media storage: loads media
- Story workflows → Media storage: stores uploads
- Story workflows → Domain repositories: reads and writes
- Account services → Domain repositories: reads and writes
- Archive workflows → Domain repositories: reads and writes
- Media storage → Media repository: reads and writes
- Domain repositories → PostgreSQL archive: persists records
- Media repository → PostgreSQL archive: persists blobs
- Email and reset → Firebase auth: updates password
- Email and reset → Email provider: sends email
- Archive feature APIs → AI assistance: requests AI
- AI assistance → Groq API: calls
