SikaLink is a React Native and FastAPI cross-border payment platform designed for sending, receiving, holding and converting money between Ghana and international markets. It features multi-currency wallets, FX quotes, recipient management, transfer tracking, transaction history, notifications and secure payment workflows.
# SikaLink
Production-style MVP scaffold for a Ghana-focused cross-border wallet supporting GHS, USD, GBP, AUD, CAD, EUR and CHF.
## Apps
- `mobile/` — Expo + React Native + TypeScript client
- `backend/` — FastAPI service with wallet, FX quote, recipient and transfer APIs
The backend creates `backend/sikalink.db` automatically on startup. Its SQLite schema stores users, currency wallets, recipients/favourites, FX quotes, transfers and notifications. SQLite is appropriate for local MVP development; migrate the same schema to managed PostgreSQL before operating real-money workloads.
## Run locally
```bash
# API
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
# Mobile (a second terminal)
cd mobile
npm install
npm start
```
The app defaults to demo mode, so it works without the API. Set `EXPO_PUBLIC_API_URL=http:// :8000/api/v1` and `EXPO_PUBLIC_DEMO_MODE=false` to use FastAPI from a device.
## Important production boundary
This repository implements the product experience and an auditable ledger-shaped API, but does **not** move real money. Before launch, connect licensed banking/payment and FX providers, use a double-entry ledger, complete Bank of Ghana and destination-country legal review, implement KYC/KYB/AML/sanctions screening, custody safeguards, webhook verification, idempotency, reconciliation, monitoring, encryption and secrets management.