A family expense sharing app built with React Native, allowing family members to track and manage shared expenses. Inspired by SplitWise, but focused on family scenarios.
Important
This project is being developed with Claude 3.7 Sonnet and Claude 4.5 Sonnet in a vibe coding style, while also serving as a learning project for React Native and Tailwind CSS.
I'm a web developer without mobile development experience, so everything is still a big learning journey 💫
This is an MVP (Minimum Viable Product) for a shared expense management app. Split It allows you to register expenses in groups and track who paid for what.
- React Native with Expo (SDK 53)
- TypeScript for type safety
- Supabase (PostgreSQL) for backend
- NativeWind v4 (Tailwind CSS for React Native)
- React Navigation (Stack + Bottom Tabs)
- React Hook Form for form management
- Node.js 18.x - 22.x (22.15.1 LTS recommended)
- npm 9+ or yarn or bun
- Android Studio (for Android) or Xcode (for iOS)
- Supabase account
- Physical device with Expo Go app or configured emulator
- Create a new project on Supabase
- Run migrations from
supabase/migrations/:20250501201906_initial_schema.sql20250503183118_tags.sql
Or use Supabase CLI:
npx supabase db reset-
Clone the repository:
git clone https://github.com/Falcowoski/split-it.git cd split-it -
Create a
.env.localfile in the root directory:EXPO_PUBLIC_SUPABASE_URL=your_supabase_url EXPO_PUBLIC_SUPABASE_KEY=your_supabase_anon_key
-
Install dependencies:
npx expo install
-
Start the development server:
npx expo start
-
Run on your device:
- Scan the QR code with Expo Go (Android) or Camera app (iOS)
- Or press
afor Android emulator /ifor iOS simulator
npx eas build -p android --profile local# Android
npx eas build -p android
# iOS
npx eas build -p iosNote
Requires EAS account. Run npx eas login first.
- ✅ User management
- ✅ Payment methods with custom colors
- ✅ Expense groups
- ✅ Expense tracking within groups
- ✅ Tag system for categorizing expenses
- ✅ Expense editing and soft delete
- ⏳ User authentication (planned)
- ⏳ Expense splitting between users (planned)
- ⏳ Payment history (planned)
- ⏳ Charts and statistics (planned)
src/
├── components/ # Reusable components
│ └── ui/ # Design system components
├── helpers/ # Utility functions
├── navigation/ # Navigation configuration
├── providers/ # Context providers
├── screens/ # App screens (organized by feature)
├── services/ # Supabase API services
├── theme/ # Design tokens
└── types/ # TypeScript type definitions
The app uses soft deletes (deleted_at field) for all entities:
- users: App users (no authentication yet)
- groups: Expense groups
- payment_methods: Payment methods with colors
- tags: Categorization tags with colors
- expenses: Expenses with relations to users, groups, and payment methods
- expense_tags: Many-to-many relationship between expenses and tags
This is a personal learning project, but feel free to fork and experiment!