Web applications
Custom web apps on Next.js and React with TypeScript: dashboards, portals, internal tools and customer-facing products. Server components, a proper data layer, and tests around the parts that touch money or records.
Raufun Nasim Khan Chowdhury · Software engineer
Next.js, React and TypeScript on the front. Node, WordPress, Sanity and third-party APIs behind. Six years remote, for companies in the US and Malta.

Free check · what a search engine sees, in about ten seconds
a live cleaning company
static HTML · 51 KB · 1,176 ms
Checked as Local business
61
Mixed. The red items are worth an afternoon. Start with profiles linked in your markup.
Out of 100 across 14 checks chosen for a local business. A pass counts in full, a warning half, a fail nothing.
Fix first
4 of 14
Profiles linked in your markupCosting you
Add a sameAs array to the LocalBusiness block: Google Business Profile, Facebook, Yelp, BBB, Instagram.
Review ratingCosting you
Put the same rating into an aggregateRating in the structured data, with ratingValue and reviewCount that match your Google profile.
Real photographyCosting you
Add real photos: the team, the vans, finished jobs. Eight or more on the homepage, none of them stock.
Third-party review proofWorth fixing
Link the Google reviews page directly under the rating, and add Yelp or BBB if you have a presence there.
Phase two · real phone speed
On a live check, Google loads the page on an emulated mid-range phone and reports what a visitor actually gets: performance score, largest paint, blocking time, layout shift.
Runs on request, takes up to a minute.
What this means
There is real ground to gain, and it is specific.
3 things are costing you calls: profiles linked in your markup, review rating and real photography. This is how Google ties the website to your Business Profile. Missing it costs you in the map results. 5 more are worth an afternoon: third-party review proof, image alt text, full postal address in markup, title and description and link preview. Each is a specific change to the page or its markup; what they add up to depends on what is underneath, which is what a written teardown settles.
What this check cannot see: whether your listings agree with each other across the web, whether you rank in the towns that actually produce work rather than the ones that do not, and what a booked job currently costs you. That is the part a written teardown covers, and you keep it either way.
A real site, checked live and anonymised. Yours gets the same treatment in about ten seconds, with the checks chosen for your kind of site: local business, company, or personal. No signup, nothing stored.
Before and after
Where a customer actually meets the site: the Google result and the phone in their hand. Same business, with the checks above fixed.
Before · in Google
Sparkle & Shine
sparkleshine.example
Sparkle & Shine Cleaning Services | Residential and Commercial Cleaning Company Serving the San Fernan...
No rating shown · Los Angeles, CA
Welcome to our website. We are a professional cleaning company offering a wide range of cleaning services for residential and commercial clients. We pride ourselves on...
On a phone
Every space, spotlessly clean.
Professional cleaning for homes, offices, clinics, hotels and HOAs. Contact us today for a free quote!
Phone: (818) 555-0100
After · in Google
Sparkle & Shine
sparkleshine.example
House cleaning in the San Fernando Valley | Sparkle & Shine
Insured, bonded, same cleaner every visit. Book online or call (818) 555-0100. Serving Van Nuys, Sherman Oaks and Burbank.
On a phone

House cleaning in the Valley.
Price in 60 seconds
Title
80 characters, cut off
One line, place and service first
Rating
4.9 typed on the page
Stars from markup, 214 reviews
Number
Text in the footer
Tap-to-call bar on every screen
Proof
Nothing to check
Google profile, insured, sitelinks
Services
Hire me for one of these or for the whole thing. Every item is work I do myself, not work I coordinate.
Custom web apps on Next.js and React with TypeScript: dashboards, portals, internal tools and customer-facing products. Server components, a proper data layer, and tests around the parts that touch money or records.
A Figma, Adobe XD or Photoshop file, even a Canva board, built into a full working site. Spacing, type and states as designed, accurate at every width, with real components behind it rather than a page that only matches at one size.
Connecting the tools a business already runs: webhooks, scheduled jobs, scrapers, CRM syncs and background services in Node and Docker. Built to survive bad data, and to tell you when something fails instead of failing quietly.
Custom plugins, post types, importers and admin tooling, written to WordPress standards so the next developer can read them. When the front end is the problem, keep the CMS the team knows and put Next.js in front of it, with every URL and ranking carried over.
LocalBusiness and Organization markup, review and profile links, service-area pages, and Core Web Vitals fixed at the source: images, scripts, fonts, server response. Measured before and after against Google's own thresholds, so Google and the AI answer engines can find the business and load it fast.
Quote and booking forms that convert, tap-to-call as the primary action, tracked numbers for paid traffic, and Meta Conversions API with deduplication so attribution survives ad blockers and iOS.
Work
These run under client and agency branding rather than mine, so they are described by sector and scope. The situation, what I built, and what changed. Names removed, everything else exact.

