MakeFriends is a comprehensive chat application developed using TypeScript, Next.js, Node.js, Express.js, PostgreSQL, and Drizzle ORM. The project showcases real-time communication features and an intuitive user interface.
- User Authentication: Implemented login functionality with GitHub and Google for seamless user authentication.
- Real-Time Messaging: Enabled instant communication using sockets for real-time messaging.
- Live Feedback: Integrated a real-time typing indicator for live feedback on user interactions.
- Core Features: Designed and implemented features such as sending messages, friend requests, accepting/rejecting requests, and online status indicators.
- Multimedia Exchange: Enabled users to exchange multimedia content including photos, files, and voice messages.
- User Interface: Designed an attractive UI with customizable black and white theme options.
- Next.js: Framework for building the frontend.
- TypeScript: Language for writing type-safe code.
- Shad CN: UI components.
- Tailwind CSS: Utility-first CSS framework for styling.
- Node.js: JavaScript runtime for the backend.
- Express.js: Web framework for Node.js.
- PostgreSQL: Relational database.
- Drizzle ORM: ORM for database interactions.
- Sockets: Real-time communication.
The project is divided into two main folders:
- frontend: Contains the Next.js application along with Shad CN and Tailwind CSS for styling.
- backend: Contains the Node.js and Express.js application with socket implementation.
To run this project locally, follow these steps:
- Navigate to the
backend
folder:cd backend
- Install the dependencies:
npm install
- Start the backend server:
npm start
- Navigate to the
frontend
folder:cd frontend
- Install the dependencies:
npm install
- Start the frontend server:
npm run dev
My experience in developing MakeFriends has not only strengthened my technical skills in Full Stack Web Development but also instilled a sense of responsibility and autonomy in tackling complex projects independently. MakeFriends stands as a testament to the skills and knowledge I have gained.
For more information or to contribute, please feel free to open an issue or submit a pull request.