# kingkuys2123/lifewood architecture

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

- Interactive diagram: https://gitdiagram.com/kingkuys2123/lifewood
- Repository: https://github.com/kingkuys2123/lifewood

## Overview

Lifewood is a branded company website and internship recruitment portal. Public visitors browse company and service information, submit applications or contact messages; administrators and users sign in to manage applicants, accounts, profiles, dashboard data, and notifications. The sampled code shows application requests handled by backend controllers and services, plus applicant decision emails and the frontend’s token-refresh behavior. README-listed capabilities such as password recovery and real-time notifications are included, but their full wiring was not sampled.

Main entry points: [`frontend/src/App.jsx`](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/App.jsx) (App Routes), [`backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java`](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java) (Applicant Workflow), [`backend/src/main/java/com/lifewood/lifewood/service/NotificationService.java`](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/NotificationService.java) (Notification Service), [`frontend/src/components/apply/ApplyForm.jsx`](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/components/apply/ApplyForm.jsx) (Application Form)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public Website"]
  node_public_pages["Public Pages"]
  node_apply_form["Application Form<br/>[ApplyForm.jsx]"]
  node_contact_form["Contact Form<br/>[ContactForm.jsx]"]
end

subgraph group_portal["Portal Experience"]
  node_app_router["App Routes<br/>[App.jsx]"]
  node_login["Login<br/>[LoginPage.jsx]"]
  node_dashboard["Admin Dashboard<br/>[DashboardPage.jsx]"]
  node_applicants_ui["Applicant Management<br/>[ApplicantsPage.jsx]"]
  node_profile_ui["Profile Management"]
  node_users_ui["User Management<br/>[UsersPage.jsx]"]
  node_http["HTTP Client<br/>[httpClient.js]"]
  node_notification_hook["Notification Client"]
  node_socket["Notification Socket"]
end

subgraph group_recruitment["Recruitment Backend"]
  node_applicant_controller["Applicant API"]
  node_applicant_service["Applicant Workflow"]
  node_applicant_store[("Applicant Records")]
end

