Skip to content

GinChat is a simple and efficient real-time chat service

Notifications You must be signed in to change notification settings

Ali-darzii/GinChat

Repository files navigation

GinChat

GinChat Docker Redis PostgreSQL

A real-time chat application built using the Gin framework (Go), PostgreSQL, and Redis.

GinChat is a web chat and efficient real-time chat service leveraging the Go Gin web framework, Redis for message caching, and PostgreSQL as the database. The application is containerized using Docker for easy deployment.

Table of Contents


Features

  • ❤️ Technologies in Use: Gorilla WebSocket, GORM, Swagger, concurrency, JWT, OTP, microservice architecture.
  • 💬 Chat Features: Safe and private chats where you can send text, images, and voice messages.
  • 🟢 Real-Time Communication: Enables instant messaging with Redis.
  • Gin Framework: Lightweight and high-performance Go framework.
  • 🔐 Authentication: Secure user authentication with JWT and OTP via phone numbers.
  • 🛠 Dockerized: All services (GinChat, PostgreSQL, Redis) run in isolated containers.
  • 💾 Persistence: PostgreSQL for persistent message storage and Redis for in-memory caching to reduce load on PostgreSQL.
  • 📊 Scalable: Easily scalable with Docker and Redis.

Tech Stack

  • Language: Go (Gin framework)
  • Database: PostgreSQL
  • Cache: Redis
  • Containerization: Docker
  • Frontend: Currently, there is no UI.

Setup and Installation

Prerequisites

  • Go (v1.22+)
  • Docker (Latest version)
  • Docker Compose (v2+)

Run Using Docker Compose

  1. Clone the repository:
    git clone https://github.com/Ali-darzii/GinChat.git
  2. Go to the main directory :
    cd GinChat
  3. Run with Docker Compose :
    docker compose up -d --build
  4. If you have an older version of Docker Compose :
    docker-compose up -d --build
    
  5. For API Endpoints check : Swagger Documentation

About

GinChat is a simple and efficient real-time chat service

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published