iahob / twitter-clone

πŸ•Š Twitter Clone developed using Go + Vue 3 + Vite + TailwindCSS + PostgreSQL + Redis

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

πŸ•Š Twitter Clone developed using Go + Vue 3 + Vite + TailwindCSS + PostgreSQL + Redis

License:MIT License


Languages

Language:Go 69.9%Language:TypeScript 8.3%Language:PLpgSQL 8.3%Language:CSS 6.8%Language:Makefile 4.2%Language:Shell 2.1%Language:JavaScript 0.4%