L-Atwitter is a social media application clone that allows users to connect and share their thoughts and experiences with others. With a robust system design and a reliable technology stack, Twitter provides a seamless and secure user experience.
L-Atwitter developed with a microservice approach using the Spring Framework and React.js.
See more demo screenshots below.
- Java 17
- Spring Boot 2.7.15
- Spring Web
- Spring Security
- Spring Data Jpa
- Spring Cloud
- PostgreSQL
- Gradle
- JUnit
- React.js
- TypeScript
- Redux-Saga
- Material-UI
- Jest
- Enzyme
- Apache Kafka
- AWS S3 bucket
- OpenFeign
- Discovery Server
- Spring Api Gateway
- Distributed tracing with Zipkin
- Spring cloud config server
- Model mapper
- Testcontainers
- LiquiBase
- Mockito
- Docker
- Authentication with JWT and Email validation. Password change.
- Users can Add tweets, Like, Retweet, Reply, Quote tweets, Schedule tweets.
- Users can Delete tweets, Send tweet via Direct Message, Add tweet to Bookmarks.
- Users can Create Lists, Edit Lists, Add other users to Lists, Follow List, Pin Lists.
- Users get notifications when someone subscribed, retweet or liked tweet.
- Users can add Images to tweet, Create Poll and vote, Post tweets with link preview, Posts tweets with YouTube video link.
- Websocket online chats.
- Private user profile and lists.
- Account Settings.
- Users can subscribe to each other.
- User can edit profile.
- User can block and mute other users.
- Users can customize site color scheme and color background.
- Users can search tweets by hashtags and search other users and users tweets.
- All images downloads on Amazon S3 bucket.
- Front-end refactoring
- Back-end refactoring
- Install Java: link
- Install Gradle: link
- Install Intellij IDEA Ultimate: link
- Install Docker and Docker Desktop link
- Add Lombok plugin to the Intellij IDEA: link
- Make sure Java 17 is selected: link
- In the docker-compose file link run 3 services:
postgres
,zipkin
,rabbitmq
- Create DBs:
user
,tweet
,chat
,lists
,notification
,tag
,topic
- Sign up for a new AWS account: link and create a new AWS S3 bucket: link
- Change access from private to public in the AWS S3 bucket and add a public access policy to the AWS S3 bucket doc,
- Get AWS keys link and add to the image-service.yml config file add bucket, access-key, secret-key properties
- Sign up for gmail and create google API keys: link
- Add google API key to the tweet-service.yml config file
- Add gmail account and password to the email-service.yml config file
- Go to link (important) and change to: “Allow less secure apps: ON”
- Install node.js and npm: link
- Open terminal in frontend-client directory link and type:
npm install
(oryarn install
)- Run services in this order:
- eureka-server
- config-server
- api-gateway
- user-service
- tweet-service
- user-service
- topic-service
- tag-service
- lists-service
- chat-service
- notification-service
- email-service
- image-service
- websocket-service
- Open terminal in frontend-client directory link and type:
npm start
or run via package.json- Navigate to http://localhost:3000/home
- To enter the application you can register or login:
- login:
androsor2026@gmail.com
- password:
qwerty123