Skip to content

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.tsx

Tech Stack

LayerTechnology
FrontendReact 18, Vite, TypeScript, TailwindCSS, Framer Motion
StateZustand, TanStack Query
BackendNode.js, Express.js, TypeScript
DatabasePostgreSQL with Prisma ORM
Real-timeSocket.IO
StorageCloudflare R2
AuthJWT (access + refresh tokens)
NotificationsWhatsApp/SMS via Eneza Notifications
ValidationJoi

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

One chat. Everything done.