# dkawale499/irctc--project architecture

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

- Interactive diagram: https://gitdiagram.com/dkawale499/irctc--project
- Repository: https://github.com/dkawale499/irctc--project

## Overview

This is a Spring-based railway ticketing API. Users register or authenticate, search train schedules, book tickets, retrieve or cancel them; administrators manage schedules and tickets. The source index and sampled controllers/services support these principal routes, while the authentication excerpts show JWT issuance and password reset. JPA repositories and entities provide persistence. Some links are omitted where implementation was not sampled; the graph preserves the major auth, registration, schedule, and ticketing stages without inferring unshown call chains.

Main entry points: [`src/main/java/com/sts/service/TrainScheduleService.java`](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/TrainScheduleService.java) (Schedule service), [`src/main/java/com/sts/service/LoginService.java`](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/LoginService.java) (Login and reset service), [`src/main/java/com/sts/service/TickerServiceImpl.java`](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/TickerServiceImpl.java) (Ticket service), [`src/main/java/com/sts/Contoller/RestController.java`](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/RestController.java) (Ticket API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API controllers"]
  node_registration_api["Registration API"]
  node_login_api["Login and reset API"]
  node_ticket_api["Ticket API"]
  node_train_api["Train API"]
  node_admin_api["Admin API"]
end

subgraph group_identity["Identity and security"]
  node_registration["Registration service"]
  node_login["Login and reset service<br/>[LoginService.java]"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_jwt_filter["JWT filter"]
  node_security["Security configuration"]
end

subgraph group_rail["Schedules and tickets"]
  node_schedule_service["Schedule service"]
  node_schedule_model["Schedule entity<br/>[TrainSchedule.java]"]
  node_schedule_request["Schedule request"]
  node_ticket_service["Ticket service"]
  node_ticket_model["Ticket entity<br/>[Ticket.java]"]
  node_passenger["Passenger data<br/>[Passenger.java]"]
end

subgraph group_persistence["Persistence"]
  node_account_store[("Account repositories")]
  node_registration_store[("Registration repository")]
  node_reset_store[("Reset-token repository")]
  node_schedule_store[("Schedule repository")]
  node_ticket_store[("Ticket repository")]
end

node_user(("User"))
node_admin(("Administrator"))

node_user -->|"registers through"| node_registration_api
node_registration_api -->|"calls"| node_registration
node_registration -->|"checks and saves"| node_account_store
node_registration -->|"saves"| node_registration_store
node_user -->|"authenticates"| node_login_api
node_login_api -->|"calls"| node_login
node_login -->|"loads and saves"| node_account_store
node_login -->|"manages tokens"| node_reset_store
node_login -->|"issues token"| node_jwt
node_security -->|"configures"| node_jwt_filter
node_jwt_filter -->|"validates claims"| node_jwt
node_user -->|"searches schedules"| node_train_api
node_train_api -->|"calls"| node_schedule_service
node_admin -->|"manages rail data"| node_admin_api
node_admin_api -->|"calls"| node_schedule_service
node_schedule_service -->|"queries and saves"| node_schedule_store
node_schedule_service -->|"builds schedules"| node_schedule_model
node_schedule_service -->|"validates request"| node_schedule_request
node_user -->|"books or manages"| node_ticket_api
node_ticket_api -->|"calls"| node_ticket_service
node_admin_api -->|"calls"| node_ticket_service
node_ticket_service -->|"persists tickets"| node_ticket_store
node_ticket_service -->|"creates tickets"| node_ticket_model
node_ticket_api -->|"accepts booking data"| node_passenger

click node_registration_api "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/RegistrationController.java"
click node_login_api "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/LoginController.java"
click node_ticket_api "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/RestController.java"
click node_train_api "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/TrainController.java"
click node_admin_api "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/AdminController.java"
click node_registration "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/RegistrationService.java"
click node_login "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/LoginService.java"
click node_jwt "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/security/JwtService.java"
click node_jwt_filter "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/security/JwtAuthenticationFilter.java"
click node_security "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/security/SecurityConfig.java"
click node_schedule_service "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/TrainScheduleService.java"
click node_schedule_model "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/train/TrainSchedule.java"
click node_schedule_request "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/train/TrainScheduleRequest.java"
click node_ticket_service "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/TickerServiceImpl.java"
click node_ticket_model "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/binding/Ticket.java"
click node_passenger "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/binding/Passenger.java"
click node_account_store "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/LoginRepository.java"
click node_registration_store "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/RegistrationRepository.java"
click node_reset_store "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/PasswordResetTokenRepository.java"
click node_schedule_store "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/TrainScheduleRepository.java"
click node_ticket_store "https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/TicketRepository.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_registration_api,node_login_api,node_ticket_api,node_train_api,node_admin_api,node_user toneBlue
class node_registration,node_login,node_jwt,node_jwt_filter,node_security toneAmber
class node_schedule_service,node_schedule_model,node_schedule_request,node_ticket_service,node_ticket_model,node_passenger toneMint
class node_account_store,node_registration_store,node_reset_store,node_schedule_store,node_ticket_store toneRose
class node_admin toneIndigo
```

## Components

### API controllers

- [Registration API](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/RegistrationController.java): `src/main/java/com/sts/Contoller/RegistrationController.java`
- [Login and reset API](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/LoginController.java): `src/main/java/com/sts/Contoller/LoginController.java`
- [Ticket API](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/RestController.java): `src/main/java/com/sts/Contoller/RestController.java`
- [Train API](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/TrainController.java): `src/main/java/com/sts/Contoller/TrainController.java`
- [Admin API](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/Contoller/AdminController.java): `src/main/java/com/sts/Contoller/AdminController.java`

### Identity and security

- [Registration service](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/RegistrationService.java): `src/main/java/com/sts/service/RegistrationService.java`
- [Login and reset service](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/LoginService.java): `src/main/java/com/sts/service/LoginService.java`
- [JWT service](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/security/JwtService.java): `src/main/java/com/sts/security/JwtService.java`
- [JWT filter](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/security/JwtAuthenticationFilter.java): `src/main/java/com/sts/security/JwtAuthenticationFilter.java`
- [Security configuration](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/security/SecurityConfig.java): `src/main/java/com/sts/security/SecurityConfig.java`

### Schedules and tickets

- [Schedule service](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/TrainScheduleService.java): `src/main/java/com/sts/service/TrainScheduleService.java`
- [Schedule entity](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/train/TrainSchedule.java): `src/main/java/com/sts/train/TrainSchedule.java`
- [Schedule request](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/train/TrainScheduleRequest.java): `src/main/java/com/sts/train/TrainScheduleRequest.java`
- [Ticket service](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/service/TickerServiceImpl.java): `src/main/java/com/sts/service/TickerServiceImpl.java`
- [Ticket entity](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/binding/Ticket.java): `src/main/java/com/sts/binding/Ticket.java`
- [Passenger data](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/binding/Passenger.java): `src/main/java/com/sts/binding/Passenger.java`

### Persistence

- [Account repositories](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/LoginRepository.java): `src/main/java/com/sts/repo/LoginRepository.java`
- [Registration repository](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/RegistrationRepository.java): `src/main/java/com/sts/repo/RegistrationRepository.java`
- [Reset-token repository](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/PasswordResetTokenRepository.java): `src/main/java/com/sts/repo/PasswordResetTokenRepository.java`
- [Schedule repository](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/TrainScheduleRepository.java): `src/main/java/com/sts/repo/TrainScheduleRepository.java`
- [Ticket repository](https://github.com/dkawale499/irctc--project/blob/main/src/main/java/com/sts/repo/TicketRepository.java): `src/main/java/com/sts/repo/TicketRepository.java`

### Other components

- **User**
- **Administrator**

## Connections

- User → Registration API: registers through (evidence: `src/main/java/com/sts/Contoller/RegistrationController.java`)
- Registration API → Registration service: calls (evidence: `src/main/java/com/sts/Contoller/RegistrationController.java`)
- Registration service → Account repositories: checks and saves (evidence: `src/main/java/com/sts/service/RegistrationService.java`)
- Registration service → Registration repository: saves (evidence: `src/main/java/com/sts/service/RegistrationService.java`)
- User → Login and reset API: authenticates (evidence: `src/main/java/com/sts/Contoller/LoginController.java`)
- Login and reset API → Login and reset service: calls (evidence: `src/main/java/com/sts/Contoller/LoginController.java`)
- Login and reset service → Account repositories: loads and saves (evidence: `src/main/java/com/sts/service/LoginService.java`)
- Login and reset service → Reset-token repository: manages tokens (evidence: `src/main/java/com/sts/service/LoginService.java`)
- Login and reset service → JWT service: issues token (evidence: `src/main/java/com/sts/service/LoginService.java`)
- Security configuration → JWT filter: configures (evidence: `src/main/java/com/sts/security/SecurityConfig.java`)
- JWT filter → JWT service: validates claims (evidence: `src/main/java/com/sts/security/JwtAuthenticationFilter.java`)
- User → Train API: searches schedules (evidence: `src/main/java/com/sts/Contoller/TrainController.java`)
- Train API → Schedule service: calls (evidence: `src/main/java/com/sts/Contoller/TrainController.java`)
- Administrator → Admin API: manages rail data (evidence: `src/main/java/com/sts/Contoller/AdminController.java`)
- Admin API → Schedule service: calls (evidence: `src/main/java/com/sts/Contoller/AdminController.java`)
- Schedule service → Schedule repository: queries and saves (evidence: `src/main/java/com/sts/service/TrainScheduleService.java`)
- Schedule service → Schedule entity: builds schedules (evidence: `src/main/java/com/sts/service/TrainScheduleService.java`)
- Schedule service → Schedule request: validates request (evidence: `src/main/java/com/sts/service/TrainScheduleService.java`)
- User → Ticket API: books or manages (evidence: `src/main/java/com/sts/Contoller/RestController.java`)
- Ticket API → Ticket service: calls (evidence: `src/main/java/com/sts/Contoller/RestController.java`)
- Admin API → Ticket service: calls (evidence: `src/main/java/com/sts/Contoller/AdminController.java`)
- Ticket service → Ticket repository: persists tickets (evidence: `src/main/java/com/sts/service/TickerServiceImpl.java`)
- Ticket service → Ticket entity: creates tickets (evidence: `src/main/java/com/sts/service/TickerServiceImpl.java`)
- Ticket API → Passenger data: accepts booking data (evidence: `src/main/java/com/sts/Contoller/RestController.java`)
