Zaptam - Deep Technical Documentation
Overview
Zaptam is an exclusive African dating platform designed for high-net-worth individuals and attractive singles. The platform uses a verification-based trust system, tiered memberships, and gender-specific monetization models.
Target Market: African HNW men and attractive women seeking genuine connections Business Model:
- Men: Paid tiers ($49/$149/$499 monthly)
- Women: Free access with earning potential through wallet system
Architecture Overview
┌─────────────────────────────────────────────────────────────────┐
│ Zaptam Platform │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │
│ │ Landing │ │ App │ │ Admin │ │ API │ │
│ │ (React) │ │ (React) │ │ (React) │ │(Express)│ │
│ │ Vite │ │ Vite │ │ Vite │ │ Socket.IO│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────┘ │
│ │ │ │ │ │
│ └────────────────┼────────────────┼────────────────┘ │
│ ▼ ▼ │
│ ┌──────────────────────────┐ │
│ │ REST API + WS │ │
│ │ /api/* endpoints │ │
│ └──────────────────────────┘ │
│ │ │
│ ┌─────────────────────┼─────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ PostgreSQL │ │ Cloudflare │ │ WhatsApp │ │
│ │ (Prisma) │ │ R2 │ │ OTP │ │
│ └────────────┘ └────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────────┘Repository Structure
~/Documents/omevision/zaptam/
├── api/ # Backend API (Express + Prisma)
│ ├── prisma/
│ │ ├── schema.prisma # Database schema (12 models, 13 enums)
│ │ └── seed.ts # Database seeding
│ ├── src/
│ │ ├── app.ts # Express app setup
│ │ ├── server.ts # Server entry point
│ │ ├── config/
│ │ │ ├── database.ts # Prisma client
│ │ │ ├── jwt.ts # JWT configuration
│ │ │ ├── multer.ts # File upload config
│ │ │ ├── r2.ts # Cloudflare R2 config
│ │ │ └── socket.ts # Socket.IO config
│ │ ├── controllers/
│ │ │ ├── admin/ # Admin endpoints
│ │ │ ├── auth.controller.ts
│ │ │ ├── match.controller.ts
│ │ │ ├── message.controller.ts
│ │ │ ├── profile.controller.ts
│ │ │ ├── report.controller.ts
│ │ │ ├── user.controller.ts
│ │ │ ├── verification.controller.ts
│ │ │ └── wallet.controller.ts
│ │ ├── middleware/
│ │ │ ├── auth.middleware.ts
│ │ │ ├── error.middleware.ts
│ │ │ ├── rateLimit.middleware.ts
│ │ │ ├── role.middleware.ts
│ │ │ └── validation.middleware.ts
│ │ ├── routes/
│ │ │ ├── admin/index.ts
│ │ │ ├── auth.routes.ts
│ │ │ ├── match.routes.ts
│ │ │ ├── message.routes.ts
│ │ │ ├── profile.routes.ts
│ │ │ ├── report.routes.ts
│ │ │ ├── user.routes.ts
│ │ │ ├── verification.routes.ts
│ │ │ └── wallet.routes.ts
│ │ ├── services/
│ │ │ ├── auth.service.ts # Authentication logic
│ │ │ ├── match.service.ts # Discovery & matching
│ │ │ ├── message.service.ts # Conversations & messages
│ │ │ ├── notification.service.ts
│ │ │ ├── report.service.ts # User reports
│ │ │ ├── trust.service.ts # Trust score calculation
│ │ │ ├── user.service.ts # User management
│ │ │ ├── verification.service.ts
│ │ │ └── wallet.service.ts # Billing & transactions
│ │ ├── sockets/
│ │ │ ├── index.ts # Socket setup & auth
│ │ │ ├── message.socket.ts # Real-time messaging
│ │ │ └── presence.socket.ts # Online status
│ │ ├── utils/
│ │ │ ├── crypto.utils.ts
│ │ │ ├── helpers.ts
│ │ │ ├── jwt.utils.ts
│ │ │ └── r2.utils.ts
│ │ ├── validators/
│ │ │ ├── auth.validator.ts
│ │ │ ├── message.validator.ts
│ │ │ └── profile.validator.ts
│ │ └── types/index.ts
│ └── package.json
│
├── app/ # User Mobile/Web App (React + Vite)
│ └── src/
│ ├── App.tsx
│ ├── main.tsx
│ ├── api/ # API client functions
│ ├── components/
│ │ ├── auth/ # OTP, password, phone, photo upload
│ │ ├── layout/ # App layout, bottom nav
│ │ ├── match/ # Match cards, interest cards
│ │ ├── message/ # Chat window, conversation list
│ │ ├── profile/ # Profile cards, badges, galleries
│ │ ├── wallet/ # Balance, packages, withdrawals
│ │ └── ui/ # Shared UI components
│ ├── hooks/useAuth.ts
│ ├── lib/
│ │ ├── constants.ts
│ │ ├── socket.ts
│ │ └── utils.ts
│ ├── pages/
│ │ ├── auth/ # Login, Apply, Verify, CompleteProfile
│ │ ├── Conversation.tsx
│ │ ├── Discover.tsx
│ │ ├── Matches.tsx
│ │ ├── Messages.tsx
│ │ ├── Profile.tsx
│ │ ├── Settings.tsx
│ │ └── Wallet.tsx
│ ├── store/
│ │ ├── auth.ts
│ │ ├── authStore.ts
│ │ └── socketStore.ts
│ └── types/index.ts
│
├── admin/ # Admin Dashboard (React + Vite)
│ └── src/
│ ├── components/
│ │ ├── dashboard/ # Stats, charts, data tables
│ │ ├── reports/ # Report handling
│ │ ├── users/ # User management
│ │ ├── verification/ # Verification review
│ │ └── ui/ # Shared components
│ ├── pages/
│ │ ├── Dashboard.tsx
│ │ ├── Users.tsx
│ │ ├── Verifications.tsx
│ │ ├── Reports.tsx
│ │ ├── Transactions.tsx
│ │ └── ... (other pages)
│ ├── services/api.ts
│ ├── store/auth.ts
│ └── types/index.ts
│
└── landing/ # Marketing Website (React + Vite)
└── src/
├── components/
│ ├── layout/ # Header, Footer
│ ├── sections/ # Hero, Features, Pricing
│ └── ui/ # Shared UI
└── pages/
├── Home.tsx
├── About.tsx
├── Membership.tsx # Pricing tiers
├── HowItWorks.tsx
├── Apply.tsx
├── Privacy.tsx
├── Terms.tsx
└── Contact.tsxTech Stack
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite, TypeScript, TailwindCSS, Framer Motion |
| State | Zustand, TanStack Query |
| Backend | Node.js, Express.js, TypeScript |
| Database | PostgreSQL with Prisma ORM |
| Real-time | Socket.IO |
| Storage | Cloudflare R2 |
| Auth | JWT (access + refresh tokens) |
| Notifications | WhatsApp/SMS via Eneza Notifications |
| Validation | Joi |
Key Features
For Users
- Discovery Feed — Browse verified profiles with smart ordering
- Interest System — Express interest, get matched on mutual interest
- Real-time Messaging — WebSocket-based chat with typing indicators
- Photo Privacy — Blur levels, reveal after matching
- Trust System — 0-100 score based on verification, behavior, age
- Wallet — Earnings for women, credit purchases for men
- Verification — Identity, worth (men), value (women)
For Admins
- Dashboard — User stats, pending actions
- User Management — View, suspend, ban users
- Verification Review — Approve/reject documents
- Report Handling — Resolve disputes, apply penalties
- Transaction Monitoring — Track payments, approve withdrawals
- Analytics — User growth, match trends