This project is a web application where multiple users can simultaneously draw on a shared whiteboard or edit text in real-time. It is built with a modern, scalable backend architecture to showcase skills in real-time communication, event-driven systems, and DevOps, with a focus on type-safety and Object-Oriented principles.
Handling concurrent updates, synchronizing state across multiple clients, and ensuring low latency in a distributed environment.
- Language: TypeScript
- Frontend: Vite, React, Tailwind CSS
- Backend: Node.js, Express.js
- Real-time Communication: WebSockets (initially)
- Event-Driven Backbone: Apache Kafka (planned)
- Inter-Service Communication: gRPC (planned)
- State & Caching: Redis (planned)
- Database: PostgreSQL (planned)
- DevOps: Docker, Kubernetes, GitHub Actions, Prometheus, Grafana (planned)
This project is a monorepo containing a separate frontend and backend.
- Node.js (v16 or later)
- npm
- Navigate to the backend directory:
cd backend - Install dependencies:
npm install
- Start the development server (with auto-reloading):
The backend will be running on
npm run dev
http://localhost:3001.
- In a new terminal, navigate to the frontend directory:
cd frontend - Install dependencies:
npm install
- Start the development server:
The React app will open and run on
npm run dev
http://localhost:5173