Hello DEV community! π
I've recently attempted to make a clone of Twitter using VueJS as its frontend and Golang as its backend server.
You can check the github repository here for the source code:
HotPotatoC
/
twitter-clone
π Twitter Clone developed using Go + Vue 3 + Vite + TailwindCSS + PostgreSQL + Redis
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
- Edge Service (GraphQL)
- Media Service
- Notifications Service
- Search Service
- Timeline Service
- Tweet Service
- Web UI Service
Technologies Used
- Golang (Internal Services)
- Next.JS (Website UI)
- Kafka (Pub/Sub)
- Apache Spark (Analytics)
- PostgreSQL (Main Database)
- PgPool II (Database Load Balancer)
- Redis (Caching)
- Docker (Containerization)
- Nginx (Load Balancer)
- GraphQL (Edge Server / Frontend for Backend)
- ElasticSearch (Searching & Indexing)
- Firebase Cloud Messenger (Notification Service)
System Design
Functional Requirements
- Create Tweets (text, images, videos, etc)
- View Timeline
- Like tweets
- Retweet / Quote Retweet
- Follow others
Non-Functional Requirements
- Scalable & Efficient
- High Availability
Optional Requirements
- Metrics and analytics
- Notifications
- Observability & Monitoring (Prometheus, Grafana, Jaeger, etc)
Database Schema
How to run locally
Check here on how to run locally
Please note that some features are yet to be implemented and i would love to hear your feedback!
Latest comments (35)
Cool!!Could you suggest me some courses to learn web dev.
Thank you π
Great job. In addition to the project itself, I found the vue's folder and file structure very interesting. Is it your own organization or is it based on something?
Thank you!
The architecture of the project is mainly based on golang-standards/project-layout and many other Golang / Vue projects.
Really nice project and cool stack!
Thanks π
Holly Molly!
Gear job ! The code looks clean.
I will most definitely check it in depth if I ever have to work with Vue !
Thanks π
I guess there's some sort of coding school teaching people how to make clonesβ¦
The most important part of Twitter isn't the website - many users never use it.
It's the API and the mobile apps, and your implementation doesn't have them.
Moreover, your implementation likely can't handle millions of tweets posted every hour - it takes a distributed system to get to that scale.
Keep innovating and you can build a better system than today's Twitter.
Yes, I completely agree with you. I am aware of the sheer size of Twitter and how they can handle an immense amount of users and millions of tweets. This implementation does not compare to how Twitter implements its systems and because it is only experimental and for educational purposes only.
I haven't really gotten deep into scalable applications or fault-tolerant distributed systems but
this project and I have still a lot of room for improvements and ways to go.
Thank you for the valuable insight!
Interesting app. Reach me for some job when free.
i would also love to learn to put pieces together to come up with an app. I have been reading beginner tutorials for python and javascript with no real life examples. I want to develop a ride sharing app that aggregates produce for smallholder farmers in uganda for delivery to markets. email: baguma.andrew@yahoo.com
Some comments may only be visible to logged-in visitors. Sign in to view all comments.