Feb 2026 — Present
RL TECHZONE PVT (LTD) — E-Commerce Computer Store
A full-stack e-commerce platform for a computer retail business.
A modern, full-stack e-commerce platform built with Next.js 16, TypeScript, Prisma, and Stripe. Features a fully content-editable storefront (hero, homepage sections, navigation, promo bar — all admin-managed with no redeploy needed), secure multi-gateway checkout, order management, a PostgreSQL database with complete order tracking, PDF receipt generation, one-way ERP catalog sync, and multi-branch inventory management.
Tech Stack
Core Framework
- Next.js 16.1.6 (App Router only)
- React 19.2.3
- TypeScript 5 (strict mode)
- pnpm 10+
- Node.js 24+
Database & ORM
- PostgreSQL
- Prisma 7.5 — the newer prisma-client generator, not the classic client
- @prisma/adapter-pg + pg — native Postgres driver, not the default query-engine binary
Authentication
- Clerk — hosted sign-in, JWT session management, role stored in session claims
Payments
- Stripe — Card payments via Stripe Checkout
- KOKO — buy-now-pay-later (Sri Lanka), hand-rolled RSA-SHA256 signing
- Payzy — server-side checkout proxy
- Bank Transfer — manual/offline flow, no gateway
Storage
- Backblaze B2 (default) — S3-compatible API via @aws-sdk/client-s3
- Vercel Blob
- Supabase Storage — chosen per upload
- @react-email/components + render — JSX email templates
- Nodemailer over SMTP
- react-email dev server for local template preview
UI & Styling
- Tailwind CSS v4 (@tailwindcss/postcss)
- Radix UI (radix-ui) + shadcn/ui conventions
- class-variance-authority, clsx, tailwind-merge
- lucide-react icons
- Framer Motion 12, tailwindcss-animate / tw-animate-css
- Embla Carousel + autoplay
- next-themes, sonner, cmdk, vaul, input-otp, react-phone-number-input
Data, Charts & Interaction
- Recharts 3.8 — dashboard charts
- Axios — HTTP client
- slugify
PDF & Documents
- pdf-lib — server-side PDF order receipts
Analytics & Monitoring
- @vercel/analytics
- @vercel/speed-insights
- IndexNow pings on product changes
API Documentation
- Swagger/OpenAPI at /api-docs (SUPER_ADMIN gated) via next-swagger-doc + swagger-ui-react
Tooling & Code Quality
- ESLint 9 + eslint-config-next
- Prettier 3 + prettier-plugin-prisma
- Husky + lint-staged
- tsc --noEmit type checking
- tsx for utility scripts (env-check, env-add, db-check)
CI/CD & Deployment
- GitHub Actions — lint/typecheck/format/Prisma-validate/build/tests on every PR, plus testing & production deploy workflows
- Vercel — primary deployment target (pnpm vercel-build)
- Docker — multi-stage build, Node 24 Alpine, non-root user, Next.js standalone output
Features
Storefront
- +Product catalog served by a single catch-all router — category, subcategory, product-detail, and pre-owned listing pages
- +Product detail pages with image galleries and dynamic spec tables driven by per-category specification templates
- +Site search (/search) matching product name, brand, and category — non-canonical filtered results marked noindex
- +Order tracking by Order ID, PDF receipts, and a "Request Quotation" email flow
- +Static/informational pages — About, Blog, Careers, Gallery, Team, Reviews, Contact, Delivery, FAQs, policies, Services, Support
Checkout & Payments
- +Card via Stripe Checkout — cart re-priced server-side against the database; client-submitted prices are never trusted
- +KOKO Pay (buy-now-pay-later) — RSA-SHA256-signed payload redirect
- +Payzy — checkout payload proxied server-side to the external gateway
- +Bank Transfer — offline flow with an optional payment-slip upload
- +Every method writes a Payment record (method, amount, status, paidAt) linked to the order; CASH/OTHER exist for manually entered orders
Admin Dashboard
- +Revenue/orders analytics with period-over-period comparison (24h / 7d / 30d / 90d / 12m) and trend charts
- +Product management — CRUD, soft-delete/restore, ERP price & stock sync
- +Category, Branch, Order, and User management, role-gated (ADMIN / SUPER_ADMIN)
- +Specification templates — per-category structured spec fields driving the product Attributes form
- +One-click seed defaults for branches, services, spec templates, category filters, and nav groups
ERP Integration
- +Strictly one-way (pull) — nothing is ever written back to the ERP
- +OAuth-style token fetch with caching
- +Admin-triggered Sync Prices / Sync Stock actions matched by productCode
- +Live per-branch stock aggregation API for product pages
Authentication & Roles
- +Clerk-hosted sign-in with JWT session management
- +3 roles — USER, ADMIN, SUPER_ADMIN — destructive actions gated to SUPER_ADMIN
- +Admin sessions auto-expire after 6 hours of inactivity
Email & Communication
- +React Email templates sent via Nodemailer/SMTP for contact, newsletter, and quotation emails
- +Shared partials — header, footer, product info, user info
- +WhatsApp click-to-chat across checkout, quotation emails, and contact info
Storage
- +3 interchangeable providers — Backblaze B2 (default), Vercel Blob, Supabase Storage — chosen per upload
- +Deleting a file auto-detects its provider from the stored URL
Platform & Reliability
- +SEO-friendly URLs, dynamic sitemap, robots.txt tuned for AI/AEO crawlers, JSON-LD structured data
- +IndexNow pings on product changes for faster search indexing
- +Rate-limited public endpoints — checkout, payments, contact, newsletter, quotation, orders
- +Multi-branch stock management and order/delivery status tracking
- +Responsive design with light/dark theming
- +Vercel Analytics + Speed Insights
Admin Panel — Client-Side Customization
Homepage Sections
- +Hero Banner & Hero Video — separate mobile/desktop slots, sort order, active/show toggles
- +Pro Categories — the "shop by category" tile grid, edited against a live device-framed preview
- +Special Categories (Deals) — promotional tiles with CTA, link, and priority ordering
- +Stats Section — heading/subtext + 3 stat tiles, independent light/dark color and font size/family/weight per mobile & desktop
Navigation & Promo
- +Header navigation — a nested group/link structure; add, reorder, or remove entries with no redeploy
- +Promo Bar — message + link, background/font color with a contrast helper, start/stop scheduling, a live countdown timer, independent mobile/desktop heights
- +Logos — header and admin-sidebar logo, instant preview, one-click reset to default
Filters & Specifications
- +Per-category specification templates (label, required flag, placeholder, sort order) drive the product "Attributes" form and the spec table shoppers see
- +Category filter fields power storefront listing filters, seeded per category alongside branches, services, and nav groups
Publishing Model
- +Every Appearance module reads through a cached singleton, invalidated on save — edits go live immediately, with zero redeploys
SEO / AEO / GEO / AIO
88 / 100 overall
SEO
82
Structured data and canonical discipline across every dynamic route.
AEO
90
FAQPage + Speakable schema, per-product Q&A, server-rendered answers.
GEO
88
llms.txt + llms-full.txt + a single source of truth for name/address/phone.
AIO
94
A discovery manifest, a stateless MCP catalog server, and permissive AI-bot robots rules.
- +@graph JSON-LD — WebSite + Corporation + per-branch ComputerStore, with GeoCoordinates, hours, AggregateRating, and accepted payment methods
- +Per-product Product + Offer schema — MerchantReturnPolicy, OfferShippingDetails, itemCondition, spec PropertyValues, and a server-rendered FAQPage
- +/.well-known/agent.json — a discovery manifest declaring capabilities and catalog facets for autonomous agents
- +/api/mcp — a stateless MCP server exposing the live catalog as read-only tools, plus resources and prompts
- +llms.txt + llms-full.txt — a llmstxt.org-compliant link index and live FAQ/policy prose for LLM crawlers
- +Canonical discipline — a product reached through several category paths never forks its canonical URL
- +Faceted-view hygiene — filtered/sorted listings are noindex, while clean paginated pages keep self-canonicals
- +IndexNow pings fire on every product price/stock change for near-instant re-indexing
Architecture & Design Patterns
- 01One catch-all route resolves every category, subcategory, and product-detail page instead of a matrix of static routes — SEO metadata, canonical-URL, and JSON-LD logic stay centralized instead of duplicated per page type
- 02One-way ERP pull sync — pricing and stock flow in from the external ERP by productCode; nothing is ever written back, so a local edit is never silently overwritten
- 03Two-layer route protection — a proxy.ts middleware gate plus per-route role checks (protectRoute / requireSuperAdmin)
- 043-role RBAC (USER / ADMIN / SUPER_ADMIN); destructive actions such as permanent delete, branch/category delete, and user management require SUPER_ADMIN
- 05Server-side price re-validation at checkout — client-submitted prices are never trusted
- 06In-memory, per-IP rate limiting on abuse-prone public endpoints (checkout, payments, contact, newsletter)
- 07Multi-provider file storage, selected per upload, that auto-detects the provider from a stored URL on delete
- 08A content-driven Appearance CMS — homepage, navigation, and promo content are fully admin-editable with zero redeploys
- 09Generated Prisma client outputs to app/generated/prisma rather than the default node_modules location, for explicit Prisma-namespace typing on JSON columns
- 10Evolving admin-configurable style data (e.g. the Stats Section's 8 text roles × mobile/desktop × light/dark) lives in a JSON column, shape-validated in application code rather than exploding into flat SQL columns
- 11Live admin previews reuse the real storefront component — Appearance modules render their actual public-facing React component inside the admin editor, with the mobile frame a genuine <iframe> so responsive classes resolve against a real viewport, not a scaled div
- 12proxy.ts (Next.js 16's renamed middleware entrypoint) handles the auth gate, security headers, CORS scoped to just /api/mcp, and scanner-probe blocking
- 13Prisma ORM's parameterized queries close off a raw-SQL injection surface; production runs HTTPS-only behind a non-root Docker user with a whitelisted image CDN