subgraph group_identity["Identity and Users"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_user_service["User Management API<br/>[UserService.java]"]
  node_user_store[("User Records")]
end

subgraph group_messaging["Notifications and Messaging"]
  node_notification_api["Notification API"]
  node_notification_service["Notification Service"]
  node_notification_store[("Notification Records")]
  node_email_service["Email Delivery<br/>[EmailService.java]"]
end

node_visitor(("Visitor"))
node_emailjs{{"EmailJS"}}
node_mysql[("MySQL")]

node_visitor -->|"browses"| node_public_pages
node_visitor -->|"submits application"| node_apply_form
node_visitor -->|"sends inquiry"| node_contact_form
node_app_router -->|"routes to"| node_public_pages
node_app_router -->|"routes to"| node_login
node_app_router -->|"routes to"| node_dashboard
node_app_router -->|"routes to"| node_applicants_ui
node_app_router -->|"routes to"| node_profile_ui
node_app_router -->|"routes to"| node_users_ui
node_apply_form -.->|"submits to"| node_applicant_controller
node_applicant_controller -->|"invokes"| node_applicant_service
node_applicant_service -->|"reads and writes"| node_applicant_store
node_applicant_service -->|"sends decisions"| node_email_service
node_login -.->|"uses API"| node_http
node_http -->|"refreshes tokens"| node_auth_service
node_auth_service -->|"looks up users"| node_user_store
node_applicant_service -->|"creates decisions"| node_notification_service
node_notification_api -->|"invokes"| node_notification_service
node_notification_service -->|"reads and writes"| node_notification_store
node_notification_hook -->|"uses"| node_socket
node_email_service -->|"sends email"| node_emailjs
node_applicant_store -.->|"persists in"| node_mysql
node_user_store -.->|"persists in"| node_mysql
node_notification_store -.->|"persists in"| node_mysql

click node_public_pages "https://github.com/kingkuys2123/lifewood/tree/master/frontend/src/pages/landing-page"
click node_apply_form "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/components/apply/ApplyForm.jsx"
click node_contact_form "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/components/contact-us/ContactForm.jsx"
click node_app_router "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/App.jsx"
click node_login "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/auth/LoginPage.jsx"
click node_dashboard "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/dashboard/DashboardPage.jsx"
click node_applicants_ui "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/applicants/ApplicantsPage.jsx"
click node_profile_ui "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/profile/ProfileEditPage.jsx"
click node_users_ui "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/users/UsersPage.jsx"
click node_http "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/services/api/httpClient.js"
click node_applicant_controller "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/controller/ApplicantController.java"
click node_applicant_service "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java"
click node_applicant_store "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/repository/ApplicantRepository.java"
click node_auth_service "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/AuthService.java"
click node_user_service "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/UserService.java"
click node_user_store "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/repository/UserRepository.java"
click node_notification_api "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/controller/NotificationController.java"
click node_notification_service "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/NotificationService.java"
click node_notification_store "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/repository/NotificationRepository.java"
click node_email_service "https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/EmailService.java"
click node_notification_hook "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/hooks/useNotifications.js"
click node_socket "https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/services/websocket/notificationSocket.js"

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_public_pages,node_apply_form,node_contact_form toneBlue
class node_app_router,node_login,node_dashboard,node_applicants_ui,node_profile_ui,node_users_ui,node_http,node_notification_hook,node_socket,node_mysql toneAmber
class node_applicant_controller,node_applicant_service,node_applicant_store toneMint
class node_auth_service,node_user_service,node_user_store toneRose
class node_notification_api,node_notification_service,node_notification_store,node_email_service,node_visitor,node_emailjs toneIndigo
```

## Components

### Public Website

- [Public Pages](https://github.com/kingkuys2123/lifewood/tree/master/frontend/src/pages/landing-page): `frontend/src/pages/landing-page`
- [Application Form](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/components/apply/ApplyForm.jsx): `frontend/src/components/apply/ApplyForm.jsx`
- [Contact Form](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/components/contact-us/ContactForm.jsx): `frontend/src/components/contact-us/ContactForm.jsx`

### Portal Experience

- [App Routes](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Login](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/auth/LoginPage.jsx): `frontend/src/pages/auth/LoginPage.jsx`
- [Admin Dashboard](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/dashboard/DashboardPage.jsx): `frontend/src/pages/dashboard/DashboardPage.jsx`
- [Applicant Management](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/applicants/ApplicantsPage.jsx): `frontend/src/pages/applicants/ApplicantsPage.jsx`
- [Profile Management](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/profile/ProfileEditPage.jsx): `frontend/src/pages/profile/ProfileEditPage.jsx`
- [User Management](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/pages/users/UsersPage.jsx): `frontend/src/pages/users/UsersPage.jsx`
- [HTTP Client](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/services/api/httpClient.js): `frontend/src/services/api/httpClient.js`
- [Notification Client](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/hooks/useNotifications.js): `frontend/src/hooks/useNotifications.js`
- [Notification Socket](https://github.com/kingkuys2123/lifewood/blob/master/frontend/src/services/websocket/notificationSocket.js): `frontend/src/services/websocket/notificationSocket.js`

### Recruitment Backend

- [Applicant API](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/controller/ApplicantController.java): `backend/src/main/java/com/lifewood/lifewood/controller/ApplicantController.java`
- [Applicant Workflow](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java): `backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java`
- [Applicant Records](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/repository/ApplicantRepository.java): `backend/src/main/java/com/lifewood/lifewood/repository/ApplicantRepository.java`

### Identity and Users

- [Authentication](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/AuthService.java): `backend/src/main/java/com/lifewood/lifewood/service/AuthService.java`
- [User Management API](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/UserService.java): `backend/src/main/java/com/lifewood/lifewood/service/UserService.java`
- [User Records](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/repository/UserRepository.java): `backend/src/main/java/com/lifewood/lifewood/repository/UserRepository.java`

### Notifications and Messaging

- [Notification API](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/controller/NotificationController.java): `backend/src/main/java/com/lifewood/lifewood/controller/NotificationController.java`
- [Notification Service](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/NotificationService.java): `backend/src/main/java/com/lifewood/lifewood/service/NotificationService.java`
- [Notification Records](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/repository/NotificationRepository.java): `backend/src/main/java/com/lifewood/lifewood/repository/NotificationRepository.java`
- [Email Delivery](https://github.com/kingkuys2123/lifewood/blob/master/backend/src/main/java/com/lifewood/lifewood/service/EmailService.java): `backend/src/main/java/com/lifewood/lifewood/service/EmailService.java`

### Other components

- **Visitor**
- **EmailJS**
- **MySQL**

## Connections

- Visitor → Public Pages: browses
- Visitor → Application Form: submits application
- Visitor → Contact Form: sends inquiry
- App Routes → Public Pages: routes to (evidence: `frontend/src/App.jsx`)
- App Routes → Login: routes to (evidence: `frontend/src/App.jsx`)
- App Routes → Admin Dashboard: routes to (evidence: `frontend/src/App.jsx`)
- App Routes → Applicant Management: routes to (evidence: `frontend/src/App.jsx`)
- App Routes → Profile Management: routes to (evidence: `frontend/src/App.jsx`)
- App Routes → User Management: routes to (evidence: `frontend/src/App.jsx`)
- Application Form → Applicant API: submits to
- Applicant API → Applicant Workflow: invokes (evidence: `backend/src/main/java/com/lifewood/lifewood/controller/ApplicantController.java`)
- Applicant Workflow → Applicant Records: reads and writes (evidence: `backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java`)
- Applicant Workflow → Email Delivery: sends decisions (evidence: `backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java`)
- Login → HTTP Client: uses API
- HTTP Client → Authentication: refreshes tokens (evidence: `frontend/src/services/api/httpClient.js`)
- Authentication → User Records: looks up users (evidence: `backend/src/main/java/com/lifewood/lifewood/service/AuthService.java`)
- Applicant Workflow → Notification Service: creates decisions (evidence: `backend/src/main/java/com/lifewood/lifewood/service/ApplicantService.java`)
- Notification API → Notification Service: invokes (evidence: `backend/src/main/java/com/lifewood/lifewood/controller/NotificationController.java`)
- Notification Service → Notification Records: reads and writes (evidence: `backend/src/main/java/com/lifewood/lifewood/service/NotificationService.java`)
- Notification Client → Notification Socket: uses (evidence: `frontend/src/hooks/useNotifications.js`)
- Email Delivery → EmailJS: sends email (evidence: `backend/src/main/java/com/lifewood/lifewood/service/EmailService.java`)
- Applicant Records → MySQL: persists in
- User Records → MySQL: persists in
- Notification Records → MySQL: persists in
