All work

Built for a phone shop

Installments management system

An installments system for a phone shop: customers, contracts and payments in one place, with overdue tracking and automatic WhatsApp reminders.

Client
A phone shop
Reminders
Automatic, via WhatsApp
Installments system, reminder distribution
Installments system, dashboard
Installments system, message log

About the project

An installments system for a phone shop: customers, contracts, payments and outstanding balances in one place, with follow-up on anyone who falls behind.

Its core is the reminders: the system sends every customer an automatic WhatsApp reminder before their installment is due, and spreads the messages across the month so the daily sending cap is never exceeded.

The screens on this page use demo data.

Highlights

A clear dashboard

Total due, active contracts, this month’s collections and the number overdue, with a button for recording a quick payment.

Installments system, dashboard with demo data

Reminders spread across the month

The system spreads contracts across the days of the month within a daily cap, so every reminder arrives on time without breaching sending limits.

Installments system, reminders spread across the month

WhatsApp message log

Every message’s status is visible; failed sends are logged and retried automatically on the next run.

Installments system, message log with demo data

Settings in the owner’s hands

Shop name, how many days before the due date to remind, retry days and the daily message cap.

Installments system, settings with demo data
Installments system, dashboard with demo data
Installments system, reminders spread across the month
Installments system, message log with demo data
Installments system, settings with demo data

How it’s built

Technology

  • React
  • TypeScript
  • Vite
  • Tailwind CSS
  • Supabase
  • PostgreSQL
  • pg_cron
  • Deno
  • WhatsApp Cloud API
  • No backend server: the dashboard talks to the database directly, and every table is protected by its own permission policies.
  • A scheduled job runs every day at 9 a.m. Baghdad time and triggers a function that sends the reminders through the WhatsApp Cloud API.
  • Every reminder is claimed before it is sent, so no customer gets the same message twice.
  • Due days run from 1 to 28, so month-end contracts never pile up on one day in February.
  • If a send fails or the cap is reached, it retries on the due day and the two days after, then stops.
  • 138 automated checks build a temporary database and verify all of the logic, without sending a single message.

Have a similar idea?

Tell us about it, and we’ll work out the scope, the detail and the cost together.