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 messages field

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

Kotlin 2.1Jetpack ComposeML Kit AGP 8.13minSdk 24JDK 21

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

Next.js 14TypeScriptPrisma PostgreSQLNextAuthTailwind Tauri 2Expo / RN

Runs in any modern browser. Desktop builds: Windows .exe, macOS .dmg. Mobile: Android (Expo EAS), iOS in progress.

Arrows Escape

Tech stack

FlutterFlameDartAdMobin_app_purchaseshared_preferences

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

KotlinJetpack ComposeMaterial 3Android

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

Next.js 16React 19.2Supabase Tailwind v4TypeScriptRazorpay

Self-host commands

pnpm install
pnpm supabase migration up
pnpm dev  # http://localhost:3000
pnpm build && pnpm start

ConvoyX

Tech stack

Next.js 16TypeScriptTailwind v4SupabaseLeafletRecharts

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

Tauri 2ReactSQLiteCapacitorSupabasei18next

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

Tauri 2RustReactSQLitei18next

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

Godot 4.5GDScriptSteam

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

Vite 7Vanilla JSSupabase Cloudflare WorkersWrangler

Self-host commands

npm install
npm run dev   # local preview

# Deploy to Cloudflare Workers
npx wrangler deploy

HiFi Gift

Tech stack

Vite 7React 19React Router 7 SupabaseCloudflare Worker + R2Razorpay ShiprocketWhatsApp Cloud APIAWS SES · SNS Canvas APIFramer Motion

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

Next.js 14TypeScriptSupabase Cloudflare R2ffmpegRazorpay Workers

GramVahan

Tech stack

Next.js 14TypeScriptPrisma PostgreSQLCapacitor 8React-Leaflet RazorpayCloudflare TunnelDocker

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

GodotGDScriptENetSteam Sockets

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

PixiJSTypeScriptCapacitorHowler.js

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

FlutterDartRiverpodHiveGoogle Fonts

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

FlutterDartsqfliteaudioplayersimage_picker

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

Next.js 15React 18Supabase Stripe ConnectAlgoliaKlaviyo ShipStationPuppeteerOpenNext

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

Vite 8React 19TypeScript 6Tailwind v4Capacitor 8Supabase

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

FlutterDartFirebase AuthCloud FirestoreGoogle Sign-In

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

ViteReactTypeScriptCapacitorSupabasedecimal.jsZod

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

RobloxLuauRojo

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

Vite 7React 19TypeScript React Router 7SupabaseFramer Motion AWS LambdaCloudflare R2Gemini API

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

Tauri 2React 19Drizzle ORMSQLitetesseract.jsZod

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

Unity 6.4C#IL2CPPBuilt-in RPAndroid ARM64

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

React 19React Router 7TypeScript SupabaseCloudflare R2Razorpay ShiprocketWhatsApp Cloud APIBulk SMS (DLT) ResendVertex AIGA4 · PostHog · Sentry

Cloudflare Pages deploy

# We handle this for you — for reference:
wrangler pages deploy .next/static \
  --project-name=parul-tea \
  --branch=main

RecoveryX

Tech stack

ReactTypeScriptViteCapacitorSupabaseLeafletRecharts

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

Next.jsTypeScriptSupabaseTailwind

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

TypeScriptTurboreponpm workspacesPostgresPGlite

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

HTMLCSSJavaScriptStorefront templates

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

Node.js 22+Express 4EJS PostgreSQLPassportbcryptjs MulterNodemailerHelmet

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

Pythonsentence-transformersPyTorchscikit-learnPlaywrightnetworkx

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

PythonPySide6 / QtSQLitePyInstallerSupabase

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

Tauri 2React 19Vite 7 Tailwind v4SQLite (local)jsPDF

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

Next.js 15Tauri 2Capacitor 8 html2canvasjsPDFxlsx

Install (CLI)

# Windows
.\STMD-Entry_1.0.0_x64-setup.exe

# Android
adb install stmd-entry-1.0.0.apk

StudyAI

Tech stack

Next.jsTypeScriptSupabase Gemini APICloudflareTailwind

VanijyaX

Tech stack

React 19ViteTypeScriptTauriCapacitor 8Supabasesql.js

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

Next.js 15Expo / RNSupabase MapboxTurborepopnpm

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

Next.js 15React 19Tauri 2 Capacitor 8Tailwind v4jsPDF crypto-js

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

FlutterReactViteSupabasePostGISEdge Functions

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

Meta Cloud API (v20+) WhatsApp Business Platform Webhooks (Node / Cloudflare Worker) Supabase / PostgreSQL BullMQ (message queuing) Razorpay (payment links in WA)

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

Vanilla JSSupabaseCloudflare Workers Service WorkerPWA

Deploy (Cloudflare)

# We handle this for you — for reference:
wrangler deploy           # Cloudflare Worker (API)
wrangler pages deploy dist # Catalog PWA