# anufrievalex2006/my-notes-app architecture

> Architecture diagram of the GitHub repository anufrievalex2006/my-notes-app, 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/anufrievalex2006/my-notes-app
- Repository: https://github.com/anufrievalex2006/my-notes-app

## Overview

This is a full-stack notes application: users register or log in, create and manage notes, browse public or shared notes, and grant or revoke access; they can also update their profiles. The frontend routes and feature modules lead into entity data hooks and API clients, while the Spring backend exposes controllers, applies service-layer rules, and persists through repositories. The sampled source confirms note, authentication, profile, and access-management behavior; some frontend API-to-backend wiring and unsampled controller/service details are inferred only from the module structure, so uncertain internal links are omitted.

Main entry points: [`frontend/src/shared/api/axiosInstance.ts`](https://github.com/anufrievalex2006/my-notes-app/blob/main/frontend/src/shared/api/axiosInstance.ts) (HTTP client), [`frontend/src/widgets`](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/widgets) (Page widgets), [`backend/src/main/java/com/notesapp/backend/repos`](https://github.com/anufrievalex2006/my-notes-app/tree/main/backend/src/main/java/com/notesapp/backend/repos) (Data repositories), [`backend/src/main/java/com/notesapp/backend/services/AuthService.java`](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/AuthService.java) (Authentication service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend_ui["Frontend experience"]
  node_app_routes["App routes"]
  node_views["Page views"]
  node_widgets["Page widgets"]
  node_auth_features["Auth features"]
  node_note_features["Note features"]
  node_profile_features["Profile features"]
end

subgraph group_frontend_data["Frontend data"]
  node_query_provider["Query provider<br/>[QueryProvider.tsx]"]
  node_note_hooks["Note data hooks"]
  node_user_hooks["User data hooks"]
  node_note_api["Note API clients"]
  node_user_api["User API clients"]
  node_http_client["HTTP client<br/>[axiosInstance.ts]"]
end

subgraph group_backend_api["Backend application"]
  node_auth_controller["Auth controller"]
  node_note_controller["Note controller"]
  node_access_controller["Access controller"]
  node_user_controller["User controller"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_note_service["Note service<br/>[NoteService.java]"]
  node_access_service["Access service"]
  node_user_service["User service<br/>[UserService.java]"]
end

subgraph group_backend_state["Backend state and security"]
  node_jwt_service["JWT service<br/>[JwtService.java]"]
  node_jwt_filter["JWT filter<br/>[JwtAuthFilter.java]"]
  node_repositories["Data repositories"]
  node_database[("Application database")]
end

node_user(("User"))

node_user -->|"uses"| node_app_routes
node_app_routes -->|"renders"| node_views
node_views -->|"composes"| node_widgets
node_widgets -->|"loads notes"| node_note_hooks
node_widgets -->|"offers auth"| node_auth_features
node_widgets -->|"offers editing"| node_note_features
node_widgets -->|"offers profile"| node_profile_features
node_query_provider -->|"provides queries"| node_note_hooks
node_note_hooks -->|"requests notes"| node_note_api
node_user_hooks -->|"requests users"| node_user_api
node_note_api -->|"sends requests"| node_http_client
node_user_api -->|"sends requests"| node_http_client
node_http_client -->|"HTTP API"| node_auth_controller
node_http_client -->|"HTTP API"| node_note_controller
node_http_client -->|"HTTP API"| node_access_controller
node_http_client -->|"HTTP API"| node_user_controller
node_auth_controller -->|"delegates auth"| node_auth_service
node_note_controller -->|"delegates notes"| node_note_service
node_access_controller -->|"delegates access"| node_access_service
node_user_controller -->|"delegates users"| node_user_service
node_auth_service -->|"reads and writes"| node_repositories
node_auth_service -->|"generates token"| node_jwt_service
node_note_service -->|"reads and writes"| node_repositories
node_access_service -->|"reads and writes"| node_repositories
node_user_service -->|"reads and writes"| node_repositories
node_jwt_filter -->|"validates token"| node_jwt_service
node_repositories -->|"persists data"| node_database

click node_app_routes "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/app"
click node_views "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/views"
click node_widgets "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/widgets"
click node_auth_features "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/features/auth-login"
click node_note_features "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/features/note-create"
click node_profile_features "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/features/user-update"
click node_query_provider "https://github.com/anufrievalex2006/my-notes-app/blob/main/frontend/src/shared/providers/QueryProvider.tsx"
click node_note_hooks "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/note/model"
click node_user_hooks "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/user/model"
click node_note_api "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/note/api"
click node_user_api "https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/user/api"
click node_http_client "https://github.com/anufrievalex2006/my-notes-app/blob/main/frontend/src/shared/api/axiosInstance.ts"
click node_auth_controller "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/AuthController.java"
click node_note_controller "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/NoteController.java"
click node_access_controller "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/NoteAccessController.java"
click node_user_controller "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/UserController.java"
click node_auth_service "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/AuthService.java"
click node_note_service "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/NoteService.java"
click node_access_service "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/NoteAccessService.java"
click node_user_service "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/UserService.java"
click node_jwt_service "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/security/JwtService.java"
click node_jwt_filter "https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/security/JwtAuthFilter.java"
click node_repositories "https://github.com/anufrievalex2006/my-notes-app/tree/main/backend/src/main/java/com/notesapp/backend/repos"

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_app_routes,node_views,node_widgets,node_auth_features,node_note_features,node_profile_features,node_user toneBlue
class node_query_provider,node_note_hooks,node_user_hooks,node_note_api,node_user_api,node_http_client toneAmber
class node_auth_controller,node_note_controller,node_access_controller,node_user_controller,node_auth_service,node_note_service,node_access_service,node_user_service toneMint
class node_jwt_service,node_jwt_filter,node_repositories,node_database toneRose
```

## Components

### Frontend experience

- [App routes](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/app): `frontend/src/app`
- [Page views](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/views): `frontend/src/views`
- [Page widgets](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/widgets): `frontend/src/widgets`
- [Auth features](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/features/auth-login): `frontend/src/features/auth-login`
- [Note features](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/features/note-create): `frontend/src/features/note-create`
- [Profile features](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/features/user-update): `frontend/src/features/user-update`

### Frontend data

- [Query provider](https://github.com/anufrievalex2006/my-notes-app/blob/main/frontend/src/shared/providers/QueryProvider.tsx): `frontend/src/shared/providers/QueryProvider.tsx`
- [Note data hooks](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/note/model): `frontend/src/entities/note/model`
- [User data hooks](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/user/model): `frontend/src/entities/user/model`
- [Note API clients](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/note/api): `frontend/src/entities/note/api`
- [User API clients](https://github.com/anufrievalex2006/my-notes-app/tree/main/frontend/src/entities/user/api): `frontend/src/entities/user/api`
- [HTTP client](https://github.com/anufrievalex2006/my-notes-app/blob/main/frontend/src/shared/api/axiosInstance.ts): `frontend/src/shared/api/axiosInstance.ts`

### Backend application

- [Auth controller](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/AuthController.java): `backend/src/main/java/com/notesapp/backend/controllers/AuthController.java`
- [Note controller](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/NoteController.java): `backend/src/main/java/com/notesapp/backend/controllers/NoteController.java`
- [Access controller](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/NoteAccessController.java): `backend/src/main/java/com/notesapp/backend/controllers/NoteAccessController.java`
- [User controller](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/controllers/UserController.java): `backend/src/main/java/com/notesapp/backend/controllers/UserController.java`
- [Authentication service](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/AuthService.java): `backend/src/main/java/com/notesapp/backend/services/AuthService.java`
- [Note service](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/NoteService.java): `backend/src/main/java/com/notesapp/backend/services/NoteService.java`
- [Access service](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/NoteAccessService.java): `backend/src/main/java/com/notesapp/backend/services/NoteAccessService.java`
- [User service](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/services/UserService.java): `backend/src/main/java/com/notesapp/backend/services/UserService.java`

### Backend state and security

- [JWT service](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/security/JwtService.java): `backend/src/main/java/com/notesapp/backend/security/JwtService.java`
- [JWT filter](https://github.com/anufrievalex2006/my-notes-app/blob/main/backend/src/main/java/com/notesapp/backend/security/JwtAuthFilter.java): `backend/src/main/java/com/notesapp/backend/security/JwtAuthFilter.java`
- [Data repositories](https://github.com/anufrievalex2006/my-notes-app/tree/main/backend/src/main/java/com/notesapp/backend/repos): `backend/src/main/java/com/notesapp/backend/repos`
- **Application database**

### Other components

- **User**

## Connections

- User → App routes: uses
- App routes → Page views: renders
- Page views → Page widgets: composes
- Page widgets → Note data hooks: loads notes
- Page widgets → Auth features: offers auth
- Page widgets → Note features: offers editing
- Page widgets → Profile features: offers profile
- Query provider → Note data hooks: provides queries
- Note data hooks → Note API clients: requests notes
- User data hooks → User API clients: requests users
- Note API clients → HTTP client: sends requests
- User API clients → HTTP client: sends requests
- HTTP client → Auth controller: HTTP API
- HTTP client → Note controller: HTTP API
- HTTP client → Access controller: HTTP API
- HTTP client → User controller: HTTP API
- Auth controller → Authentication service: delegates auth
- Note controller → Note service: delegates notes
- Access controller → Access service: delegates access
- User controller → User service: delegates users
- Authentication service → Data repositories: reads and writes
- Authentication service → JWT service: generates token
- Note service → Data repositories: reads and writes
- Access service → Data repositories: reads and writes
- User service → Data repositories: reads and writes
- JWT filter → JWT service: validates token
- Data repositories → Application database: persists data
