A full-stack dating web app for IT professionals: Supabase-authenticated profiles, preference-based match recommendations, a paid tier gating contact-info sharing, and a role-based admin dashboard.
Free Members
- Register and login via Supabase Auth
- Create and edit profile (skills, gender, contact information, partner preferences)
- Update email, password, signout, and delete account
Paid Members
- Access premium membership tier via subscription. Everything in free, plus:
- View match recommendations based on partner preferences
- Request and share contact info with matched users
- Rate the quality of matches when requesting contact information
Product Manager (DEMO)
- Dashboard with website statistics (Free and paid member counts, plus contact information exposure amount)
- Role-based dashboard for user oversight and management
- Per-user Row-Level Security: every table (profiles, contact exposures, match feedback) enables RLS with strict per-user policies; data isolation is enforced in the database, not just the app layer.
- Tiered access: paid features are gated server-side; matching and contact-sharing are unavailable to free members.
- Ordered SQL migrations: schema, RLS policies, and grants ship as reviewable, ordered migration files.
- Tested: Vitest unit tests, including system-time mocking to keep date-sensitive logic deterministic.
├── .env.example # Environment Variables
├── CONTRIBUTING.md # Project Contribution Standards
├── README.md # Project README
├── LICENSE # Project MIT License
├── app/ # Next.js app router
├── components/ # Shared UI components
├── lib/ # Shared helpers
│ ├── context/ # React context provider
│ └── supabase/ # Shared supabase client/server helpers
│ └── migrations/ # Database Migrations
├── hooks/ # Reusable React hooks
└── tests/ # Unit testsThis repository uses Branch Protection Rules to ensure code quality. Direct pushes to main are disabled. Please see CONTRIBUTING.md for the Pull Request and Review workflow.
git clone https://github.com/masonlet/looking-for-love.git
cd looking-for-love
npm installCreate .env.local from .env.example and fill in ENV keys
In the Supabase SQL Editor, run the migrations in order:
lib/supabase/migrations/001-profiles.sqllib/supabase/migrations/002-contact-exposures.sqllib/supabase/migrations/003-match-feedback.sql
Each migration creates its table, enables row-level security, defines policies, and grants the necessary privileges. Re-running a migration against an existing database will fail; if you need to start fresh, drop all three tables first.
Ensure email auth: Authentication -> Providers -> Email.
npm run dev # http://localhost:3000
npm test # Vitest unit tests
npm run lint # ESLint check
npm run typecheck # TypeScript type check
npm run build # Production Next.js build
npm start # Serve production build at http://localhost:3000MIT License - see LICENSE for details.