Hotels.ng

Hotels.ng is Nigeria's leading platform for booking hotels and shortlets, and I'm a full-stack engineer on the team that keeps it running. My main work is the internal operations system the team uses every day: a new React and TypeScript frontend, built screen by screen on top of the new Hotels.ng API, replacing the old app without disrupting the workflows people already knew. It covers bookings with a filters panel and a full details panel, hotels, rooms and room variants, shortlets, customers and leads, and the money side: invoices, debts, payments, receipts, wallets, payouts and bank accounts. Staff can send invoices, receipts and booking messages by email and SMS from templates with a live preview, work a shared WhatsApp inbox, and attach files to comments. Dashboards and saved reports give the team a clear view of commissions, receivables and booking success. I also build the backend with FastAPI: the services and API integrations that power these features. Permissions switch off actions a person isn't allowed to do, long lists are searched on the server so results cover every page, and data is cached so screens feel instant. Migrated hotel, room and logo images load from the old image host, so nothing was lost in the move.
/ Stack
/ Highlights
- Full-stack work across the React frontend and the FastAPI backend services and API integrations that run day-to-day operations
- Bookings workspace with a filters panel for agent, status, payment medium, booking stage and dates, plus a details panel for summary, workflow, customer, hotel and payment
- Hotels, rooms, room variants, shortlets, customers and leads, with server-side search that covers every page
- Invoices, debts, payments, receipts, wallets and payouts, with bulk actions, CSV import and PDF download
- Email and SMS from templates with an editable subject and a live preview, plus a shared WhatsApp inbox with live unread counts
- Dashboards with commission charts, receivables and payables, and saved reports that download as CSV
- Permission-aware interface that disables create, delete, send, payout and other actions, with a tooltip explaining why
- Comments with file attachments on customers, hotels, rooms, invoices and bookings
- Silent token refresh shared across browser tabs, so staff stay signed in
- Query caching, one-request name lookups and a preparing-workspace screen so every table appears fully loaded