Logo Lanfrica

ZaydAntony/payflow-frontend

Domain:

digital infrastructure

Record type:

software
Creator:
Zay
Host:
Frontend to visualize my Mpesa STK push as copy paste components. # PayFlow **STK push, as copy-paste components.** You know that feeling when a customer says "I'll pay via M-Pesa" and you suddenly remember you have to deal with OAuth tokens, Base64 passwords, and a callback URL that Safaricom will silently reject if it's not HTTPS? Yeah. PayFlow exists so you never have to feel that again as a vibecoder. Connect your till or paybill once. Get a payment link. Your customer's phone buzzes with a real STK prompt. You get paid. That's the whole pitch. --- ## What's actually in here - πŸ” **Multi-provider payments** β€” Daraja (M-Pesa) today, KCB Buni too. One `PaymentProfile`, one adapter interface, zero if/else spaghetti. - πŸ’³ **Checkout pages** β€” fixed price, "pay what you want," or fully API-driven. Shareable links, or embed the code directly. - πŸ“Š **Live transactions dashboard** β€” watches pending payments flip to completed in real time, no manual refresh required. - πŸ”’ **Secrets encrypted at rest** β€” every credential, every provider, no exceptions. - ⚑ **A frontend that doesn't look like a Bootstrap tutorial** β€” jade, parchment, and mango, with a signature ripple animation that shows up wherever something's actually happening. ## The stack **Backend:** Django + DRF, JWT auth via Djoser, MySQL, Fernet encryption for every stored secret. **Frontend:** React + Vite + Tailwind, React Router, all wired against the real API β€” no mock data anywhere. ## Get it running ### Backend ```bash git clone github.com cd Payflow-backend pipenv install Fill in your own .env credentials # fill in your DB + Daraja/KCB credentials python manage.py migrate python manage.py runserver ``` ### Frontend ```bash cd payflow-frontend npm install cp .env.example .env # point VITE_API_BASE_URL at your backend npm run dev ``` ### The one gotcha that will eat an hour of your life if you skip this Safaricom's sandbox **will not** call back to `localhost`. Tunnel your backend (`ngrok http 8000`) and access it through …

Languages

Licenses