Skip to content

Celestia is a modern real-time chat application built with microservices architecture. It supports 1:1 and group messaging, user profiles, real-time communication via WebSockets and Redis Pub/Sub, and a PostgreSQL-backed storage system. Firebase is used for profile media, and nginx handles routing and gateway management.

License

Notifications You must be signed in to change notification settings

ArmanKhanTech/Celestia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Celestia

Status: Ongoing

A next-gen chat application.

Explore the docs »
Report a Bug · Request new Feature


Table of Contents
  1. About the Project
  2. Getting Started
  3. Features
  4. Technical Description
  5. Screenshots
  6. Contributing
  7. License
  8. Contact

About the Project

Celestia is a modern real-time chat application built with microservices architecture. It supports 1:1 and group messaging, user profiles, real-time communication via WebSockets and Redis Pub/Sub, and a PostgreSQL-backed storage system. Firebase is used for profile media, and Nginx handles routing and gateway management. Currently under active development.

Built with

  • NextJS
  • TailwindCSS
  • NodeJS
  • ExpressJS
  • PostgreSQL
  • Redis
  • Firebase
  • Nginx

Getting Started

Follow the instructions below to get started.

Prerequisites

  1. NodeJS v21+

  2. PostgresSQL

  3. Redis

  4. nginx

  5. Firebase Account (Spark Plan)

  6. WSL (if developing on Windows)

Installation

  1. Clone this repository

    git clone https://github.com/ArmanKhanTech/Celestia.git
  2. Configure nginx by pasting this file at your-nginx-installation-path/conf

  3. Start PostgreSQL and Redis servers.

  4. Additional Note: Redis isn't natively supported on Windows. You'll have to run it within WSL instead. Follow this tutorial.

  5. Import the PostgreSQL schema by executing the following command in your terminal:

    psql -U postgres -h localhost -p 5432 -W -d celestia -f schema.sql
  6. Paste your own Firebase configs here or just use mine instead.

  7. Execute the following commands from the root dir of this project:

    cd Frontend
    
    npm run start   // Start the NextJS Development Server
    
    cd ../Backend/User
    
    npm run start   // Start User Microservice
    
    cd ../Chat
    
    npm run start   // Start Chat Microservice
    
    cd ../Auth
    
    npm run start   // Start Auth Microservice
  8. Finally, start the nginx web server by executing start nginx. (Note: cd into your-nginx-installation-path first in-case you haven't set the ENV for nginx yet.)

Features

  1. Authentication
  2. Profile Customization: Name, PFP, etc
  3. 1:1 Chatting
  4. M:M Chatting (Groups)
  5. User Lookup (Search users by their usernames)
  6. E2EE (Pending)
  7. Supported Message Format: Text Only
  8. 15+ Themes

Technical Description

  1. Websockets for real-time, bi-directional communication.
  2. Redis Pub/Sub for real-time chatting.
  3. Firebase Storage for storing PFPs.
  4. Firebase Authentication for authenticating users and automated session management.
  5. PostgreSQL is used to store user info and conversations.
  6. Microservices:
     a. Chat
     b. Auth
     c. User
     d. Group (Pending)
  7. Web Server & API Gateway: nginx
  8. Tables:
     a. Users: uid, uname, name, email, date_join, is_active, last_seen, profile_pic_url, status
     b. Conversations: cid, participants
     c. Messages: mid, cid, message, sender, sent_at, receiver, received_at, status
     d. Groups: gid, cid, gname, members, desc, admins, created_at

Screenshots

To be added soon

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

Don't forget to give the project a star!

Thanks again!

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Arman Khan - ak2341776@gmail.com

Project Link - https://github.com/ArmanKhanTech/Celestia

About

Celestia is a modern real-time chat application built with microservices architecture. It supports 1:1 and group messaging, user profiles, real-time communication via WebSockets and Redis Pub/Sub, and a PostgreSQL-backed storage system. Firebase is used for profile media, and nginx handles routing and gateway management.

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •