About this software
About Baki Khata: Digital Due-Book with SMS Reminders
Baki Khata is a Laravel 12 + Filament 4 application that replaces paper due-books for shops that sell on credit. It tracks what customers owe and what suppliers are owed through gave/got ledger entries, groups entries into orders with receipt photos, sends SMS due reminders through any HTTP gateway (with presets for common providers), and prints Bangla or English PDF statements. A REST API with offline sync supports a mobile app (not included). Admin and shop-owner roles keep every shop's ledger private.
Why Baki Khata: Digital Due-Book with SMS Reminders
What makes it better
than the alternatives
- 01
Universal SMS gateway
Ready-made presets plus custom HTTP configuration (URL, method, body type, parameters, success rule) so any provider works.
- 02
Idempotent ledger entries
Client UUIDs prevent duplicate balances when a request is retried, and balances are always recalculated from entries, never typed in.
- 03
Orders with receipt photos
One order holds many entries, each with an optional image stored in public/receipts, and the order has its own balance.
- 04
Offline-first REST API
Push/pull sync endpoints let a mobile app work without a connection and reconcile changes later (the app itself is not part of this source).
- 05
Bangla and English statements
PDF with bundled Hind Siliguri font (mPDF 8.3) and thermal-printer text lines, both with running balances.
Ledger
- Customers and suppliers in one list with phone
- address and a balance. A gave entry adds to what the customer owes
- a got entry reduces it
- and the balance is always worked out from the entries. Entries carry an amount
- a date and time
- a note and an optional receipt photo.
Orders
- One order holds many entries and has its own balance
- a numbered reference (ORD-000001) and a send-message button.
SMS reminders
- Templates for customers and for orders with placeholders
- a live preview with the credit count
- and a log of sent
- failed and queued messages. Credits are charged when a message is queued and returned when it fails. Failed messages can be resent and stuck ones are re-queued.
SMS gateways
- Ready-made presets plus a custom HTTP gateway (URL
- method
- body type
- parameters
- success rule). Credentials are stored encrypted and hidden on the edit page. Nothing is sent until you enable a gateway.
Statements
- A PDF per customer with a running balance in Bangla or English using the bundled Hind Siliguri font
- and text lines for a thermal printer.
Roles
- Admin (all shops
- users
- gateways
- settings) and shop owner (own customers
- orders
- messages and templates only). Disabled accounts lose access at once.
REST API
- Sanctum tokens
- throttled login
- dashboard
- customers
- entries
- reminders
- reports and offline push and pull sync with idempotent entries. The mobile app itself is not included.
Dashboard
- Total due
- total payable
- today's collection
- recent orders
- highest dues and a 14-day SMS chart.
Setup
- Web installer
- Docker image with MySQL and HTTPS
- a scheduler that sends the SMS queue
- demo mode that is off by default
- and 59 automated tests.
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| PHP | — | — | Web, API | 94.3% |
| SQL | — | — | Database | 5% |
| Shell | — | — | Scripts | 0.6% |
- Primary language
- PHP 8.2+
- Framework
- Laravel 12 + Filament 4
- Database
- MySQL 8.0 / MariaDB 10.6+ (SQLite for testing)
- Authentication
- Laravel Sanctum (token-based API) + Filament session auth
- Licence
- Single-site
- Screens
- 10
- Database tables
- 10
- Supported languages
- Bangla (bn), English (en)
- Browser support
- Modern browsers (Chrome, Firefox, Safari, Edge — last 2 versions)
| Minimum | Recommended | |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB RAM | 1 GB RAM |
| OS | PHP 8.2+ with pdo_mysql, mbstring, intl, gd, curl, fileinfo, xml, zip, bcmath; Apache 2.4+ or Nginx; MySQL 8.0+ or MariaDB 10.6+ | PHP 8.2+ with pdo_mysql, mbstring, intl, gd, curl, fileinfo, xml, zip, bcmath; Apache 2.4+ or Nginx; MySQL 8.0+ or MariaDB 10.6+ |
| Est. monthly hosting | $10 | $10 |
```bash cat > .env <<ENV APP_KEY=base64:$(openssl rand -base64 32) DB_PASSWORD=$(openssl rand -hex 16) ADMIN_EMAIL=you@yourcompany.com ADMIN_PASSWORD=choose-a-strong-password APP_URL=https://khata.example.com APP_PORT=8080 ENV docker compose up -d --build ```
```bash # create a MySQL database "baki", unzip into /var/www/baki, then composer install --no-dev --optimize-autoloader cp .env.example .env && php artisan key:generate # set DB_*, ADMIN_* and APP_URL in .env php artisan migrate --force --seed && php artisan storage:link touch storage/installed # point nginx at /var/www/baki/public and add the cron line (see HowToSetup.md) ```
```bash composer install cp .env.example .env && php artisan key:generate # create a MySQL database, set DB_* and ADMIN_* in .env php artisan migrate --seed && php artisan serve ```
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (4 minor)
Composer dependencies present and locked; no critical vulnerabilities detected; moderate code duplication and some oversized files; structure is generally sound; strong auth on mutating endpoints; minor ownership gaps on read-only api routes; several missing foreign key indexes and unscoped delete paths; no sql injection found. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.