Split smarter — a social receipt-splitting app: scan receipts, assign items, split fairly, track balances, and settle with common payment methods.
| Path | Description |
|---|---|
apps/api |
Node.js + Express API (TypeScript, MongoDB, Redis) |
apps/mobile |
Expo (React Native) client with Expo Router |
config/ |
Shared app constants (name, tagline, API URL pattern) |
- Docker and Docker Compose
- Node.js 20+ (for local API or mobile without only-Docker workflows)
- For OCR: an Anthropic API key (
ANTHROPIC_API_KEY) when using Claude Vision
-
Copy env templates and fill in secrets:
cp .env.example .env cp apps/api/.env.example apps/api/.env
-
Root
.envcan supply variables referenced by Compose (for exampleANTHROPIC_API_KEY).
From the repository root:
docker compose up --build- API:
http://localhost:3001 - MongoDB:
localhost:27017(seedocker-compose.ymlfor credentials) - Redis:
localhost:6379(password in Compose)
With API dependencies available (for example after containers are up, or with local .env pointing at Mongo):
cd apps/api
npm install
npm run seedcd apps/mobile
npm install
npm run startPoint the app at your API using API_BASE_URL / mobile config as documented in config/app.config.ts and the mobile config/ folder.
| Location | Command | Purpose |
|---|---|---|
apps/api |
npm run dev |
API with nodemon (local Node) |
apps/api |
npm run build |
TypeScript compile |
apps/api |
npm run seed |
Load seed data |
apps/mobile |
npm run start |
Expo dev server |
apps/mobile |
npm run ios / android |
Open simulator / device |
Private / team use unless otherwise specified.