MatchMe Dating App

Connect, chat, and discover meaningful relationships with MatchMe.

About the Project

An AI-powered dating application that facilitates meaningful connections by enhancing user profiles with personalized descriptions and streamlining interactions through real-time chat, connection requests, and photo sharing, delivering an engaging and modern dating experience.

Features

  • AI-Powered Profiles with Gemini: Integrated Gemini to create personalized profile descriptions, enhancing user discovery and engagement with AI-driven insights.
  • Real-Time Chat: Enabled seamless messaging with WebSocket and Pusher, providing instant notifications and smooth communication between users.
  • Connection Requests: Added functionality to send, accept, or reject connection requests, making it easy to form meaningful connections.
  • Photo Sharing: Included secure photo sharing, allowing users to upload, view, and share photos within the app.
  • Responsive UI with Tailwind: Built a modern, fully responsive interface with Tailwind CSS, ensuring a consistent experience across all devices.
  • Secure Authentication: Implemented NextAuth for secure user authentication, supporting email/password and Google sign-in options.
  • Scalable Database with Prisma: Designed and optimized database schemas using Prisma and PostgreSQL for efficient data storage and retrieval.

Tackled Challenges

  • Challenge:

    Ensuring secure access to user profiles and chat features.

    Solution:

    Implemented protected routes using NextAuth to restrict access to sensitive features like chat and profile editing, ensuring only authenticated users can proceed.

  • Challenge:

    Generating personalized profile descriptions for better user engagement.

    Solution:

    Integrated Gemini to generate AI-powered, dynamic profile descriptions based on user inputs, creating engaging and appealing profiles.

  • Challenge:

    Real-time messaging and notifications for seamless user interactions.

    Solution:

    Utilized WebSocket and Pusher to enable real-time chat and instant notifications, providing a smooth and responsive communication experience.

  • Challenge:

    Managing connection requests and tracking their statuses efficiently.

    Solution:

    Developed a robust system to handle sending, accepting, and rejecting connection requests, ensuring proper status updates and smooth user interactions.

  • Challenge:

    Synchronizing user data across devices and ensuring consistency.

    Solution:

    Centralized state management using Zustand to handle and synchronize user data, ensuring a consistent experience across devices.

Technologies Used

NextJS
React.js
TypeScript
Tailwind CSS
Zustand
PostgreSQL
Prisma