# ayushsingh07cool/myjournalapp architecture

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

- Interactive diagram: https://gitdiagram.com/ayushsingh07cool/myjournalapp
- Repository: https://github.com/ayushsingh07cool/myjournalapp

## Overview

Journal App is a full-stack personal journaling product. Users register or log in, then access a dashboard to view and manage their journal entries through authenticated backend APIs backed by MongoDB. The sampled backend code confirms signup/login, JWT generation, user-scoped entry operations, and persistence. Frontend page-to-API wiring and several backend integrations are not shown in the excerpts, so those relationships are omitted.

Main entry points: [`JournalUI/src/routes/AppRoutes.jsx`](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/routes/AppRoutes.jsx) (App routes), [`journalApp/src/main/java/com/edigest/journalApp/service/UserService.java`](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/UserService.java) (User service), [`journalApp/src/main/java/com/edigest/journalApp/service/JournalEntryService.java`](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/JournalEntryService.java) (Entry service), [`journalApp/src/main/java/com/edigest/journalApp/controller/PublicController.java`](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/controller/PublicController.java) (Public auth API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web client"]
  node_routes["App routes<br/>[AppRoutes.jsx]"]
  node_landing["Landing page<br/>[LandingPage.jsx]"]
  node_login["Login page<br/>[Login.jsx]"]
  node_signup["Signup page<br/>[Signup.jsx]"]
  node_dashboard["Journal dashboard"]
  node_authcontext["Auth context<br/>[AuthContext.jsx]"]
  node_axios["HTTP client config<br/>[axiosConfig.jsx]"]
end

subgraph group_identity["Identity and access"]
  node_publicapi["Public auth API"]
  node_userservice["User service<br/>[UserService.java]"]
  node_userdetails["User details service"]
  node_jwt["JWT utility<br/>[JwtUtil.java]"]
  node_security["Security configuration"]
  node_jwtfilter["JWT filter<br/>[JwtFilter.java]"]
end

subgraph group_journal["Journal management"]
  node_entryapi["Entry API"]
  node_entryservice["Entry service"]
  node_entrymodel["Journal entry model<br/>[JournalEntry.java]"]
  node_usercontroller["User API"]
end

subgraph group_data["Persistence"]
  node_userrepo["User repository"]
  node_entryrepo["Entry repository"]
  node_usermodel["User model<br/>[User.java]"]
  node_mongo[("MongoDB")]
end

node_person(("User"))

node_person -->|"uses"| node_routes
node_routes -->|"routes to"| node_landing
node_routes -->|"routes to"| node_login
node_routes -->|"routes to"| node_signup
node_routes -->|"routes to"| node_dashboard
node_publicapi -->|"registers users"| node_userservice
node_publicapi -->|"loads identity"| node_userdetails
node_publicapi -->|"generates token"| node_jwt
node_security -->|"configures"| node_jwtfilter
node_entryapi -->|"creates and deletes"| node_entryservice
node_entryapi -->|"loads user entries"| node_userservice
node_entryservice -->|"updates user entries"| node_userservice
node_entryservice -->|"saves and deletes"| node_entryrepo
node_userservice -->|"reads and writes"| node_userrepo
node_entryapi -->|"accepts and returns"| node_entrymodel
node_entryservice -->|"manages"| node_entrymodel
node_userservice -->|"manages"| node_usermodel
node_entryrepo -->|"persists entries"| node_mongo
node_userrepo -->|"persists users"| node_mongo

click node_routes "https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/routes/AppRoutes.jsx"
click node_landing "https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/LandingPage.jsx"
click node_login "https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/Login.jsx"
click node_signup "https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/Signup.jsx"
click node_dashboard "https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/JournalDashboard.jsx"
click node_authcontext "https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/context/AuthContext.jsx"
click node_axios "https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/api/axiosConfig.jsx"
click node_publicapi "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/controller/PublicController.java"
click node_userservice "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/UserService.java"
click node_userdetails "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/UserDetailsServiceImpl.java"
click node_jwt "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/utils/JwtUtil.java"
click node_security "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/config/SpringSecurity.java"
click node_jwtfilter "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/filter/JwtFilter.java"
click node_entryapi "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/controller/JournalEntryControllerV2.java"
click node_entryservice "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/JournalEntryService.java"
click node_entrymodel "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/entity/JournalEntry.java"
click node_usercontroller "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/controller/UserController.java"
click node_userrepo "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/repository/UserRepository.java"
click node_entryrepo "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/repository/JournalEntryRepository.java"
click node_usermodel "https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/entity/User.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_routes,node_landing,node_login,node_signup,node_dashboard,node_authcontext,node_axios,node_person toneBlue
class node_publicapi,node_userservice,node_userdetails,node_jwt,node_security,node_jwtfilter toneAmber
class node_entryapi,node_entryservice,node_entrymodel,node_usercontroller toneMint
class node_userrepo,node_entryrepo,node_usermodel,node_mongo toneRose
```

## Components

### Web client

- [App routes](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/routes/AppRoutes.jsx): `JournalUI/src/routes/AppRoutes.jsx`
- [Landing page](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/LandingPage.jsx): `JournalUI/src/pages/LandingPage.jsx`
- [Login page](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/Login.jsx): `JournalUI/src/pages/Login.jsx`
- [Signup page](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/Signup.jsx): `JournalUI/src/pages/Signup.jsx`
- [Journal dashboard](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/pages/JournalDashboard.jsx): `JournalUI/src/pages/JournalDashboard.jsx`
- [Auth context](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/context/AuthContext.jsx): `JournalUI/src/context/AuthContext.jsx`
- [HTTP client config](https://github.com/ayushsingh07cool/myjournalapp/blob/main/JournalUI/src/api/axiosConfig.jsx): `JournalUI/src/api/axiosConfig.jsx`

### Identity and access

- [Public auth API](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/controller/PublicController.java): `journalApp/src/main/java/com/edigest/journalApp/controller/PublicController.java`
- [User service](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/UserService.java): `journalApp/src/main/java/com/edigest/journalApp/service/UserService.java`
- [User details service](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/UserDetailsServiceImpl.java): `journalApp/src/main/java/com/edigest/journalApp/service/UserDetailsServiceImpl.java`
- [JWT utility](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/utils/JwtUtil.java): `journalApp/src/main/java/com/edigest/journalApp/utils/JwtUtil.java`
- [Security configuration](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/config/SpringSecurity.java): `journalApp/src/main/java/com/edigest/journalApp/config/SpringSecurity.java`
- [JWT filter](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/filter/JwtFilter.java): `journalApp/src/main/java/com/edigest/journalApp/filter/JwtFilter.java`

### Journal management

- [Entry API](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/controller/JournalEntryControllerV2.java): `journalApp/src/main/java/com/edigest/journalApp/controller/JournalEntryControllerV2.java`
- [Entry service](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/service/JournalEntryService.java): `journalApp/src/main/java/com/edigest/journalApp/service/JournalEntryService.java`
- [Journal entry model](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/entity/JournalEntry.java): `journalApp/src/main/java/com/edigest/journalApp/entity/JournalEntry.java`
- [User API](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/controller/UserController.java): `journalApp/src/main/java/com/edigest/journalApp/controller/UserController.java`

### Persistence

- [User repository](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/repository/UserRepository.java): `journalApp/src/main/java/com/edigest/journalApp/repository/UserRepository.java`
- [Entry repository](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/repository/JournalEntryRepository.java): `journalApp/src/main/java/com/edigest/journalApp/repository/JournalEntryRepository.java`
- [User model](https://github.com/ayushsingh07cool/myjournalapp/blob/main/journalApp/src/main/java/com/edigest/journalApp/entity/User.java): `journalApp/src/main/java/com/edigest/journalApp/entity/User.java`
- **MongoDB**

### Other components

- **User**

## Connections

- User → App routes: uses
- App routes → Landing page: routes to
- App routes → Login page: routes to
- App routes → Signup page: routes to
- App routes → Journal dashboard: routes to
- Public auth API → User service: registers users
- Public auth API → User details service: loads identity
- Public auth API → JWT utility: generates token
- Security configuration → JWT filter: configures
- Entry API → Entry service: creates and deletes
- Entry API → User service: loads user entries
- Entry service → User service: updates user entries
- Entry service → Entry repository: saves and deletes
- User service → User repository: reads and writes
- Entry API → Journal entry model: accepts and returns
- Entry service → Journal entry model: manages
- User service → User model: manages
- Entry repository → MongoDB: persists entries
- User repository → MongoDB: persists users
