live demoConcept project
Clinic Booking System
Book a slot in your time zone, race two bookings for one slot, then drag appointments in the admin calendar and watch overlaps fail.
Sami Ullah is a Next.js developer who builds server-rendered and statically generated web apps with the App Router and TypeScript. He focuses on technical SEO, structured data and Core Web Vitals, and uses Next.js for his own products and client booking systems, including this portfolio site.
Used professionally since 2025 (1+ years)
I use Next.js when a project needs search visibility, fast first loads, or a single codebase for pages and API routes. This site is built with Next.js 15 and the App Router, statically generated, with JSON-LD on every page.
On client and product work I pair Next.js with a NestJS API and PostgreSQL when the backend has real business rules, such as appointment booking, and keep it to Next.js Route Handlers when the backend is small.
Official documentation: Next.js documentation
live demoConcept project
Book a slot in your time zone, race two bookings for one slot, then drag appointments in the admin calendar and watch overlaps fail.
live demoConcept project
Draw a field near Sargodha, drag its corners, watch hectares update live, then export and re-import it as GeoJSON.
live demoConcept project
Enqueue jobs, add or SIGTERM workers, raise the chaos slider and watch retries back off into the dead-letter set.

Own product
JobPilot is my own web app for remote job hunting. Every day it collects new remote jobs, scores each one against a master CV, writes a tailored CV and cover letter for good matches, and waits for a human to approve before anything is sent. It supports several job seekers in separate workspaces and can also be driven from an AI assistant through MCP.
live demoConcept project
Drag cards by mouse, touch or keyboard, hit a WIP limit, filter by label, edit a card in the drawer and undo it all.
live demoConcept project
Drag fields into steps, add a regex rule or a condition, then fill the live preview and copy the generated zod schema.
live demoConcept project
Play a season of NDVI across six fields, compare their curves, and tune the detector that flags a stressed wheat field.
live demoConcept project
Sign in as admin, editor or user, call endpoints, untick a permission and watch the same request turn into a 403.
live demoConcept project
Chat as three people, take one offline, send messages, reconnect and watch the outbox flush and missed messages sync.
live demoConcept project
Filter 18 months of fictional subscriptions by range, plan, region and channel; hover the charts, read cohorts and export CSV.
live demoConcept project
Shorten a link, claim an alias, follow it and watch the 301, the click count and the referrer chart update live.
Own product
A system I built that calls a list of consented contacts with an AI voice agent, holds a short qualifying conversation and records every result as a tracked outcome or lead. A NestJS API runs the dialing, compliance checks and webhooks, and a Next.js dashboard with a built-in AI assistant lets the owner run campaigns and ask for reports in plain language.

Own product
A multi-salon booking marketplace I designed and built for Pakistan. Clients find nearby salons on a map, choose a barber, service and time, and book at the salon or as a home visit. Salons run staff, schedules and earnings from their own dashboard, and the platform collects a commission per completed booking through daily settlements.
live demoConcept project
Use Dialog, Tabs, Combobox, Menu, Toast and Switch by keyboard while an inspector shows the role, name and ARIA state.
live demoConcept project
Request a slot, approve it in wp-admin, then break it: stale nonces, a subscriber's crafted URL, two visitors racing.
live demoConcept project
Inspect a theme page to see the template part, ACF fields and theme.json tokens behind each section, then edit and reorder it.
live demoConcept project
Switch phone, tablet and desktop frames, turn on the spec overlay and grid, and click any element to see its tokens.
live demoConcept project
Filter the catalogue, pick variants, check out with a test card, trigger 3-D Secure and watch the SQL behind every step.
live demoConcept project
Drop a file, pause and resume a chunked upload, and see a renamed .exe and a 12 MB zip get refused.
live demoConcept project
Write GraphQL queries and mutations, then compare the SQL count with and without DataLoader batching.
live demoConcept project
Publish a post in wp-admin and watch the webhook purge cache tags and the Next.js page regenerate. Preview drafts too.
live demoConcept project
Oversell a product, run a transfer that fails halfway and rolls back, receive a purchase order and export the low-stock list.
live demoConcept project
Build an invoice, watch exact totals update, double-submit it to test idempotency, then save it as a PDF.
live demoConcept project
Click anywhere in Lahore to find the nearest stores, filter by open now and services, and read the PostGIS query for each search.
live demoConcept project
Write Markdown and watch the preview, TOC, reading time, Google snippet and social card update; try a javascript: link.
live demoConcept project
Enrol, finish lessons, pass server-graded quizzes for a certificate, then switch to instructor and publish a lesson.
live demoConcept project
Switch tenants, request another company's data, spoof a tenant header and hit a plan limit, all with the SQL shown.
live demoConcept project
Browse a news site, watch each page come from SWR, ISR or a fresh render, edit a story in the CMS and see the cache catch up.

