feat: Expo project bootstrap (v1.0.1) + untrack private docs

This commit is contained in:
null 2026-05-13 04:21:43 -05:00
parent 2677febe03
commit 1a1357d5c9
26 changed files with 10048 additions and 1269 deletions

25
.eslintrc.js Normal file
View File

@ -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',
],
};

52
.gitignore vendored Normal file
View File

@ -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/

10
.prettierrc Normal file
View File

@ -0,0 +1,10 @@
module.exports = {
semi: true,
singleQuote: true,
tabWidth: 2,
useTabs: false,
trailingComma: 'all',
printWidth: 100,
bracketSpacing: true,
arrowParens: 'always',
};

20
App.tsx Normal file
View File

@ -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',
},
});

View File

@ -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)*

View File

@ -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

View File

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

View File

@ -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

30
app.json Normal file
View File

@ -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"
}
}
}

1
app/.gitkeep Normal file
View File

@ -0,0 +1 @@
# App placeholder

9
app/_layout.tsx Normal file
View File

@ -0,0 +1,9 @@
import { Stack } from 'expo-router';
export default function RootLayout() {
return (
<Stack>
<Stack.Screen name="index" />
</Stack>
);
}

9
app/index.tsx Normal file
View File

@ -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>
);
}

1
assets/.gitkeep Normal file
View File

@ -0,0 +1 @@
# Assets placeholder

BIN
assets/adaptive-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
assets/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/splash-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

1
components/.gitkeep Normal file
View File

@ -0,0 +1 @@
# Components placeholder

1
constants/.gitkeep Normal file
View File

@ -0,0 +1 @@
# Constants placeholder

View File

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

8
index.ts Normal file
View File

@ -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);

1
lib/.gitkeep Normal file
View File

@ -0,0 +1 @@
# Utilities placeholder

9846
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

28
package.json Normal file
View File

@ -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
}

View File

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

6
tsconfig.json Normal file
View File

@ -0,0 +1,6 @@
{
"extends": "expo/tsconfig.base",
"compilerOptions": {
"strict": true
}
}