Agency fleet of client WordPress sites
The situation
The agency's own site moved to Next.js, which killed the WordPress endpoint every client site phoned home to. Every site in the fleet started failing its heartbeat and showing admins a warning.
What I built
A Cloudflare Worker with a SQLite Durable Object and a capability-URL dashboard. Sites enrol and receive commands over HMAC-SHA256-signed requests verified on raw bytes; each site owns its token and the hub pins it on first contact, so a fresh, empty hub re-pairs the whole fleet by itself.
Result
Fleet back online without touching a single client site. No data migration, ever, by design.
Plumbing company, Next.js and Sanity on Vercel
The situation
Editors published and the site kept serving old pages. Separately, hosting usage rose month on month on flat traffic. The revalidation webhook had returned 401 on every delivery since April: the secret contained a plus sign that the query-string parser turned into a space.
What I built
Secret moved to a header and compared byte for byte; cron-driven scheduled publishing with 24-hour ISR windows so pages regenerate when content changes, not every few minutes.
Result
Publishes land in seconds. Diagnosed from the usage page, not the code: the money was in ISR writes and build minutes, and the next invoice showed it.
Window and door company, paid ads
The situation
The pixel had only ever been placed on the thank-you page, so it never saw the click ID on the landing page and every lead reached the ad platform unattributable. Ad blockers and iOS took the rest.
What I built
Pixel and click-ID capture on the landing page, a small server-side plugin relaying each lead through the Conversions API with a shared event ID for deduplication, and the discovery that a server-side redirect was stripping the click ID before the page ever saw it.
Result
Browser and server events matched in Events Manager instead of a pixel counting alone; the spec became the agency's reusable CAPI playbook.
Advocacy campaign, WordPress
The situation
The campaign wanted its film to start with sound the moment the page opened, which every browser blocks. Loading the player eagerly had also pulled a megabyte of script and five third-party cookies into every visit, for a mobile performance score of 49.
What I built
The player starts muted so autoplay is allowed, unmutes itself the moment the browser permits, and falls back to a single tap-to-unmute overlay when it does not. The player itself now loads on the visitor's first interaction instead of on page load.
Result
Sound where the browser allows it, one tap where it does not, and a page that no longer pays for the player before anyone scrolls. Verified on the live site.
More work
About

Next.js, React and TypeScript on the front. Node services, WordPress and PHP, Sanity and third-party APIs behind. I have built campaign platforms with payments and transactional email, scrapers with admin dashboards, automation services in Docker, and a lot of websites for businesses that live on inbound calls.
What I bring past the code is the habit of checking. Structured data that is actually there, a webhook that actually fires, a page that is actually fast on a phone. The free check at the top of this page is that habit turned into a tool.
How a job runs
Rankings, load time, calls and completed quote requests, written down before anything changes.
What is costing you, in priority order, with what each one is worth. You see this before I write a line of code.
Indexing off, redirects mapped one to one, structured data verified somewhere a mistake cannot hurt you.
Sitemap submitted, Search Console watched for a month, and the same numbers as step one side by side. If something did not move, I say so.
Recommendations
Devin Dias
Software Engineer, Eureka Software
LinkedIn recommendation
I had the pleasure of working with Rauf in a remote capacity, where he reported directly to me on a daily basis and helped support several projects across WordPress, React, Next.js, and Sanity. Before working with Rauf, I'll be honest, I had not always had the best experiences with offshore contractors. Rauf completely changed that perspective for me. He is reliable, thoughtful, easy to communicate with, and genuinely cares about the quality of his work.
Heather Carr
Project Manager, Client Success
LinkedIn recommendation
As one of our web developers, he consistently built high-quality websites while keeping communication clear and consistent throughout each project. One of the things I appreciated most was his ability to troubleshoot challenges, identify solutions, and keep projects moving forward. He was proactive, dependable, and always approached problems with a solutions-focused mindset.
Justin Lucas
Software engineering colleague
LinkedIn recommendation
Rauf combines strong technical expertise with something equally valuable: the ability to understand the real business objective behind a project. He doesn't simply complete assigned tasks, he looks for better solutions, anticipates potential problems, and consistently works to improve the quality of the final product.
Vineeth N.
Client
Upwork review
Raufun is an expert in WordPress and Web Development, he helped us with fixing quite few issues with our website and actively suggested options to improve the performance, I highly recommend Raufun.
Hire me
Next.js, React and TypeScript on the front. Node, WordPress, Sanity and third-party APIs behind. Web applications, integrations, headless CMS builds, design to code, and the search and speed work around them. Direct, or through Upwork if you would rather have the platform in the middle.
My working evening is a US or UK morning, so replies land inside your day. Typical response under four hours.
Nothing subcontracted, no agency behind me. The person who scopes the work builds it, tests it and answers for it.
No discovery call required. Send the address, get the findings in priority order with what each is worth, then decide.
10 to 15 hours a week, evenings and weekends included. Fixed price or hourly, milestone based. Identity and phone verified on Upwork, 100% job success.
Questions
The things people ask before hiring me.
Whichever suits the job. WordPress when you want to edit everything yourself with no learning curve. Next.js when speed and search are the priority, paired with a CMS so editing still feels ordinary. I will tell you which before any quote, and why.
Yes, and that is a build requirement rather than an afterthought. Prices, service areas, photos and copy are all yours to change without calling anyone.
Not if the URLs are handled properly. Every existing address is crawled and mapped one to one before anything is built, and nothing goes live until the redirects are verified on staging.
It depends on how many pages and how much of the search work is already in place. Send me your address and you get the fixes in priority order with what each one is worth, before any quote. One fix on its own, page speed or structured data or the booking flow, is a normal first job.
A focused fix is days. A full rebuild with service area pages is usually a few weeks, and I would rather give you a real date than an optimistic one.