Own product
Phone Speakers Cleaner is my own free tool website. It plays low-frequency tones in the browser to help shake water, dust and lint out of a phone's speaker grille, and adds a tone generator, a left and right speaker test and a blog of practical guides that bring search traffic to the tool. Nothing is recorded or uploaded.
live demoConcept project
Scan a table code, order with modifiers, then run the kitchen board from New to Served and watch your tracker update.
live demoConcept project
Switch roles, open a guarded URL, edit the permission matrix and force a forbidden API call to see the 403 land in the audit log.
live demoConcept project
Filter 60 listings, hover a card to light its pin, search the map area, save a search and reopen it from a copied link.
live demoConcept project
Take a timed exam, reorder items by drag or keyboard, see partial credit and explanations, then review missed questions.
live demoConcept project
Click a farm on the map, choose a crop and stage, and get live-weather advice on irrigation, heat stress and spray windows.
live demoConcept project
Fire signed webhooks, tamper with one, resend a duplicate and watch a flaky destination retry on a schedule.
live demoConcept project
Configure a product, check out with a Sunday delivery date and watch which WooCommerce hooks fire, with the PHP for each.
live demoConcept project
Switch WordPress speed fixes on and off and watch a modelled waterfall, LCP, CLS and TBT change. The model is shown in full.

Built while at GraphyD
GraphyAI puts nine AI studios behind one login: chat with leading language models, image and video generation, document analysis and a library of more than 24,000 curated prompts. I built the platform with Next.js and React for GraphyD, and it runs on Vercel with plans for free and paid users.
Own product
ReviewLens (working name) is a SaaS I built for online stores. It reads a store's customer reviews, returns and competitors and turns them into a short report: what customers complain about, which products cause the most problems and what to fix first. All numbers are computed in code, and AI only classifies text and explains the results.
#nextjs6 min
How to add JSON-LD structured data in Next.js 15: a safe script component, typed schema-dts graphs with stable @id values, FAQ rules and how to test it.
read →
#nextjs6 min
A practical Next.js App Router SEO checklist for Next.js 15: metadata, canonicals, sitemap, robots, JSON-LD, rendering, images and 404s, with working code.
read →
#nextjs6 min
ISR vs SSG vs SSR in Next.js 15 App Router: what each rendering mode is, how Next.js picks one, a comparison table, working code and a decision checklist.
read →
Sami Ullah builds marketing sites, tool websites with blogs, and full web apps such as booking systems with Next.js. He uses the App Router with static generation where possible, server components by default, and client components only where interaction needs them, which keeps JavaScript small and pages fast.
Yes. Typical work includes unique metadata per route with generateMetadata, canonical URLs, a sitemap and robots file, JSON-LD structured data, Open Graph images with next/og, and fixing Core Web Vitals issues such as layout shift from images and fonts. Each change is checked against Search Console data.
New projects use the App Router, because React Server Components, nested layouts and file-based metadata make SEO and performance easier to get right. He can still maintain Pages Router projects and migrate them gradually, route by route, when a client wants to move to the App Router.