A modern community-driven dating platform for NST & Rishihood University.
Discover connections, share compliments, and build meaningful relationships within your campus.
Project Overview ✦ Key Features ✦ Architecture ✦ Structure ✦ Installation ✦ Tech Stack ✦ Instagram
NST Dating is a specialized social platform designed to foster connections within the NST and Rishihood University ecosystem. Unlike generic dating apps, it is built with campus-specific nuances, integrating academic programs, year groups, and university identity directly into the user experience.
The platform prioritizes quality over quantity, implementing daily interaction limits and photo-specific compliments to encourage genuine engagement. Powered by a high-performance stack including Next.js 15, Three.js, and Prisma, it offers a fluid, visually immersive experience that reflects the innovation of its community.
| 01 Intelligent Matching | 02 Photo Compliments |
|---|---|
| Mutual discovery system that connects users only when both express interest. Built-in logic handles gender preferences and academic year filtering. | Instead of generic swipes, users can send targeted compliments on specific profile photos, creating a more personalized icebreaking experience. |
| 03 Smart Profiles | 04 Activity Management |
|---|---|
| Rich data points including Zodiac signs, interests, religion, and academic details (Programme/Year) to help find the perfect match. | Daily caps on swipes and compliments to prevent spamming and ensure every interaction is intentional and meaningful. |
Immersive Discovery Interface A high-performance swiping interface powered by Framer Motion and GSAP, ensuring smooth transitions and tactile feedback.
- Real-time Notifications: Instant updates for matches, compliments, and likes.
- Media Optimization: Integrated with Cloudinary for lightning-fast image loading and responsive delivery.
- Secure Authentication: Enterprise-grade security via Clerk, supporting academic email verification.
- Popularity Leaderboard: Dynamic ranking system showcasing the most engaged and liked profiles in the community.
| Capability | Impact |
|---|---|
| Instant Messaging | Real-time chat interface for matched pairs to communicate securely. |
| Event Integration | Integration with campus events to facilitate real-world meetups. |
| AI Profile Insights | Smart suggestions for profile optimization and icebreaker prompts. |
| Verified Badges | Automated verification for official university students and staff. |
The application follows a modern serverless architecture, leveraging Next.js Server Actions for secure database operations and Clerk for identity management.
flowchart TD
User([User Client]) --> Clerk{Clerk Auth}
Clerk -->|Authenticated| App[Next.js App Router]
App --> Actions[Server Actions]
Actions --> DB[(PostgreSQL & Prisma)]
Actions --> Cloud[Cloudinary SDK]
Cloud -->|Media Storage| Assets[User Photos]
DB --> Logic{Match Logic}
Logic -->|Mutual Right| Match[Create Match]
Match --> Notify[Push Notification]
Actions --> Activity[Activity Tracker]
Activity -->|Daily Limit Check| Limit{Limit Reached?}
Limit -->|No| Allow[Proceed]
Limit -->|Yes| Block[Show Warning]
When a user interacts with the platform:
- Authentication: All requests are intercepted by Clerk middleware to ensure secure access.
- Discovery: The engine queries PostgreSQL via Prisma, filtering profiles based on the user's preferences and past interactions.
- Engagement: Swipes and compliments are processed via Server Actions, updating the relational database and checking for mutual matches in real-time.
- Media: Photos are uploaded directly to Cloudinary, with only optimized URLs stored in the database to ensure rapid page loads.
- Telemetry: User activity is tracked daily to enforce platform limits and calculate popularity scores.
/
├── actions/ — Server Actions for DB mutations (matches, swipes, profiles)
├── app/ — Next.js 15 App Router (Pages, Layouts, API routes)
├── components/ — Reusable UI components (Shadcn UI, DaisyUI)
├── hooks/ — Custom React hooks for state and lifecycle management
├── lib/ — Shared utilities, Prisma client, and third-party configs
├── prisma/ — Database schema definition and seed scripts
├── public/ — Static assets (Logos, icons, and landing images)
├── store/ — Client-side state management (Zustand)
├── utils/ — Helper functions and data formatters
└── package.json — Project dependencies and scripts
Prerequisites: Node.js 18+, PostgreSQL Database.
Initial Setup
1. Clone the repository
git clone https://github.com/your-username/dating-app.git
cd dating-app
npm install2. Configure Environment
Create a .env file in the root directory.
DATABASE_URL="postgresql://..."
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="..."
CLERK_SECRET_KEY="..."
NEXT_PUBLIC_CLERK_SIGN_IN_URL="/sign-in"
NEXT_PUBLIC_CLERK_SIGN_UP_URL="/sign-up"
CLOUDINARY_CLOUD_NAME="..."
CLOUDINARY_API_KEY="..."
CLOUDINARY_API_SECRET="..."3. Initialize Database
npx prisma generate
npx prisma db push
npx prisma db seed4. Start Development Server
npm run dev| Domain | Technology | Implementation Objective |
|---|---|---|
| Framework | Next.js 15 (App Router) | High-performance SSR and Server Actions for secure data handling. |
| Auth | Clerk | Seamless, secure user authentication and profile management. |
| Database | PostgreSQL & Prisma | Type-safe ORM for complex relational data (matches, swipes). |
| Styling | Tailwind CSS 4 & DaisyUI | Rapid, responsive UI development with a modern aesthetic. |
| Animation | Framer Motion & GSAP | Fluid, interactive swiping and transitions for premium UX. |
| Media | Cloudinary | Automated image optimization and secure cloud storage. |
| Graphics | Three.js & R3F | Immersive 3D elements and visual effects. |