mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 10:19:43 +00:00
7952d98d18c18b375ceea9fc08416c2c874efafd
- Use IF NOT EXISTS for CREATE TYPE - Use ADD COLUMN IF NOT EXISTS for ALTER TABLE - Use DROP POLICY IF EXISTS before CREATE POLICY This allows the migration to run safely even if schema already exists. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sauci
Sauci is a couples intimacy app where partners swipe question packs, match on shared interests, and chat about what they unlock together.
What lives here
sauci/
├── apps/
│ ├── mobile/ # Expo React Native app
│ ├── admin/ # Admin dashboard (Vite + React)
│ ├── web/ # Marketing website (Next.js)
│ └── supabase/ # Supabase project (migrations, edge functions)
├── packages/
│ └── shared/ # Shared TypeScript types
Core product flows
- Couple pairing via invite codes and profile linking
- Question packs with two-part phrasing and smart selection bias
- Matches + chat when both partners answer positively
- Notifications for new matches and messages
- Subscriptions via RevenueCat with couple-level premium sharing
Prerequisites
- Node.js 20+
- npm 10+
- Supabase CLI (
npm install -g supabase) - Expo CLI (
npm install -g expo-cli)
Quickstart
npm install
npm run dev
App commands
From each app directory:
- Mobile (
apps/mobile):npm run dev,npm run ios,npm run android,npm run web - Admin (
apps/admin):npm run dev,npm run build,npm run typecheck - Web (
apps/web):npm run dev,npm run build,npm run start
Environment setup
Copy the example files and fill in values:
- Mobile:
apps/mobile/.env.example - Admin:
apps/admin/.env.example - Web:
apps/web/.env.local.example
Supabase (local)
- Config lives in
apps/supabase/config.toml. - Use the Supabase CLI for local services and migrations.
Scripts (root)
npm run dev- run all apps in dev modenpm run build- build all appsnpm run lint- lint all appsnpm run typecheck- typecheck all appsnpm run clean- clean build artifacts
Docs
- Auth:
docs/authentication.md - Schema:
docs/schema.md - Pairing:
docs/couple-pairing.md - Questions:
docs/question-selection.md - Matches/notifications:
docs/match-notifications.md - Subscriptions:
docs/subscription-system.md - Mobile release guide:
apps/mobile/RELEASING.md
Tech stack
- Mobile: Expo (React Native)
- Backend: Supabase (Postgres, Auth, Edge Functions, Realtime)
- Admin: React + Vite
- Web: Next.js
- Monorepo: Turborepo
Languages
TypeScript
79.3%
Python
7.6%
PLpgSQL
6.2%
HTML
2.8%
JavaScript
1.5%
Other
2.3%