Mobile platform connecting users with nearby POS merchants for cash withdrawals and deposits across West Africa.
# P-Port
P-Port is a mobile fintech platform designed for regions where ATM infrastructure is limited and POS agents are the primary access point for cash withdrawal and deposit services.
Instead of users searching for a POS merchant, P-Port enables on-demand matching between customers and nearby merchants, allowing cash access through a request β offer β negotiation β transaction β confirmation workflow.
---
## π Core Idea
A "mobile ATM network" where POS merchants move toward demand instead of users searching for availability.
---
## π± Tech Stack
- Frontend: Kotlin (Android Studio)
- Backend: Supabase (Auth, Database, Triggers)
- Server Logic: Supabase Edge Functions
- Real-time updates via Supabase subscriptions
---
## π Core User Flow
Customer β creates cash request
Merchant β sees request β sends offer
Customer β accepts or counters offer
Merchant β accepts final terms
System β creates transaction
Both parties β confirm completion
Customer β rates merchant
Receipt β generated automatically
---
## β
What Works End-to-End (Current Production State)
### π Authentication
- Email/password sign-up & login
- Role selection (Customer / Merchant)
- Country selection (ISO2 format)
- Session token + user ID stored locally
### π€ Profile System
- Auto-profile creation via database trigger
- Stores: user ID, role, country
### π Customer Side
- Map container renders successfully
- Cash request creation works
- Requests are written to `requests` table
- Calls `create-request` Edge Function
### π§βπΌ Merchant Side
- Can view open & negotiating requests
- Fetches live request list from backend
- Sends offers stored in `offers` table
### π€ Offer System
- Customers receive offers in real time
- Customers can:
- Accept offer
- Counter offer
- Accept triggers `accept-offer` Edge Function
### π³ Transaction System
- Transaction created after offer acceptance
- Both parties must confirm completion
- Once both confirm β transaction closes
### β Ratings
- Customer can ra β¦