# srinvitha/utube architecture

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

## Overview

UTube is a small-scale video-sharing application with a React frontend, a Spring backend, and a separate video-processing worker. The visible user-facing routes cover browsing, search, upload, playback, channels, and account access; backend services and repositories represent account, video, comment, like, and view operations. The sampled code confirms frontend routing, authentication state persistence, service-to-repository calls, and the worker entry point. Other wiring—especially frontend API calls and worker processing internals—is not established by the excerpts and is left out.

Main entry points: [`Frontend/src/App.jsx`](https://github.com/srinvitha/utube/blob/main/Frontend/src/App.jsx) (App routes), [`backend/src/main/java/utube_backend/repository/UserRepository.java`](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/UserRepository.java) (User repository), [`backend/src/main/java/utube_backend/service/AuthService.java`](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/AuthService.java) (Auth service), [`backend/src/main/java/utube_backend/service/UserService.java`](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/UserService.java) (User service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend"]
  node_app["App routes<br/>[App.jsx]"]
  node_auth_context["Auth state<br/>[AuthContext.jsx]"]
  node_home["Home<br/>[Home.jsx]"]
  node_search["Search<br/>[Search.jsx]"]
  node_login["Login<br/>[Login.jsx]"]
  node_register["Register<br/>[Register.jsx]"]
  node_upload["Upload<br/>[Upload.jsx]"]
  node_watch["Watch<br/>[Watch.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_channel["Channel<br/>[Channel.jsx]"]
  node_videos_api["Video API client<br/>[videos.js]"]
  node_auth_api["Auth API client<br/>[auth.js]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_backend["Backend"]
  node_backend_app["Backend app"]
  node_auth_service["Auth service<br/>[AuthService.java]"]
  node_user_service["User service<br/>[UserService.java]"]
  node_video_service["Video service<br/>[VideoService.java]"]
  node_comment_service["Comment service"]
  node_like_service["Like service<br/>[LikeService.java]"]
  node_view_service["View service<br/>[ViewService.java]"]
  node_user_repo["User repository"]
  node_video_repo["Video repository"]
  node_comment_repo["Comment repository"]
  node_like_repo["Like repository"]
  node_view_repo["View repository"]
end

subgraph group_worker["Video processing"]
  node_worker_entry["Worker entry<br/>[main.py]"]
  node_processor["Video processor<br/>[processor.py]"]
end

node_viewer(("Viewer"))

node_viewer -->|"uses"| node_app
node_app -->|"provides auth"| node_auth_context
node_app -->|"routes"| node_home
node_app -->|"routes"| node_search
node_app -->|"routes"| node_login
node_app -->|"routes"| node_register
node_app -->|"routes"| node_upload
node_app -->|"routes"| node_watch
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_channel
node_auth_service -->|"reads and writes"| node_user_repo
node_user_service -->|"reads and writes"| node_user_repo
node_video_service -->|"reads and writes"| node_video_repo
node_comment_service -->|"reads and writes"| node_comment_repo
node_like_service -->|"reads and writes"| node_like_repo
node_view_service -->|"reads and writes"| node_view_repo
node_worker_entry -->|"processes video"| node_processor

click node_app "https://github.com/srinvitha/utube/blob/main/Frontend/src/App.jsx"
click node_auth_context "https://github.com/srinvitha/utube/blob/main/Frontend/src/context/AuthContext.jsx"
click node_home "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Home.jsx"
click node_search "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Search.jsx"
click node_login "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Login.jsx"
click node_register "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Register.jsx"
click node_upload "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Upload.jsx"
click node_watch "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Watch.jsx"
click node_dashboard "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Dashboard.jsx"
click node_channel "https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Channel.jsx"
click node_videos_api "https://github.com/srinvitha/utube/blob/main/Frontend/src/services/videos.js"
click node_auth_api "https://github.com/srinvitha/utube/blob/main/Frontend/src/services/auth.js"
click node_api_client "https://github.com/srinvitha/utube/blob/main/Frontend/src/services/api.js"
click node_backend_app "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/UtubeBackendApplication.java"
click node_auth_service "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/AuthService.java"
click node_user_service "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/UserService.java"
click node_video_service "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/VideoService.java"
click node_comment_service "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/CommentService.java"
click node_like_service "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/LikeService.java"
click node_view_service "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/ViewService.java"
click node_user_repo "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/UserRepository.java"
click node_video_repo "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/VideoRepository.java"
click node_comment_repo "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/CommentRepository.java"
click node_like_repo "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/LikeRepository.java"
click node_view_repo "https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/ViewRepository.java"
click node_worker_entry "https://github.com/srinvitha/utube/blob/main/video-worker/main.py"
click node_processor "https://github.com/srinvitha/utube/blob/main/video-worker/src/processor.py"

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,node_auth_context,node_home,node_search,node_login,node_register,node_upload,node_watch,node_dashboard,node_channel,node_videos_api,node_auth_api,node_api_client,node_viewer toneBlue
class node_backend_app,node_auth_service,node_user_service,node_video_service,node_comment_service,node_like_service,node_view_service,node_user_repo,node_video_repo,node_comment_repo,node_like_repo,node_view_repo toneAmber
class node_worker_entry,node_processor toneMint
```

## Components

### Frontend

- [App routes](https://github.com/srinvitha/utube/blob/main/Frontend/src/App.jsx): `Frontend/src/App.jsx`
- [Auth state](https://github.com/srinvitha/utube/blob/main/Frontend/src/context/AuthContext.jsx): `Frontend/src/context/AuthContext.jsx`
- [Home](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Home.jsx): `Frontend/src/pages/Home.jsx`
- [Search](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Search.jsx): `Frontend/src/pages/Search.jsx`
- [Login](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Login.jsx): `Frontend/src/pages/Login.jsx`
- [Register](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Register.jsx): `Frontend/src/pages/Register.jsx`
- [Upload](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Upload.jsx): `Frontend/src/pages/Upload.jsx`
- [Watch](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Watch.jsx): `Frontend/src/pages/Watch.jsx`
- [Dashboard](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Dashboard.jsx): `Frontend/src/pages/Dashboard.jsx`
- [Channel](https://github.com/srinvitha/utube/blob/main/Frontend/src/pages/Channel.jsx): `Frontend/src/pages/Channel.jsx`
- [Video API client](https://github.com/srinvitha/utube/blob/main/Frontend/src/services/videos.js): `Frontend/src/services/videos.js`
- [Auth API client](https://github.com/srinvitha/utube/blob/main/Frontend/src/services/auth.js): `Frontend/src/services/auth.js`
- [API client](https://github.com/srinvitha/utube/blob/main/Frontend/src/services/api.js): `Frontend/src/services/api.js`

### Backend

- [Backend app](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/UtubeBackendApplication.java): `backend/src/main/java/utube_backend/UtubeBackendApplication.java`
- [Auth service](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/AuthService.java): `backend/src/main/java/utube_backend/service/AuthService.java`
- [User service](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/UserService.java): `backend/src/main/java/utube_backend/service/UserService.java`
- [Video service](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/VideoService.java): `backend/src/main/java/utube_backend/service/VideoService.java`
- [Comment service](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/CommentService.java): `backend/src/main/java/utube_backend/service/CommentService.java`
- [Like service](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/LikeService.java): `backend/src/main/java/utube_backend/service/LikeService.java`
- [View service](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/service/ViewService.java): `backend/src/main/java/utube_backend/service/ViewService.java`
- [User repository](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/UserRepository.java): `backend/src/main/java/utube_backend/repository/UserRepository.java`
- [Video repository](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/VideoRepository.java): `backend/src/main/java/utube_backend/repository/VideoRepository.java`
- [Comment repository](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/CommentRepository.java): `backend/src/main/java/utube_backend/repository/CommentRepository.java`
- [Like repository](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/LikeRepository.java): `backend/src/main/java/utube_backend/repository/LikeRepository.java`
- [View repository](https://github.com/srinvitha/utube/blob/main/backend/src/main/java/utube_backend/repository/ViewRepository.java): `backend/src/main/java/utube_backend/repository/ViewRepository.java`

### Video processing

- [Worker entry](https://github.com/srinvitha/utube/blob/main/video-worker/main.py): `video-worker/main.py`
- [Video processor](https://github.com/srinvitha/utube/blob/main/video-worker/src/processor.py): `video-worker/src/processor.py`

### Other components

- **Viewer**

## Connections

- Viewer → App routes: uses
- App routes → Auth state: provides auth
- App routes → Home: routes
- App routes → Search: routes
- App routes → Login: routes
- App routes → Register: routes
- App routes → Upload: routes
- App routes → Watch: routes
- App routes → Dashboard: routes
- App routes → Channel: routes
- Auth service → User repository: reads and writes
- User service → User repository: reads and writes
- Video service → Video repository: reads and writes
- Comment service → Comment repository: reads and writes
- Like service → Like repository: reads and writes
- View service → View repository: reads and writes
- Worker entry → Video processor: processes video
