Skip to content

trans-talk/transtalk_server

Repository files navigation

🚀 Transtalk-Server

transtalk-server is the backend server for a real-time chat application, focusing on communication features.

It provides core functionalities such as user authentication and authorization, real-time message transmission, data management, and external service integration, ensuring a stable and scalable service.


🔗 Deployment Link

Transtalk Live Demo


🧱 Tech Stack

Back-end




📦 Package Structure

java

transtalk-server/
├── src/main/java/com/wootech/transtalk
│   ├── client/                    # External API Client
│   ├── config/                    # Configuration
│   ├── controller/                # REST API Controller
│   ├── dto/                       # Data Transfer Object
│   ├── entity/                    # Entity
│   ├── interceptor/               # Interceptor
│   ├── repository/                # Repository
│   ├── exception/                 # Exception Handling
│   ├── service/                   # Business Logic
│   └── TranstalkApplication       # Main Class
├── src/main/resources/
│   ├── application.properties     # Configuration File
└── build.gradle

✨ Key Features

  • Real-time Chat System: Real-time message sending and receiving using WebSocket and STOMP.
  • User Authentication and Authorization: Secure access control using Spring Security and JWT-based token management.
  • User Management: Account management functions such as user signup, login, and withdrawal.
  • Database Management: Data storage and management via MySQL (initial JPA) and MongoDB (chat data migration).
  • DeepL API Integration: Integration with AI-based features (e.g., translation services) (inference).
  • Automated Deployment: Efficient deployment using Docker and GitHub Actions.
  • Refresh Token Management: Issuance and reissuance of Refresh Tokens using Redis.

🧾 API Documentation

For more detailed API information, please refer to the Notion document below:

Transtalk API Documentation


🔗 ERD (Entity-Relationship Diagram)

The relationships between database tables can be viewed through the ERD below:

Image

Redis Key Design

This section defines the key patterns and purposes for data stored in Redis.

Key Type Key Pattern Description Value Type Expiration Policy
Refresh Token refresh:{userId}:{refreshTokenValue}
(e.g., refresh:user123:abcDEfGHIjkl...)
Stores valid Refresh Tokens for Access Token re-issuance. String Matches Refresh Token's validity (e.g., 2 weeks)
JWT Blacklist (JTI) bl:jti:{jtiValue}
(e.g., bl:jti:a1b2c3d4e5f6...)
Stores JTI of invalidated Access Tokens to prevent reuse after logout or compromise. String Matches Access Token's validity (e.g., 30 mins)

Notes:

  • {userId}: Actual user ID.
  • {refreshTokenValue}: The Refresh Token string.
  • {jtiValue}: The jti (JWT ID) claim value from the JWT.

💬 Development Conventions

🚀 Git Flow

This project follows the Git Flow branching strategy.

  • Main
    • Production-ready code.
    • Updated only through merging release or hotfix branches.
    • No direct commits allowed.
  • develop
    • Integration branch for ongoing development.
    • All completed features are merged here before release preparation.
  • feature/
    • For implementing individual features or tasks.
    • Branched from: develop
    • Merged back into: develop via PR
    • Naming: feature/
  • release/
    • For preparing a new production release.
    • Branched from: develop
    • Merged into: main and develop
    • Naming: release/
  • hotfix/
    • For urgent fixes on the production environment.
    • Branched from: develop
    • Merged into: develop
    • Naming: hotfix/

👥 Role Assignment

The main responsibilities for the Transtalk-Server project are as follows:

Name Key Responsibilities
TaeSeon Yoo - Chatroom & Participant Domains: Designed and implemented core structures.
- WebSockets: Set up real-time communication.
- Chat Messaging: Implemented sending and storage using JPA.
- Refactoring & Migration: Led chat message refactoring and migrated from JPA to MongoDB.
- Translation Integration: Integrated external translation services using DeepL API.
- CI/CD: Automated deployment workflows with GitHub Actions.
HoSoo Lee - Authentication & Authorization: Implemented comprehensive authentication and authorization using Spring Security, JWT, Google Social Login, Redis blacklist, and Refresh Token mechanisms.
- WebSocket Integration: Configured JWT and Spring Security settings for secure real-time communication via WebSockets.
- Chat Messaging (MongoDB): Implemented chat message sending, storage, and retrieval by configuring MongoDB.
- Cloud Deployment: Led application deployment utilizing AWS EC2, RDS, and MongoDB Cloud services.

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages