Skip to content

Paulwamaria/tulia

Repository files navigation

🌹 TULIA — Intentional Dating Platform

TULIA — A modern intentional dating platform with verified profiles, real-time chat, and safety-first design. Built with Next.js, NestJS, Prisma, and Socket.IO.

nextjs nestjs typescript prisma postgresql socketio dating-app fullstack webapp real-time chat authentication

Built with a scalable architecture and real-time capabilities, TULIA demonstrates production-ready patterns including authentication, role-based access, real-time messaging, and moderation systems.


🚀 Features

🔐 Authentication

  • User registration & login
  • JWT-based authentication
  • Secure session handling

👤 Profile System

  • Create & update profiles
  • Profile photos upload
  • Profile completeness tracking

🧭 Guided Onboarding

  • Step-by-step user onboarding
  • Profile completion gating
  • Verification requirement before discovery

✅ Admin Verification

  • Admin-only verification queue
  • Approve/reject profiles
  • Role-based access control

🔍 Discovery System

  • Tinder-style profile cards
  • Only verified users can access discovery
  • Clean UI with profile photos

❤️ Matching

  • Like system
  • Mutual matches
  • Match filtering based on safety rules

💬 Real-Time Chat

  • Socket.IO powered messaging
  • Instant message delivery
  • Typing indicators
  • Auto-scroll chat experience

🛡️ Safety System

  • Block users
  • Report users
  • Unblock functionality
  • System-wide enforcement (Discover, Matches, Chat)

📸 Screenshots

🏠 Landing Page

Landing Page


📊 Dashboard

Dashboard


🔍 Discover

Discover


💬 Real-Time Chat

Chat


🛡️ Admin Verification

Admin

🏗️ Tech Stack

Frontend

  • Next.js (App Router)
  • TypeScript
  • Tailwind CSS

Backend

  • NestJS
  • Prisma ORM
  • PostgreSQL

Real-Time

  • Socket.IO

📁 Project Structure

tulia/
├── apps/
│   ├── api/     # NestJS backend
│   └── web/     # Next.js frontend
├── prisma/      # Database schema
└── README.md


---


### 3. Add architecture diagram

```md
## Architecture

Client app → NestJS API → Prisma ORM → PostgreSQL  
Socket.IO handles real-time chat between matched users.

## ⚙️ Environment Setup

### Backend (`apps/api/.env`)

DATABASE_URL=postgresql://...
JWT_SECRET=your_secret
PORT=3000


### Frontend (`apps/web/.env.local`)

NEXT_PUBLIC_API_URL=http://localhost:3000


---

## 🛠️ Installation

### 1. Clone repository

git clone https://github.com/Paulwamaria/tulia.git

cd tulia


---

### 2. Install dependencies

Backend

cd apps/api
npm install

Frontend

cd ../web
npm install


---

### 3. Setup database

cd apps/api
npx prisma migrate dev
npx prisma generate


---

### 4. Run development servers

Backend

cd apps/api
npm run start:dev

Frontend

cd apps/web
npm run dev -- -p 3001


---

## 🔑 Admin Setup

To access admin features:

1. Open Prisma Studio:

npx prisma studio


2. Set your user role:

role = "admin"


3. Re-login to refresh JWT  

---

## 🧪 Testing Flow

1. Register a user  
2. Create profile  
3. Upload photo  
4. Admin approves profile  
5. Access Discover  
6. Match with another user  
7. Start real-time chat  

---

## Quality & Testing

- Manual end-to-end testing flow documented
- Auth-protected routes tested
- Matching and chat flow tested with multiple users
- Admin verification flow tested

## 🔒 Security Features

- Role-based access (admin/user)  
- Protected routes (backend + frontend)  
- Block/report enforcement across system  
- JWT authentication  

---

## 📦 Deployment (Next Step)

Recommended stack:

- Backend → Render / Railway  
- Database → Managed PostgreSQL  
- Frontend → Vercel  

---


## 💡 Future Improvements

- Multiple profile photos & selection  
- Read receipts (✓✓)  
- Online / last seen status  
- Push notifications  
- Mobile app version  

---

## 👨‍💻 Author

**Paul Wamaria**

- Full-stack developer  
- Focus: scalable systems, product thinking, and real-world apps  

---

## 🌟 Why This Project Matters

TULIA is not just a dating app clone — it demonstrates:

- Real-world product design decisions  
- Safety-first architecture  
- Scalable backend patterns  
- Clean frontend UX  
- End-to-end system thinking  

About

TULIA — A modern intentional dating platform with verified profiles, real-time chat, and safety-first design. Built with Next.js, NestJS, Prisma, and Socket.IO.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors