Skip to content

Latest commit

 

History

History
54 lines (41 loc) · 1.32 KB

README.md

File metadata and controls

54 lines (41 loc) · 1.32 KB

Twitter Clone

An attempt to recreate one of the largest social networking application Twitter.

Note: This is my first attempt at developing a distributed system, so any feedback would be greatly appreciated.

Services

  1. Edge Service (GraphQL)
  2. Media Service
  3. Notifications Service
  4. Search Service
  5. Timeline Service
  6. Tweet Service
  7. Web UI Service

Technologies Used

  1. Golang (Internal Services)
  2. Next.JS (Website UI)
  3. Kafka (Pub/Sub)
  4. Apache Spark (Analytics)
  5. PostgreSQL (Main Database)
  6. PgPool II (Database Load Balancer)
  7. Redis (Caching)
  8. Docker (Containerization)
  9. Nginx (Load Balancer)
  10. GraphQL (Edge Server / Frontend for Backend)
  11. ElasticSearch (Searching & Indexing)
  12. Firebase Cloud Messenger (Notification Service)

System Design

Functional Requirements

  1. Create Tweets (text, images, videos, etc)
  2. View Timeline
  3. Like tweets
  4. Retweet / Quote Retweet
  5. Follow others

Non-Functional Requirements

  1. Scalable & Efficient
  2. High Availability

Optional Requirements

  1. Metrics and analytics
  2. Notifications
  3. Observability & Monitoring (Prometheus, Grafana, Jaeger, etc)

Database Schema

How to run locally

Check here on how to run locally