Skip to content

real-time collaborative document editing platform, inspired by Google Docs. Users can create, edit, and share documents with real-time

License

Notifications You must be signed in to change notification settings

QHegazy/docs-backend

Repository files navigation

Project Documentation

Overview

This project is a modern web application that leverages multiple technologies to provide a seamless user experience. It integrates MongoDB for document storage, Socket.IO for real-time communication with an Express backend, and gRPC for efficient inter-service communication with a Gin-based backend in Go. The application is designed to manage user authentication, provide real-time updates, and facilitate smooth interactions across different components.

Technologies Used

  • TypeScript: A superset of JavaScript that adds static types, enhancing code quality and maintainability for the backend.
  • MongoDB: A NoSQL database for storing and retrieving document-based content.
  • PostgreSQL: A relational database for handling structured data and complex queries.
  • Redis: An in-memory data structure store is used for session management and caching.
  • Go (Gin): The backend framework for user authentication and management.
  • Node.js (Express): The framework for real-time backend communication.
  • Socket.IO: Enables real-time, bidirectional communication between clients and servers.
  • gRPC: A high-performance RPC framework is used for efficient communication between services.
  • Docker: This is for containerizing the application and managing dependencies.
  • Nginx: Acts as a reverse proxy to handle incoming requests and route them to the appropriate service.

Getting Started

These instructions will help you set up a copy of the project on your local machine for development and testing purposes.

MakeFile

Run build make command with tests

make all

Build the application

make build
  • Docker and Docker-compose (for containerized setup)
  • Node.js (for frontend development and real-time backend)
  • Go Gin(for authentication and user management backend)
  • PostgreSQL (for the database)
  • Redis (for session management)
  • Nginx (for reverse proxying and load balancing)

Run the application

make run

Create DB container

make docker-run

Shutdown DB Container

make docker-down

DB Integrations Test:

make itest

Live reload the application:

make watch

Run the test suite:

make test

Clean up binary from the last build:

make clean

About

real-time collaborative document editing platform, inspired by Google Docs. Users can create, edit, and share documents with real-time

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published