Technology
The stack, architecture, and code behind every product we build — plus the WhatsApp Send API reference. One place for all the technical detail.
WhatsApp platform — setup checklist
1. Environment variables (Cloudflare Pages → Settings → Environment variables)
# Meta app (already set — used for OAuth + webhook signature)
WA_APP_ID
WA_APP_SECRET
# Inbound webhook — any random string; must match the value set in Meta
WA_WEBHOOK_VERIFY_TOKEN
# "We pay Meta" — partner credit-line sharing (per-client billing)
WA_EXTENDED_CREDIT_ID # GET /{BUSINESS_ID}/extendedcredits
WA_PARTNER_TOKEN # system-user token w/ business_management
# Wallet top-ups
RAZORPAY_KEY_ID
RAZORPAY_KEY_SECRET
# Transactional email (portal OTP, contact form)
MAILER_TOKEN
# Portal (optional — public defaults exist in code)
SUPABASE_URL
SUPABASE_ANON_KEY
2. Configure the Meta webhook (to receive messages)
Meta App Dashboard → WhatsApp → Configuration:
- Callback URL:
https://abansalsolutions.com/api/wa/webhook - Verify token: the same value as
WA_WEBHOOK_VERIFY_TOKEN - Subscribe to the
messagesfield
New connections auto-subscribe their WABA; inbound messages are stored and relayed to your callback URL (or poll GET /api/v1/inbox).
3. Credit-line sharing (so Meta bills us, not the client)
Requires Meta Tech-Provider status with a credit line. Once WA_EXTENDED_CREDIT_ID + WA_PARTNER_TOKEN are set, each client's WABA is attached to our credit line on connect and the client pays us via their prepaid wallet.
4. Connect WhatsApp accounts
From the dashboard: Connect with Meta runs the embedded signup. To manage several accounts, use “+ Add another account…” in the account switcher — each connect adds one WABA you can switch between. Templates use Meta named parameters ({{name}}), and a business-initiated message needs an approved template (utility/auth approve fastest).
WhatsApp Send API
Create an API key in your WhatsApp dashboard (Developer API tab), then POST to our endpoint from any backend. We proxy to Meta and deduct each message from your prepaid wallet — no direct Meta integration needed.
Endpoint
POST https://abansalsolutions.com/api/v1/messages
Authorization: Bearer <your-api-key>
Content-Type: application/json
{
"to": "9198XXXXXXXX",
"type": "template",
"template_name": "order_update",
"language": "en_US",
"components": [
{ "type": "body", "parameters": [
{ "type": "text", "parameter_name": "name", "text": "Aarav" }
] }
]
}
Response & errors
Success returns { ok, message_id, category, charged, balance }. Errors: 401 invalid/blocked key · 402 insufficient balance · 400 with a detail field.
APK Sentinel
Tech stack
Targets Android 7.0 (API 24) and above. Single APK, no native libraries, no background services running at idle. All analysis runs on-device.
Arogent CoreX
Tech & platforms
Runs in any modern browser. Desktop builds: Windows .exe, macOS .dmg. Mobile: Android (Expo EAS), iOS in progress.
Arrows Escape
Tech stack
Android build. Progress persists locally through shared_preferences; audio via audioplayers. Adaptive launcher icons generated with flutter_launcher_icons. No network calls at runtime.
Brain Blast
Tech stack
Ten games with three difficulties each. Levels are generated from hash(game, difficulty, level), so a given level number is byte-identical for every player and difficulty ramps without hand-authoring 30,000+ boards.
CCTV Shop
Tech stack
Self-host commands
pnpm install pnpm supabase migration up pnpm dev # http://localhost:3000 pnpm build && pnpm start
ConvoyX
Tech stack
App Router with server components to keep the client bundle small. Row Level Security is the tenant isolation boundary. Maps run on Leaflet + OpenStreetMap — no API key and no billing account anywhere in the stack.
DaanX
Tech stack
Desktop ships as a Windows .exe on Tauri; Android is a Capacitor shell over the same dist/ bundle (1–3 min builds rather than 60+ compiling Rust). Licensing uses a publisher keypair whose public half is embedded at build time. Pincode lookup is built from the India Post directory.
DakshX
Tech stack
Desktop-only build — no cloud dependency at all. Requires the Rust MSVC toolchain to build and WebView2 at runtime (shipped by the installer if absent), which also drives receipt PDF export and printing. The license public key is embedded via include_bytes!.
DEAD HOUR
Tech stack
Surfaces are real CC0 PBR scans (Poly Haven — no attribution required, Steam-safe). All geometry, audio, entities and UI are generated in code. Three house sizes selectable from the main menu.
Dry Cleaning Suite
Tech stack
Self-host commands
npm install npm run dev # local preview # Deploy to Cloudflare Workers npx wrangler deploy
HiFi Gift
Tech stack
Local dev commands
npm install npm run dev # http://localhost:5173 npm run build # dist/ npm run preview # test built site
Environment (.env.local)
VITE_SUPABASE_URL=https://your-project.supabase.co VITE_SUPABASE_ANON_KEY=eyJ... VITE_RAZORPAY_KEY_ID=rzp_live_xxx VITE_STORE_NAME=YOUR_STORE_NAME
EduPlatform
Tech stack
GramVahan
Tech stack
The web portal runs on Next.js with server-side rendering for fast load on low-bandwidth rural connections. The driver Android app is a Capacitor wrapper around the same Next.js frontend, delivering native push notifications and background GPS updates.
HUSH
Tech stack
Host-authoritative networking: the host owns the Warden, tasks, loot and Bell while clients own their own movement and microphone. Transport is ENet, swapping to Steam Sockets without game-code changes. Proximity voice runs open-mic with roughly 30 m falloff; raw audio goes only to players.
Idle Adventure: Hero’s Journey
Tech stack
Android-first via Capacitor. Saves are versioned, and offline progression is capped by design so returning is a reward rather than a requirement. Implements a written game design bible held in-repo.
Immortal Ascension
Tech stack
Offline single-player. State on Riverpod, persistence on Hive, with a deliberate multi-location save pattern so a crash or upgrade cannot cost a run. flutter analyze clean, 239 tests passing, ~21 MB release APK.
Wedding Invite Studio
Tech stack
Private admin-controlled issuing app. Invitations are stored locally in SQLite so the app works with no connection, with crypto used for invite integrity and the native share sheet for delivery.
Jewelry B2B Platform
Tech stack
Local dev
pnpm install pnpm db:migrate pnpm seed:demo # sample buyers + SKUs pnpm dev # http://localhost:3000
Deploy
pnpm build npx opennextjs-cloudflare deploy
Stripe webhooks point to /api/webhooks/stripe, ShipStation hooks to /api/webhooks/shipstation. Both signed and verified.
JurisX
Tech stack
Android target via Capacitor, Supabase in the Mumbai region. India-only, English-only, no AI, and built to stay on free tiers. Statute library reads offline; hearing reminders use local notifications.
KhataX
Tech stack
Android app backed by Firestore, with CSV import for migrating an existing book, PDF report export, transliteration for Indian-language names, and an app lock screen over Google sign-in.
LedgerX
Tech stack
The written specification is the authority and the implementation conforms to it. Postgres/Supabase backend under versioned migrations. Money is decimal.js throughout — never floating point — and every write is validated with Zod.
Legacy Empire Tycoon
Tech stack
Server-authoritative simulation: resources, population growth, building and the world tick all run in ServerScriptService, with the client handling UI only. Resources and buildings are data definitions, so future ages are added as content rather than code.
Mobileecare
Tech stack
Local dev
npm install npm run dev # http://localhost:5173 npm run build # dist/
Deploy frontend
npx wrangler pages deploy dist \ --project-name mobileecare
Deploy backend Lambdas
cd backend/ npm run deploy:razorpay npm run deploy:shiprocket npm run deploy:gemini-chat npm run deploy:ses-mailer
Each Lambda is independent — only redeploy the one that changed. R2 upload Worker deploys separately via cd r2-worker && wrangler deploy.
OperiX
Tech stack
Fully offline Windows desktop app. The ledger enforces its rules in the database: 25 tables and 5 SQLite triggers reject unbalanced vouchers, edits to posted vouchers, and postings into closed periods. Ships Noto fonts for 11 Indian scripts plus Arabic.
Orbit Rush
Tech stack
Pinned to Unity 6000.4.11f1. Art and audio are 100% procedural — planets, textures, music and SFX are generated in C# at runtime, so there are no external asset files to lose. Portrait, minSdk 26. Library/ is not committed; Unity regenerates it.
KPL Mart
Tech stack
Cloudflare Pages deploy
# We handle this for you — for reference: wrangler pages deploy .next/static \ --project-name=parul-tea \ --branch=main
RecoveryX
Tech stack
Agents sign in with a User ID and a 6-digit PIN; internally the app maps that to a real auth account, so no email is ever shown in the field. Uses background geolocation for visit tracking, native biometrics for unlock, and local notifications for prompts.
REDYPLAST
Tech stack
Built as a growth platform rather than a catalog — education content, lead capture, dealer support and SEO structure, with the product catalog and content managed in Supabase so the client team edits without a developer.
RemunisX
Tech stack
Multi-tenant monorepo split into shared, db, engine, filings, documents, onboarding, payroll and api packages. Full suite is 452 tests. Tests run with --concurrency=1 because each package spins up its own in-memory PGlite. Tenant isolation is enforced with row-level security.
ReNew
Tech stack
Trust-first refurbished-phone storefront: four-tier condition grading, a 51-point check with a per-unit report and IMEI, stated battery health, tier-based 6–12 month warranty, and 7–15 day returns — each feature mapped to a specific reason buyers abandon refurbished carts.
RepairExpress
Tech stack
Local dev
npm install npm run migrate # runs SQL migrations npm run seed # brands, models, issues, zones npm start # http://localhost:3000
Production (PM2 + Nginx)
# With PM2 pm2 start ecosystem.config.js pm2 save pm2 startup # Nginx reverse proxy → port 3000, with Certbot SSL
Environment variables (.env)
DATABASE_URL=postgres://... SESSION_SECRET=random_long_string GOOGLE_CLIENT_ID=... GOOGLE_CLIENT_SECRET=... SMTP_HOST=smtp.zoho.in RAZORPAY_KEY_ID=... RAZORPAY_KEY_SECRET=...
SEO Internal Linker
Tech stack
Crawls with requests + BeautifulSoup/lxml, embeds each page with sentence-transformers, and scores candidate links by semantic similarity rather than keyword overlap. JavaScript-rendered pages are fetched through Playwright. Output is an Excel sheet for human review — the tool never edits the site.
ShipShiftX
Tech stack
Frozen to a single Windows .exe with PyInstaller, so end users need no Python install. Sets an explicit AppUserModelID so the taskbar icon matches the executable. Scheduled auto-backup plus manual backup/restore; per-device license verification. An optional cloud companion brings the same data to web and Android on Supabase.
StayDesk
Tech & platforms
Builds: Windows .exe / .msi, macOS .dmg, Linux .AppImage / .deb. Total binary ~12 MB. Microsoft Store ready.
Install (silent installer flags)
# Windows (admin PowerShell) Start-Process .\StayDesk_1.0.0_x64-setup.exe -ArgumentList '/S' -Wait # macOS open StayDesk_1.0.0.dmg # Linux (Debian/Ubuntu) sudo dpkg -i staydesk_1.0.0_amd64.deb
STMD Entry
Tech & platforms
Install (CLI)
# Windows .\STMD-Entry_1.0.0_x64-setup.exe # Android adb install stmd-entry-1.0.0.apk
StudyAI
Tech stack
VanijyaX
Tech stack
One codebase ships as a Tauri desktop build, a Capacitor Android APK and a web app. Built to a written parity specification. Local SQL runs in-app through sql.js, secrets are held in Tauri Stronghold, and lists are virtualised for large ledgers.
Vantage
Tech & platforms
License key format
ABS-VANT-SUB-2026-XXXXXXXX-XXXX
Sideload for testing (Android)
# Or sideload for testing adb install vantage-1.0.0.apk
VenueDesk
Tech & platforms
Ships as: Windows .exe, macOS .dmg, Android .apk. Pure offline operation; cloud sync optional.
Install (CLI)
# Windows .\VenueDesk_1.0.0_x64-setup.exe # Android (sideload APK) adb install venuedesk-1.0.0.apk
WahakX
Tech stack
Three surfaces — customer app, driver app, admin console — on one Supabase backend with no custom server. Serviceability and fares are SQL RPCs over Postgres + PostGIS; auth is phone OTP; live tracking rides Realtime. Order creation with a final fare runs in an Edge Function so the client cannot tamper with the price.
WhatsApp Business API
Tech stack
Example — OTP template
Template name: otp_login Category: AUTHENTICATION Language: en Body: "Your {{1}} login code is *{{2}}*. Valid for 10 minutes." Footer: "Do not share this code with anyone." Buttons: Copy Code → {{2}}
Send a template (Meta Cloud API)
# Send an OTP message via Meta Cloud API POST https://graph.facebook.com/v20.0/{PHONE_NUMBER_ID}/messages Authorization: Bearer {ACCESS_TOKEN} Content-Type: application/json { "messaging_product": "whatsapp", "to": "+919876543210", "type": "template", "template": { "name": "otp_login", "language": { "code": "en" }, "components": [{ "type": "body", "parameters": [ { "type": "text", "text": "Bansal Solutions" }, { "type": "text", "text": "847291" } ] }] } }
Environment variables
# .env additions WA_PHONE_NUMBER_ID=1234567890 WA_ACCESS_TOKEN=EAABwzLixnjYB... WA_WEBHOOK_VERIFY_TOKEN=my_secure_random_token WA_BUSINESS_ACCOUNT_ID=9876543210
Webhook handler (Node / Express)
# Minimal webhook handler (Node / Express) app.get('/webhook', (req, res) => { // Verify token challenge from Meta if (req.query['hub.verify_token'] === process.env.WA_WEBHOOK_VERIFY_TOKEN) res.send(req.query['hub.challenge']); else res.sendStatus(403); }); app.post('/webhook', (req, res) => { // Handle incoming messages and status updates const { entry } = req.body; entry?.[0]?.changes?.[0]?.value?.messages?.forEach(handleMessage); res.sendStatus(200); });
Yash International
Tech stack
Deploy (Cloudflare)
# We handle this for you — for reference: wrangler deploy # Cloudflare Worker (API) wrangler pages deploy dist # Catalog PWA