Discord-style Chat App
A real-time chat application mimicking Discord architecture, supporting servers, channels, direct messages, and friend systems, built with Vue 3 + Go.

Project Overview
This is a real-time chat application modeled after Discord, consisting of a frontend (Vue 3) and backend (Go). It supports complete features including servers (Guilds), channels (Rooms), direct messages (DM), and a specific friend system. It uses WebSocket for real-time communication, MongoDB for data storage, and Redis for caching.
Technical Challenges & Solutions
Backend Architecture
This was my first Golang project. With only PHP experience, I was unfamiliar with Golang's ecosystem and best practices, yet I aimed for a high-performance architecture.
Member System
Implementing a secure member system for an SPA.
WebSocket Real-time Communication
Needed to implement a high-performance and stable real-time communication system.
- Hub manages all Clients and Rooms
- Client handles individual user connections
- Room manages message broadcasting within a chat room
Chat Room Design
Handling different types of chat rooms (Channel vs DM).
Frontend Vue State Management
Effectively managing multiple chat rooms, user states, and real-time messages.
Architecture

The frontend uses Vue 3 + TypeScript, while the backend adopts Go + Gin framework with a three-layer architecture (Controller → Service → Repository). WebSocket provides real-time communication, MongoDB stores chat records, and Redis handles data caching.
Learnings
Through this project, I deeply learned WebSocket real-time communication technology, mastered Go language details with Gin framework, and Vue 3 Composition API usage. I gained valuable experience especially in handling complex state management and real-time message broadcasting.