Overview
The Twitter Clone is a web application developed with a microservice approach using the Spring Framework and React.js. It is constantly updated with new features and offers a range of functionalities similar to the original Twitter platform. The project utilizes various technologies for both the backend and frontend, ensuring a robust and efficient user experience.
Features
- Authentication with JWT and Email validation: Users can securely authenticate using JSON Web Tokens and validate their email addresses.
- Interactive Tweeting: Users can add tweets, like, retweet, reply, quote tweets, and schedule tweets.
- Bookmarking and Direct Messaging: Users have the ability to bookmark tweets and send tweets via direct message.
- Lists and Following: Users can create lists, edit lists, add other users to lists, follow lists, and pin lists.
- Notifications: Users receive notifications when someone subscribes, retweets, or likes their tweets.
- Media Sharing: Users can add images to their tweets, create polls and vote, and post tweets with link previews or YouTube video links.
- Online Chats: WebSocket technology allows for real-time online chats.
- User Profiles and Account Settings: Users have private profiles, can edit their profiles, and access account settings.
- Block and Mute: Users can block and mute other users.
- Customization: Users can customize the site color scheme and background color.
- Search Functionality: Users can search tweets by hashtags and search other users and their tweets.
Installation
- Install Maven by following the instructions provided here.
- Install Java by following the instructions provided here.
- Install Postgresql by following the instructions provided here.
- Install IntelliJ IDEA Ultimate by following the instructions provided here.
- Install Docker and Docker Desktop.
- Add the Lombok plugin to IntelliJ IDEA by following the instructions provided here.
- Make sure Java 17 is selected.
- Build the project with Maven.
- In the docker-compose file, run the following services: postgres, pgadmin, zipkin, rabbitmq.
- Open http://localhost:5050/browser/ and create the following databases: user, tweet, chat, lists, notification, tag, topic.
- Sign up for a new AWS account and create a new AWS S3 bucket.
- Change the access from private to public in the AWS S3 bucket and add a public access policy.
- Obtain AWS keys and add them to the application.properties file.
- In the image-service.yml config file, add bucket, access-key, and secret-key properties.
- Sign up for a Gmail account and create Google API keys.
- Add the Google API key to the tweet-service.yml config file.
- Add the Gmail account and password to the email-service.yml config file.
- Go to the Google Account settings and change “Allow less secure apps” to ON.
- Install Node.js and npm.
- Open the terminal in the frontend directory and run “npm install” or “yarn install”.
- Run the services in the following order: eureka-server, config-server, api-gateway, user-service, and then all other services in any order.
- Open the terminal in the frontend directory and run “npm start” or run via package.json.
- Navigate to http://localhost:3000/home to access the application.
- You can either register a new user or login with the following credentials:
- Login: user2016@gmail.com
- Password: qwerty123
Summary
The Twitter Clone is a comprehensive web application that closely mimics the functionality of the original Twitter platform. It offers various features including user authentication, interactive tweeting, bookmarking, direct messaging, lists and following, notifications, media sharing, online chats, user profiles, account settings, customization options, and search functionality. The installation process involves setting up the required tools and dependencies, configuring various services and APIs, and running the application locally.