Personal invoicing and business management app for an electrical and AC repair shop
Solo Developer
April 2026 – Present
Full-stack Web Application
Production
Personal project — codebase not public

Cool Care is a full invoicing and business management platform I built for my family's electrical and AC repair business in Islamabad. It covers the complete workflow — quotations, invoices, payments, customer tracking, and a customer portal. The dashboard surfaces business-critical KPIs like outstanding AR, overdue amounts, collected revenue, and quote conversion rates alongside a revenue chart and payment method breakdown. Customers receive a unique link on their receipt to view their own invoices and download PDFs without any login.
The business was managing invoices and customer records on paper or ad-hoc phone messages. There was no way to know who owed what, which invoices were overdue, or how much revenue had come in during a given period without manually flipping through paper. Customers had to call to check their invoice status. Payment methods like JazzCash and EasyPaisa (which the business actually uses) were not supported by typical invoicing software.
A centralized full-stack platform built with SvelteKit 5, Drizzle ORM, and Neon PostgreSQL. The dashboard shows real-time KPIs — outstanding AR, overdue amounts, collected this month, and quote conversion rate — alongside a revenue chart and payment method breakdown. Invoices support partial payments and status progression (pending, partial, paid, overdue). Payments can be recorded as cash, JazzCash, EasyPaisa, or bank transfer. A customer portal provides token-based access so clients can view their invoices and download PDFs without any account setup.
Dashboard with KPI grid covering outstanding AR, overdue amounts, collected this month, and quote conversion rate
Revenue chart with configurable time ranges (7d, 30d, 6m, custom) built with layerchart AreaChart
Payment method breakdown pie chart built with layerchart PieChart with interactive legend
Full invoice lifecycle: draft, pending, partial, paid, overdue, with status progression dialog
Multi-payment support per invoice with automatic balance tracking and status updates
Payment methods aligned with local usage: cash, JazzCash, EasyPaisa, bank transfer, custom
Sequential invoice numbering with zero-padded counters (001, 002…) stored in its own DB table with atomic upserts
Quotation management with one-click conversion to invoice
Customer management with active/inactive toggle and per-row loading states
Customer portal with token-based access — no login required, unique URL printed on each receipt
Callout component with 5 variants (info, success, warning, error, note) for contextual messaging
Reusable UI component library built with tailwind-variants: buttons, badges, dialogs, selects, inputs, tables, date pickers, skeleton loaders
Brutalist design system with fat borders (border-2), heavy shadows (brutal-shadow), and rounded corners (rounded-2xl/3xl)
The original code identified advance payments by checking if payment notes contained specific text. I replaced this pattern with a proper isAdvance boolean column on the payments table, making queries explicit and eliminating the fragile string-matching logic across create, update, and convert routes.
Invoices initially used random CUID2 IDs which looked unprofessional on printed receipts. I implemented a DB counter table with atomic upserts to generate sequential zero-padded numbers (001, 002…) so printed invoices look legitimate and are easy to reference.
The portal needed to be accessible enough that a shop customer with minimal tech comfort could open a link and see their invoices. I used token-based access with a unique URL printed on their physical receipt instead of requiring login credentials. A data availability callout informs customers that invoices before the system cutover date are not available.
Most SaaS invoicing templates assume Stripe or credit card as payment methods. This business actually gets paid via JazzCash, EasyPaisa, cash, and bank transfer. I replaced the default 'online' method with these real options in the payment form, validation schema, and all queries.
Actively used for daily business operations. The platform replaced paper-based invoicing and ad-hoc phone communication for tracking customer dues. The dashboard gives the business owner immediate visibility into outstanding revenue, overdue accounts, and monthly collections without manual work.