feat: Expo project bootstrap (v1.0.1) + untrack private docs
This commit is contained in:
parent
2677febe03
commit
1a1357d5c9
|
|
@ -0,0 +1,25 @@
|
|||
module.exports = {
|
||||
root: true,
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint', 'prettier'],
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:prettier/recommended',
|
||||
],
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
||||
'@typescript-eslint/explicit-function-return-type': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'off',
|
||||
},
|
||||
ignorePatterns: [
|
||||
'node_modules/',
|
||||
'.expo/',
|
||||
'dist/',
|
||||
'metro.config.ts',
|
||||
'babel.config.js',
|
||||
'.eslintrc.js',
|
||||
'.prettierrc',
|
||||
],
|
||||
};
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# Expo
|
||||
.expo/
|
||||
dist/
|
||||
web-build/
|
||||
expo-env.d.ts
|
||||
|
||||
# Native
|
||||
.kotlin/
|
||||
*.orig.*
|
||||
*.jks
|
||||
*.p8
|
||||
*.p12
|
||||
*.key
|
||||
*.mobileprovision
|
||||
|
||||
# Metro
|
||||
.metro-health-check*
|
||||
|
||||
# debug
|
||||
npm-debug.*
|
||||
yarn-debug.*
|
||||
yarn-error.*
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# local env files
|
||||
.env*.local
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
|
||||
# generated native folders
|
||||
/ios
|
||||
/android
|
||||
|
||||
# Private project/agent docs — never commit
|
||||
DEVELOPMENT_LOG.md
|
||||
PROJECT.md
|
||||
STRUCTURE.md
|
||||
FUTURE.md
|
||||
HISTORY.md
|
||||
BUILD_SUMMARY.md
|
||||
SCRIPTS.md
|
||||
project-requirements.md
|
||||
.learnings/
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
module.exports = {
|
||||
semi: true,
|
||||
singleQuote: true,
|
||||
tabWidth: 2,
|
||||
useTabs: false,
|
||||
trailingComma: 'all',
|
||||
printWidth: 100,
|
||||
bracketSpacing: true,
|
||||
arrowParens: 'always',
|
||||
};
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
import { StatusBar } from 'expo-status-bar';
|
||||
import { StyleSheet, Text, View } from 'react-native';
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text>Open up App.tsx to start working on your app!</Text>
|
||||
<StatusBar style="auto" />
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
backgroundColor: '#fff',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
});
|
||||
96
FUTURE.md
96
FUTURE.md
|
|
@ -1,96 +0,0 @@
|
|||
# Relationship App — Planning
|
||||
|
||||
## Phase 1 — Foundation & Infrastructure (1.0.x)
|
||||
|
||||
### Batch 1.0.1: Expo Project Bootstrap (Scarlett)
|
||||
- Initialize Expo project with TypeScript template
|
||||
- Configure ESLint + Prettier
|
||||
- Create folder architecture (app/, components/, lib/, constants/, assets/)
|
||||
- Configure app entry points (app/_layout.tsx, app/index.tsx)
|
||||
- Verify: `npx expo start` runs clean
|
||||
|
||||
### Batch 1.0.2: Navigation Foundation (Scarlett)
|
||||
- Install and configure Expo Router
|
||||
- Create tab layout with placeholder tabs (Home, Questions, Milestones, Settings)
|
||||
- Create stack layout for detail screens
|
||||
- Verify: navigation between tabs and stacks works
|
||||
|
||||
### Batch 1.0.3: Supabase Project Setup (Neo)
|
||||
- Create Supabase project (or document connection to existing)
|
||||
- Configure environment variables (.env.local, .env.example)
|
||||
- Create Supabase client in lib/supabase.ts
|
||||
- Create lib/supabase.ts with init and auth helpers
|
||||
- Verify: client connects to Supabase instance, health check passes
|
||||
|
||||
### Batch 1.0.4: Database Schema — Users & Couples (Neo)
|
||||
- Create `profiles` table (id, email, display_name, avatar_url, created_at)
|
||||
- Create `couples` table (id, partner1_id, partner2_id, created_at)
|
||||
- Create `couple_members` table (id, couple_id, user_id, joined_at)
|
||||
- Row Level Security on all tables
|
||||
- Verify: can insert/select with proper RLS, cross-couple isolation works
|
||||
|
||||
### Batch 1.0.5: Auth — Magic Link Email (Neo)
|
||||
- Configure Supabase Auth for email magic links
|
||||
- Auth hook: useAuth() with session state
|
||||
- Protected route wrapper component
|
||||
- Logout handling
|
||||
- Verify: magic link flow works end-to-end
|
||||
|
||||
### Batch 1.0.6: Auth UI — Login Screen (Scarlett)
|
||||
- Login screen with email input + "Send Magic Link" button
|
||||
- Loading state, success message, error state
|
||||
- Deep link handling for magic link redirect
|
||||
- Verify: user can request and receive magic link, redirect works
|
||||
|
||||
### Batch 1.0.7: Pairing — Code Generation (Neo)
|
||||
- Generate unique 6-character pair codes
|
||||
- `pair_codes` table (id, code, creator_id, status, expires_at, created_at)
|
||||
- API: create pair code, expire old codes
|
||||
- RLS: only creator can generate, only partner can claim
|
||||
- Verify: code generation works, uniqueness constraint, expiration works
|
||||
|
||||
### Batch 1.0.8: Pairing — Join Flow (Neo)
|
||||
- Claim pair code endpoint
|
||||
- Couple creation logic on successful claim
|
||||
- RLS: couple_members only visible to members
|
||||
- Verify: two users can pair, couple created correctly
|
||||
|
||||
### Batch 1.0.9: Pairing UI — Enter Code Screen (Scarlett)
|
||||
- "Share Your Code" screen showing generated code with copy button
|
||||
- "Enter Partner's Code" screen with input + submit
|
||||
- Paired state screen showing partner info
|
||||
- Loading/success/error states throughout
|
||||
- Verify: full pairing flow works on device
|
||||
|
||||
### Batch 1.0.10: Design System — Theme & Tokens (Scarlett)
|
||||
- Create constants/Colors.ts with warm color palette
|
||||
- Create constants/Spacing.ts with spacing scale
|
||||
- Create constants/Typography.ts with font sizes/weights
|
||||
- NativeWind config extending Tailwind theme with custom tokens
|
||||
- Dark mode color tokens
|
||||
- Verify: tokens render correctly in both modes
|
||||
|
||||
### Batch 1.0.11: Design System — Base Components (Scarlett)
|
||||
- Button component (variants: primary, secondary, ghost; sizes: sm, md, lg)
|
||||
- Input component (text input with label, error state)
|
||||
- Card component (with header, body, footer)
|
||||
- Avatar component (with fallback initials)
|
||||
- Verify: all components render in light/dark mode
|
||||
|
||||
### Batch 1.0.12: Home Screen (Scarlett)
|
||||
- Home screen layout with greeting, daily question card, quick actions
|
||||
- Navigation to question packs
|
||||
- Warm, calm aesthetic matching design philosophy
|
||||
- Verify: home screen renders with placeholder data
|
||||
|
||||
## Phase 2 — Core Question Engine (1.1.x)
|
||||
*(Planned — not yet broken into batches)*
|
||||
|
||||
## Phase 3 — Milestones & Memories (1.2.x)
|
||||
*(Planned — not yet broken into batches)*
|
||||
|
||||
## Phase 4 — Messaging & Notifications (1.3.x)
|
||||
*(Planned — not yet broken into batches)*
|
||||
|
||||
## Phase 5 — Polish & Launch Prep (1.4.x)
|
||||
*(Planned — not yet broken into batches)*
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
# Relationship App — Changelog
|
||||
|
||||
## v1.0.0 — Phase 1 Foundation Baseline — 2026-05-13
|
||||
|
||||
### Project Setup
|
||||
- Initialized project structure (PROJECT.md, STRUCTURE.md, FUTURE.md, project-requirements.md)
|
||||
- Execution plan rewritten with small batch sizing per BATCH_SIZING.md rules
|
||||
- Phase 1 broken into 12 focused batches (1.0.1 through 1.0.12)
|
||||
- Agent pipeline: Scarlett → Neo → Bishop → Private_Hudson as needed
|
||||
53
PROJECT.md
53
PROJECT.md
|
|
@ -1,53 +0,0 @@
|
|||
# Relationship App — Couples Connection
|
||||
|
||||
## Overview
|
||||
Project: Relationship App (Couples Connection)
|
||||
Created: 2026-05-13
|
||||
Status: Active (Phase 1 - Foundation & Infrastructure - 1.0.x)
|
||||
Build Phase: 1 (Foundation & Infrastructure)
|
||||
|
||||
## Description
|
||||
A mobile app designed to help couples build a deeper emotional connection through meaningful interaction, guided conversations, and personal moments. Built with React Native + Expo for iOS and Android.
|
||||
|
||||
## Tech Stack
|
||||
- **React Native** — mobile framework (cross-platform: iOS + Android)
|
||||
- **Expo** — development platform and build tooling
|
||||
- **TypeScript** — type safety
|
||||
- **NativeWind** — Tailwind CSS for React Native
|
||||
- **Supabase** — Auth, Database (PostgreSQL), Realtime, Storage
|
||||
- **Cloudflare R2** — media storage
|
||||
- **Expo Push Notifications** — push alerts
|
||||
- **shadcn/ui-style** — component primitives adapted for mobile
|
||||
|
||||
## Directory Structure (Phase 1 target)
|
||||
- `app/` — Expo Router screens and layouts
|
||||
- `components/` — Reusable UI components
|
||||
- `lib/` — Utilities, hooks, Supabase client
|
||||
- `constants/` — Theme, colors, spacing
|
||||
- `assets/` — Images, fonts
|
||||
- `supabase/` — Migrations and config (if using CLI)
|
||||
|
||||
## Git
|
||||
- **Branch:** `dev` (working), `main` (stable)
|
||||
- **Remote:** `ssh://forgejo/null/relationship-app.git`
|
||||
|
||||
## Versioning
|
||||
Version numbers correlate to the active phase:
|
||||
- Phase 1: `1.0.x` (foundation, bootstrap, auth)
|
||||
- Phase 2: `1.1.x` (core question engine)
|
||||
- Phase 3: `1.2.x` (milestones & memories)
|
||||
- Phase 4: `1.3.x` (messaging & notifications)
|
||||
- Phase 5: `1.4.x` (polish & launch prep)
|
||||
|
||||
## Phase Completion Git Rule
|
||||
Push to `dev` after every completed and verified batch.
|
||||
- Agents do not touch git.
|
||||
- Bishop verifies and updates docs.
|
||||
- Ripley performs final checks, commits, and pushes to `dev`.
|
||||
|
||||
## Conventions
|
||||
- Follow AGENTS.md for agent dispatch protocol
|
||||
- All agents read project-requirements.md before starting tasks
|
||||
- Ripley owns git — no agent touches git directly
|
||||
- See BATCH_SIZING.md for batch sizing rules (one focused task per batch)
|
||||
- NOT Next.js. NOT a web app. This is React Native + Expo.
|
||||
102
STRUCTURE.md
102
STRUCTURE.md
|
|
@ -1,102 +0,0 @@
|
|||
# Relationship App — Structure
|
||||
|
||||
## Agent Roles
|
||||
|
||||
| Area | Owner | Notes |
|
||||
|------|-------|-------|
|
||||
| Backend, Supabase, Auth, DB, RLS | Neo | All server-side work |
|
||||
| UI, Mobile UX, NativeWind, Design System | Scarlett | All visual/interaction work |
|
||||
| QA, Testing, Build Verification | Bishop | Verify everything works |
|
||||
| Security Review, Content, Moderation | Private_Hudson | Security-first features |
|
||||
| Coordination, Git, Deployment | Ripley | Orchestrates pipeline |
|
||||
|
||||
## Phase 1 — Foundation & Infrastructure (1.0.x)
|
||||
|
||||
Batches follow the rule: **one focused task per batch, one agent, one pass.**
|
||||
|
||||
### Batch 1.0.1: Expo Project Bootstrap (Scarlett)
|
||||
- Initialize Expo project with TypeScript template
|
||||
- Configure ESLint + Prettier
|
||||
- Create folder architecture (app/, components/, lib/, constants/, assets/)
|
||||
- Configure app entry points (app/_layout.tsx, app/index.tsx)
|
||||
- Verify: `npx expo start` runs clean
|
||||
|
||||
### Batch 1.0.2: Navigation Foundation (Scarlett)
|
||||
- Install and configure Expo Router
|
||||
- Create tab layout with placeholder tabs (Home, Questions, Milestones, Settings)
|
||||
- Create stack layout for detail screens
|
||||
- Verify: navigation between tabs and stacks works
|
||||
|
||||
### Batch 1.0.3: Supabase Project Setup (Neo)
|
||||
- Create Supabase project (or document connection to existing)
|
||||
- Configure environment variables (.env.local, .env.example)
|
||||
- Create Supabase client in lib/supabase.ts
|
||||
- Create lib/supabase.ts with init and auth helpers
|
||||
- Verify: client connects to Supabase instance, health check passes
|
||||
|
||||
### Batch 1.0.4: Database Schema — Users & Couples (Neo)
|
||||
- Create `profiles` table (id, email, display_name, avatar_url, created_at)
|
||||
- Create `couples` table (id, partner1_id, partner2_id, created_at)
|
||||
- Create `couple_members` table (id, couple_id, user_id, joined_at)
|
||||
- Row Level Security on all tables
|
||||
- Verify: can insert/select with proper RLS, cross-couple isolation works
|
||||
|
||||
### Batch 1.0.5: Auth — Magic Link Email (Neo)
|
||||
- Configure Supabase Auth for email magic links
|
||||
- Auth hook: useAuth() with session state
|
||||
- Protected route wrapper component
|
||||
- Logout handling
|
||||
- Verify: magic link flow works end-to-end
|
||||
|
||||
### Batch 1.0.6: Auth UI — Login Screen (Scarlett)
|
||||
- Login screen with email input + "Send Magic Link" button
|
||||
- Loading state, success message, error state
|
||||
- Deep link handling for magic link redirect
|
||||
- Verify: user can request and receive magic link, redirect works
|
||||
|
||||
### Batch 1.0.7: Pairing — Code Generation (Neo)
|
||||
- Generate unique 6-character pair codes
|
||||
- `pair_codes` table (id, code, creator_id, status, expires_at, created_at)
|
||||
- API: create pair code, expire old codes
|
||||
- RLS: only creator can generate, only partner can claim
|
||||
- Verify: code generation works, uniqueness constraint, expiration works
|
||||
|
||||
### Batch 1.0.8: Pairing — Join Flow (Neo)
|
||||
- Claim pair code endpoint
|
||||
- Couple creation logic on successful claim
|
||||
- RLS: couple_members only visible to members
|
||||
- Verify: two users can pair, couple created correctly
|
||||
|
||||
### Batch 1.0.9: Pairing UI — Enter Code Screen (Scarlett)
|
||||
- "Share Your Code" screen showing generated code with copy button
|
||||
- "Enter Partner's Code" screen with input + submit
|
||||
- Paired state screen showing partner info
|
||||
- Loading/success/error states throughout
|
||||
- Verify: full pairing flow works on device
|
||||
|
||||
### Batch 1.0.10: Design System — Theme & Tokens (Scarlett)
|
||||
- Create constants/Colors.ts with warm color palette
|
||||
- Create constants/Spacing.ts with spacing scale
|
||||
- Create constants/Typography.ts with font sizes/weights
|
||||
- NativeWind config extending Tailwind theme with custom tokens
|
||||
- Dark mode color tokens
|
||||
- Verify: tokens render correctly in both modes
|
||||
|
||||
### Batch 1.0.11: Design System — Base Components (Scarlett)
|
||||
- Button component (variants: primary, secondary, ghost; sizes: sm, md, lg)
|
||||
- Input component (text input with label, error state)
|
||||
- Card component (with header, body, footer)
|
||||
- Avatar component (with fallback initials)
|
||||
- Verify: all components render in light/dark mode
|
||||
|
||||
### Batch 1.0.12: Home Screen (Scarlett)
|
||||
- Home screen layout with greeting, daily question card, quick actions
|
||||
- Navigation to question packs
|
||||
- Warm, calm aesthetic matching design philosophy
|
||||
- Verify: home screen renders with placeholder data
|
||||
|
||||
## Cross-Cutting Concerns
|
||||
|
||||
- **Security**: Private_Hudson reviews auth, pairing, and RLS before Phase 2
|
||||
- **Testing**: Bishop verifies each batch with build + runtime check
|
||||
- **Documentation**: Bishop updates docs after each verified batch
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"expo": {
|
||||
"name": "relationship-app",
|
||||
"slug": "relationship-app",
|
||||
"version": "1.0.0",
|
||||
"orientation": "portrait",
|
||||
"icon": "./assets/icon.png",
|
||||
"userInterfaceStyle": "light",
|
||||
"newArchEnabled": true,
|
||||
"splash": {
|
||||
"image": "./assets/splash-icon.png",
|
||||
"resizeMode": "contain",
|
||||
"backgroundColor": "#ffffff"
|
||||
},
|
||||
"ios": {
|
||||
"supportsTablet": true
|
||||
},
|
||||
"android": {
|
||||
"adaptiveIcon": {
|
||||
"foregroundImage": "./assets/adaptive-icon.png",
|
||||
"backgroundColor": "#ffffff"
|
||||
},
|
||||
"edgeToEdgeEnabled": true,
|
||||
"predictiveBackGestureEnabled": false
|
||||
},
|
||||
"web": {
|
||||
"favicon": "./assets/favicon.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
# App placeholder
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import { Stack } from 'expo-router';
|
||||
|
||||
export default function RootLayout() {
|
||||
return (
|
||||
<Stack>
|
||||
<Stack.Screen name="index" />
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import { Text, View } from 'react-native';
|
||||
|
||||
export default function HomeScreen() {
|
||||
return (
|
||||
<View className="flex-1 items-center justify-center bg-white">
|
||||
<Text className="text-2xl font-bold text-gray-900">Hello, Relationship App!</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
# Assets placeholder
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
|
|
@ -0,0 +1 @@
|
|||
# Components placeholder
|
||||
|
|
@ -0,0 +1 @@
|
|||
# Constants placeholder
|
||||
|
|
@ -1,932 +0,0 @@
|
|||
# Couples Connection Mobile App
|
||||
|
||||
# Full Execution Plan
|
||||
|
||||
---
|
||||
|
||||
# Project Stack
|
||||
|
||||
## Frontend
|
||||
|
||||
* React Native
|
||||
* Expo
|
||||
* TypeScript
|
||||
|
||||
## Backend
|
||||
|
||||
* Supabase
|
||||
* PostgreSQL
|
||||
* Supabase Auth
|
||||
* Supabase Realtime
|
||||
|
||||
## Storage
|
||||
|
||||
* Cloudflare R2
|
||||
|
||||
## Notifications
|
||||
|
||||
* Expo Push Notifications
|
||||
|
||||
---
|
||||
|
||||
# Agent Assignment Matrix
|
||||
|
||||
| Agent | Role |
|
||||
| ------------------------------------------ | ------------------------------------------------------------------- |
|
||||
| Ripley | Project orchestration, execution coordination, batch sequencing |
|
||||
| Neo (`agentId: neo`) | Backend systems, architecture, security, realtime, database |
|
||||
| Scarlett (`agentId: scarlett`) | UI systems, mobile UX, styling, responsive layouts, design systems |
|
||||
| Bishop (`agentId: bishop`) | QA, stability, testing, regression validation, release verification |
|
||||
| Private_Hudson (`agentId: private_hudson`) | Content systems, moderation, admin workflows, operational tooling |
|
||||
|
||||
---
|
||||
|
||||
# Dispatch Rules
|
||||
|
||||
## Required On Every Agent Spawn
|
||||
|
||||
* Explicit `agentId`
|
||||
* Project context block
|
||||
* Project directory
|
||||
* Relevant spec references
|
||||
* Recent changes summary
|
||||
* Learnings path reminder
|
||||
* Report back to Ripley only
|
||||
|
||||
---
|
||||
|
||||
# Learnings Paths
|
||||
|
||||
| Agent | Learnings Path |
|
||||
| -------------- | ---------------------------- |
|
||||
| Ripley | `.learnings/` |
|
||||
| Neo | `.learnings/neo/` |
|
||||
| Scarlett | `.learnings/scarlett/` |
|
||||
| Bishop | `.learnings/bishop/` |
|
||||
| Private_Hudson | `.learnings/private_hudson/` |
|
||||
|
||||
---
|
||||
|
||||
# STAGE 1
|
||||
|
||||
# Foundation & Infrastructure
|
||||
|
||||
## Goal
|
||||
|
||||
Establish stable application foundation.
|
||||
|
||||
---
|
||||
|
||||
# Batch 1A
|
||||
|
||||
## Expo Bootstrap & Structure
|
||||
|
||||
### Lead
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### Support
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Expo
|
||||
* React Native
|
||||
* TypeScript
|
||||
|
||||
### Tasks
|
||||
|
||||
* Initialize Expo application
|
||||
* Configure TypeScript
|
||||
* Configure ESLint + Prettier
|
||||
* Create folder architecture
|
||||
* Configure app entry points
|
||||
* Configure navigation foundation
|
||||
* Setup environment structure
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Running Expo app
|
||||
* Stable folder structure
|
||||
* Base navigation
|
||||
|
||||
---
|
||||
|
||||
# Batch 1B
|
||||
|
||||
## Supabase Backend Foundation
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Supabase
|
||||
* PostgreSQL
|
||||
|
||||
### Tasks
|
||||
|
||||
* Create Supabase project
|
||||
* Configure auth providers
|
||||
* Configure PostgreSQL structure
|
||||
* Configure storage buckets
|
||||
* Configure environment variables
|
||||
* Setup baseline row level security
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Working backend connection
|
||||
* Secure database foundation
|
||||
|
||||
---
|
||||
|
||||
# Batch 1C
|
||||
|
||||
## Authentication System
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Supabase Auth
|
||||
* React Native
|
||||
* Expo Router
|
||||
|
||||
### Tasks
|
||||
|
||||
* Email magic link auth
|
||||
* Session persistence
|
||||
* Protected routes
|
||||
* Login screen
|
||||
* Logout handling
|
||||
* Auth validation
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Stable authentication flow
|
||||
|
||||
---
|
||||
|
||||
# Batch 1D
|
||||
|
||||
## Pairing System
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Supabase
|
||||
* PostgreSQL
|
||||
* React Native
|
||||
|
||||
### Tasks
|
||||
|
||||
* Pair code generation
|
||||
* Pair code validation
|
||||
* Couple linking logic
|
||||
* Pairing UI
|
||||
* Couple membership persistence
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Fully working pairing system
|
||||
|
||||
---
|
||||
|
||||
# Batch 1E
|
||||
|
||||
## Design System Foundation
|
||||
|
||||
### Lead
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### Support
|
||||
|
||||
Ripley
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* React Native
|
||||
* Expo
|
||||
* NativeWind/Tailwind RN strategy
|
||||
|
||||
### Tasks
|
||||
|
||||
* Typography system
|
||||
* Color palette
|
||||
* Spacing system
|
||||
* Shared components
|
||||
* Theme provider
|
||||
* Dark mode foundation
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Shared mobile design system
|
||||
|
||||
---
|
||||
|
||||
# STAGE 2
|
||||
|
||||
# Core Question Engine
|
||||
|
||||
## Goal
|
||||
|
||||
Build primary emotional interaction system.
|
||||
|
||||
---
|
||||
|
||||
# Batch 2A
|
||||
|
||||
## Question Database Architecture
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* PostgreSQL
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Question schema
|
||||
* Metadata tagging
|
||||
* Category structure
|
||||
* Visibility rules
|
||||
* Relationship stage tagging
|
||||
* Seed starter questions
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Structured question engine
|
||||
|
||||
---
|
||||
|
||||
# Batch 2B
|
||||
|
||||
## Daily Question System
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Supabase
|
||||
* React Native
|
||||
|
||||
### Tasks
|
||||
|
||||
* Daily selection logic
|
||||
* Daily refresh system
|
||||
* Question retrieval APIs
|
||||
* Daily question UI
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Daily question flow
|
||||
|
||||
---
|
||||
|
||||
# Batch 2C
|
||||
|
||||
## Random Question Generator
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* PostgreSQL
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Randomization logic
|
||||
* Category filtering
|
||||
* Surprise mode
|
||||
* Duplicate prevention
|
||||
* Usage history filtering
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Random question system
|
||||
|
||||
---
|
||||
|
||||
# Batch 2D
|
||||
|
||||
## Answer System
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* React Native
|
||||
* Supabase Realtime
|
||||
|
||||
### Tasks
|
||||
|
||||
* Text answers
|
||||
* Save answers
|
||||
* Partner answer retrieval
|
||||
* Favorite answers
|
||||
* Reactions foundation
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Full answer interaction flow
|
||||
|
||||
---
|
||||
|
||||
# Batch 2E
|
||||
|
||||
## Custom Questions
|
||||
|
||||
### Lead
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### Support
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* PostgreSQL
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Custom question creation
|
||||
* Shared question libraries
|
||||
* Validation rules
|
||||
* Moderation structure
|
||||
|
||||
### Deliverables
|
||||
|
||||
* User generated question system
|
||||
|
||||
---
|
||||
|
||||
# STAGE 3
|
||||
|
||||
# Couple Interaction Systems
|
||||
|
||||
## Goal
|
||||
|
||||
Expand emotional interaction systems.
|
||||
|
||||
---
|
||||
|
||||
# Batch 3A
|
||||
|
||||
## Emotional Check Ins
|
||||
|
||||
### Lead
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### Support
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* React Native
|
||||
* Expo
|
||||
|
||||
### Tasks
|
||||
|
||||
* Mood UI
|
||||
* Emotional categories
|
||||
* Check in interactions
|
||||
* Emotional state display
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Emotional check in system
|
||||
|
||||
---
|
||||
|
||||
# Batch 3B
|
||||
|
||||
## Reactions & Interaction Layer
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Supabase Realtime
|
||||
* React Native
|
||||
|
||||
### Tasks
|
||||
|
||||
* Reactions
|
||||
* State syncing
|
||||
* Interaction updates
|
||||
* Lightweight engagement systems
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Realtime interaction layer
|
||||
|
||||
---
|
||||
|
||||
# Batch 3C
|
||||
|
||||
## Realtime Infrastructure
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Supabase Realtime
|
||||
|
||||
### Tasks
|
||||
|
||||
* Realtime subscriptions
|
||||
* Live sync validation
|
||||
* Event handling
|
||||
* Presence testing
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Stable realtime infrastructure
|
||||
|
||||
---
|
||||
|
||||
# STAGE 4
|
||||
|
||||
# Memory & Media Systems
|
||||
|
||||
## Goal
|
||||
|
||||
Build emotional memory ecosystem.
|
||||
|
||||
---
|
||||
|
||||
# Batch 4A
|
||||
|
||||
## Memory Vault
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Supabase
|
||||
* Cloudflare R2
|
||||
* React Native
|
||||
|
||||
### Tasks
|
||||
|
||||
* Memory save systems
|
||||
* Favorites
|
||||
* Memory categories
|
||||
* Browsing UI
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Functional memory vault
|
||||
|
||||
---
|
||||
|
||||
# Batch 4B
|
||||
|
||||
## Relationship Timeline
|
||||
|
||||
### Lead
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### Support
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* React Native
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Timeline rendering
|
||||
* Milestone systems
|
||||
* Timeline interactions
|
||||
* Timeline UI
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Relationship timeline
|
||||
|
||||
---
|
||||
|
||||
# Batch 4C
|
||||
|
||||
## Video Messaging Foundation
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* React Native
|
||||
* Expo AV
|
||||
* Cloudflare R2
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Video recording flow
|
||||
* Upload structure
|
||||
* Metadata storage
|
||||
* Playback system
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Basic video messaging
|
||||
|
||||
### Status
|
||||
|
||||
Advanced video pipeline deferred for future scaling.
|
||||
|
||||
---
|
||||
|
||||
# STAGE 5
|
||||
|
||||
# Admin & Content Systems
|
||||
|
||||
## Goal
|
||||
|
||||
Enable scalable content operations.
|
||||
|
||||
---
|
||||
|
||||
# Batch 5A
|
||||
|
||||
## Admin Dashboard
|
||||
|
||||
### Lead
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### Support
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* React Native Web
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Admin auth
|
||||
* Content management UI
|
||||
* Moderation queue
|
||||
* Reporting tools
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Admin dashboard
|
||||
|
||||
---
|
||||
|
||||
# Batch 5B
|
||||
|
||||
## Moderation Systems
|
||||
|
||||
### Lead
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### Support
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* PostgreSQL
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Report handling
|
||||
* Approval systems
|
||||
* Moderation APIs
|
||||
* Enforcement logic
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Moderation infrastructure
|
||||
|
||||
---
|
||||
|
||||
# Batch 5C
|
||||
|
||||
## Official _null Question Packs
|
||||
|
||||
### Lead
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### Support
|
||||
|
||||
Ripley
|
||||
|
||||
### QA
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* PostgreSQL
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Pack structure
|
||||
* Metadata standards
|
||||
* Scheduling
|
||||
* Release organization
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Official curated question system
|
||||
|
||||
---
|
||||
|
||||
# STAGE 6
|
||||
|
||||
# Polish & Growth Systems
|
||||
|
||||
## Goal
|
||||
|
||||
Refine production release quality.
|
||||
|
||||
---
|
||||
|
||||
# Batch 6A
|
||||
|
||||
## Notification Refinement
|
||||
|
||||
### Lead
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
### Support
|
||||
|
||||
Ripley
|
||||
|
||||
### QA
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Expo Push Notifications
|
||||
|
||||
### Tasks
|
||||
|
||||
* Notification timing
|
||||
* Quiet hours
|
||||
* Reminder refinement
|
||||
* Notification sanity testing
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Balanced notification system
|
||||
|
||||
---
|
||||
|
||||
# Batch 6B
|
||||
|
||||
## Shareable Recaps
|
||||
|
||||
### Lead
|
||||
|
||||
Scarlett (`agentId: scarlett`)
|
||||
|
||||
### Support
|
||||
|
||||
Private_Hudson (`agentId: private_hudson`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* React Native
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Anniversary recaps
|
||||
* Story summaries
|
||||
* Share cards
|
||||
* Recap layouts
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Shareable recap systems
|
||||
|
||||
---
|
||||
|
||||
# Batch 6C
|
||||
|
||||
## Stability & Production Pass
|
||||
|
||||
### Lead
|
||||
|
||||
Bishop (`agentId: bishop`)
|
||||
|
||||
### Support
|
||||
|
||||
Neo (`agentId: neo`)
|
||||
|
||||
* Scarlett (`agentId: scarlett`)
|
||||
|
||||
### QA
|
||||
|
||||
Ripley
|
||||
|
||||
### Stack Used
|
||||
|
||||
* Expo
|
||||
* React Native
|
||||
* Supabase
|
||||
|
||||
### Tasks
|
||||
|
||||
* Crash testing
|
||||
* Performance optimization
|
||||
* Memory leak testing
|
||||
* Offline validation
|
||||
* Final regression testing
|
||||
|
||||
### Deliverables
|
||||
|
||||
* Production ready release candidate
|
||||
|
||||
---
|
||||
|
||||
# Final Release Gate
|
||||
|
||||
## Launch Requirements
|
||||
|
||||
* Stable onboarding
|
||||
* Stable pairing
|
||||
* Stable question systems
|
||||
* Secure storage
|
||||
* Privacy validation
|
||||
* Notification sanity
|
||||
* Stable realtime systems
|
||||
* Crash free baseline
|
||||
* Performance validation
|
||||
|
||||
---
|
||||
|
||||
# Execution Principle
|
||||
|
||||
Do not build ahead of current stage.
|
||||
|
||||
Do not solve imaginary scaling problems before real users exist.
|
||||
|
||||
Ship stable emotional experiences incrementally.
|
||||
|
||||
Because developers routinely try to build interplanetary infrastructure for apps with seven users and one emotionally vulnerable beta tester.
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
import { registerRootComponent } from 'expo';
|
||||
|
||||
import App from './App';
|
||||
|
||||
// registerRootComponent calls AppRegistry.registerComponent('main', () => App);
|
||||
// It also ensures that whether you load the app in Expo Go or in a native build,
|
||||
// the environment is set up appropriately
|
||||
registerRootComponent(App);
|
||||
|
|
@ -0,0 +1 @@
|
|||
# Utilities placeholder
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"name": "relationship-app",
|
||||
"version": "1.0.1",
|
||||
"main": "index.ts",
|
||||
"scripts": {
|
||||
"start": "expo start",
|
||||
"android": "expo start --android",
|
||||
"ios": "expo start --ios",
|
||||
"web": "expo start --web"
|
||||
},
|
||||
"dependencies": {
|
||||
"expo": "~54.0.33",
|
||||
"expo-status-bar": "~3.0.9",
|
||||
"react": "19.1.0",
|
||||
"react-native": "0.81.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "~19.1.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
||||
"@typescript-eslint/parser": "^8.59.3",
|
||||
"eslint": "^10.3.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"prettier": "^3.8.3",
|
||||
"typescript": "~5.9.2"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
# Project Requirements — Relationship App
|
||||
|
||||
These requirements apply to all agents working on the Couples Connection app.
|
||||
|
||||
## Project Philosophy
|
||||
|
||||
- Feel private, warm, calm, intentional, and human
|
||||
- Prioritize emotional connection over productivity
|
||||
- Provide smooth, low-friction interactions
|
||||
- Avoid social media patterns, notification spam, and addiction mechanics
|
||||
- Maintain fast perceived performance
|
||||
- 5 meaningful minutes > turning relationships into homework
|
||||
|
||||
## Technology Stack
|
||||
|
||||
- **Framework:** React Native + Expo
|
||||
- **Language:** TypeScript
|
||||
- **Backend:** Supabase (Auth, Database, Realtime, Storage)
|
||||
- **Media Storage:** Cloudflare R2
|
||||
- **Push Notifications:** Expo Push Notifications
|
||||
- **Styling:** NativeWind (Tailwind CSS for React Native)
|
||||
- **UI Components:** shadcn/ui-style primitives adapted for mobile
|
||||
- **NOT Next.js.** NOT a web app. This is a mobile app built with React Native + Expo.
|
||||
|
||||
## Frontend Standards
|
||||
|
||||
- React Native with Expo (cross-platform: iOS + Android)
|
||||
- NativeWind for styling (Tailwind CSS syntax for native)
|
||||
- shadcn/ui-style component primitives adapted for mobile
|
||||
- Responsive to phone form factors only (no desktop layout concerns)
|
||||
- Smooth animations and transitions (haptics where appropriate)
|
||||
- Loading states, error states, accessible interfaces
|
||||
- Warm, intimate, calm design language
|
||||
|
||||
## Backend Standards
|
||||
|
||||
- Supabase for all backend services (auth, database, realtime, storage)
|
||||
- Row Level Security (RLS) on all tables — strict couple access isolation
|
||||
- Validate all input on both client and server side
|
||||
- Supabase Edge Functions for custom logic where needed
|
||||
- Structured error handling, no silent failures
|
||||
|
||||
## Database Standards
|
||||
|
||||
- PostgreSQL via Supabase
|
||||
- Row Level Security (RLS) enforced on all tables
|
||||
- Couples isolation: users can only access their own couple's data
|
||||
- Schema migrations via Supabase dashboard or CLI
|
||||
|
||||
## Auth Standards
|
||||
|
||||
- Supabase Auth with email magic links (initial MVP)
|
||||
- Optional Google/Apple login later
|
||||
- No traditional passwords
|
||||
- No phone auth initially
|
||||
|
||||
## Security & Privacy
|
||||
|
||||
- This app handles intimate personal data — security and privacy are paramount
|
||||
- Supabase Row Level Security on all tables
|
||||
- Private storage buckets with signed URLs
|
||||
- Strict couple access isolation (no cross-couple data leaks)
|
||||
- Encrypted transport (HTTPS/WSS)
|
||||
- No tracking, no surveillance features
|
||||
- Users must trust the app emotionally and privately
|
||||
|
||||
## Code Quality
|
||||
|
||||
- Readable, maintainable, no overengineering
|
||||
- Remove dead code, consistent formatting
|
||||
- Document non-obvious logic
|
||||
- Prefer clarity over cleverness
|
||||
|
||||
## Requirement Change Policy
|
||||
|
||||
Requirements may NOT be modified without explicit approval from `_null`.
|
||||
All proposed changes must include: rationale, technical impact, security implications, affected systems, rollback considerations.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"extends": "expo/tsconfig.base",
|
||||
"compilerOptions": {
|
||||
"strict": true
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue