Web development

Websites and web apps, built in Next.js from Lahore

We build fast websites, web apps and the APIs behind them for businesses in the US, the UK, Europe and the Gulf, and here in Pakistan. You get a written plan with price and dates before any code, and a build to try every week.

Zoftaa is a small, fully remote web development company in Lahore, Pakistan. We build websites and web apps in Next.js and React, with backends in Node.js or Python (FastAPI) and data in PostgreSQL. The site you're reading is one of them: a static Next.js 16 export on Cloudflare Pages, and further down we show how it's set up. One thing up front: we don't build online shops, Shopify stores or WordPress sites.

What we build

Most web work falls into five kinds. The examples are briefs we'd take on, not past projects.

Business websites

Company sites, service pages, landing pages and blogs, built as static Next.js pages that load quickly and are easy for search engines to read. Contact forms send enquiries to your email or WhatsApp. If your team changes text and images often, we add a content editor so that doesn't need a developer.

Example: a training company in Manchester wants 12 pages, a course list and an enquiry form that reaches both their inbox and their phone.

Web apps and portals

Web app development covers anything people log in to: customer portals, booking systems, dashboards and internal tools with roles and permissions. When the software is mostly about your own operations, see custom software development.

Example: a freight forwarder in Dubai wants customers to log in, see where each shipment is and download its documents.

APIs and backends

The server side that a website, a mobile app or another system talks to: Node.js or FastAPI services, a PostgreSQL database, webhooks, and connections to tools you already use.

Admin panels for mobile apps

The web panel your staff use to manage an Android or iOS app's users, content and reports is a separate build. We can do both sides; see mobile app development.

AI features inside web apps

Search over your own documents, drafting tools, a chatbot on your site. These need care with running costs and wrong answers, so they have their own page: AI chatbots and LLM features.

Static site or web app

This first decision shapes the cost, the hosting and the timeline. We settle it on the scope call.

What you need What we'd build Where it usually runs
Pages that change when you publish: company site, landing pages, blog A static Next.js export: plain HTML files built ahead of time Cloudflare
Users who log in and see their own data A Next.js front end, an API and a PostgreSQL database (often Supabase) Cloudflare, Supabase or AWS
Heavy work: reports, file processing, imports, AI calls A separate Node.js or FastAPI service with background jobs AWS, or a Docker container on your cloud account

A static site has no server of its own. Next.js builds every page into an HTML file that any web server can host. Features that need a live server don't work in that mode, including server actions, cookies, redirects in the Next.js config, incremental regeneration and the built-in image optimiser (Next.js static export docs, checked 1 November 2026). For a company website that rarely matters. For a web app it decides the architecture.

Hosting is shifting too. Cloudflare's Pages documentation now says "Start new projects with Workers", and the Next.js adapter it recommends there, vinext, is in beta, with image optimisation only partly supported (Cloudflare Pages, Next.js on Workers, both checked 1 November 2026). So for an app with server features, we check what it needs against that adapter first. If something isn't covered, the server part runs on AWS.

Next.js development: how this site is built

If you're comparing Next.js development companies, look at a site each one runs. zoftaa.com is ours: a static Next.js 16 export served by Cloudflare Pages.

  • There is no server at runtime. The contact form posts to a hosted form service, so there's no backend to patch.
  • Security headers (HSTS, content-type and frame rules, a referrer policy) live in one small config file that Cloudflare applies to every response.
  • Built scripts and styles carry content hashes in their file names, so browsers can cache them for a year. A release that changes a file also changes its name.
  • Lint, type checks, the build and a test suite run on every pull request and every push to the main branch. Each pull request also gets its own preview URL.
  • One of those tests fails if any page claims a registration, a certification, an award or clients we don't have.

A website we build for you gets the same setup: a repository, checks on every change, and previews you can open before anything goes live.

Who it's for

  • Founders in the US, the UK, Europe and the Gulf who need the web side of a product: the app itself, an admin panel, or a marketing site that has to be fast. For a first version, MVP development explains how we keep the scope tight.
  • Small businesses and agencies who want the people they talk to to be the people who write the code. We stay small on purpose.
  • Product and operations managers who need an internal tool or a customer portal and have no developers free to build it.
  • Pakistani businesses looking for a website development company in Lahore that builds to the same standard, with enquiries going to WhatsApp as well as email.

Whichever web development company in Pakistan you're considering, ask who owns the accounts, what you see each week, and what you get at handover.

How a project runs

  1. Scope call. One call to understand the problem and check that we're the right team. If we aren't, we'll say so.
  2. Fixed written plan. Milestones, price and dates in writing, agreed before we write any code.
  3. Weekly builds. Every week you get a version to open and try, on a preview link or a test environment. A wrong turn shows up at the next weekly build, while it's still a small change.
  4. Handover. The code, accounts and keys, with documentation on how to run and deploy the project and where each setting lives.

What you own

Everything below ends up in accounts under your name:

  • The source code, in a Git repository you control.
  • The domain and its DNS settings.
  • The hosting and cloud accounts: Cloudflare, AWS, Supabase or whichever the plan names.
  • Accounts with outside services, such as form handling, email sending, analytics and AI APIs.
  • The API keys and secrets, with a note of where each one is used.

Where we can, we open these in your name from the start, or you add us to accounts you already have. If you later move to another developer, nothing has to come back from us first.

Stack and tools

Layer Tools When we use them
Front end React, Next.js 16, TypeScript Every website and web app
Backend Node.js, Python with FastAPI Node.js when the whole project is JavaScript; FastAPI for data work, AI calls and long-running jobs
Database PostgreSQL, Supabase PostgreSQL for almost everything; Supabase when you want sign-in, file storage and the database in one managed service
Shared with a mobile app Firebase When the web app shares users and data with a Flutter app
Hosting Cloudflare, AWS, Docker Cloudflare for static sites; AWS or Docker containers for servers that run all the time
AI and automation OpenAI and Claude APIs, n8n AI features, and moving data between your tools (workflow automation)

You pay for hosting directly. Cloudflare Pages' free plan allows 500 builds a month and 20,000 files per site (Cloudflare Pages limits, checked 1 November 2026), enough for most company websites. Supabase's free plan includes a 500 MB database but pauses a project after a week with no activity; Pro starts at $25 a month (Supabase pricing, checked 1 November 2026). Once real users depend on an app, budget for the paid plan.

Lessons from the backends behind our apps

The Python backends behind apps we've shipped taught us rules we bring to every web project:

  • Work that takes more than about a minute, such as building a document or rendering a video, runs as a background job. The request returns a job ID at once and the page checks a status endpoint for progress. If the page held one request open for minutes instead, a dropped connection would lose the result.
  • API changes are additive. New fields are optional with defaults and old paths stay alive, so an app build from months ago keeps working.
  • Each service has a health check and a deploy marker (a value we change with every release), so after a release we can confirm which code is live.
  • Each call to an outside service, such as an AI model, has its own timeout and a fallback. Every fallback is logged with its reason, and the response says a fallback was used instead of passing as a normal success.
  • A call that timed out isn't retried automatically. The person has already waited the full timeout, and a retry would make them wait that long again.

Timelines

These ranges are for planning and assume content and decisions arrive on time. Your written plan sets the real dates.

Project Typical range What moves it
Company website, up to about 10 pages, content ready 2 to 4 weeks How many distinct page layouts; whether copy and photos are ready
Website with a content editor, a blog or 2 languages 4 to 8 weeks Editor setup, moving content from an old site, translation
First version of a web app: sign-in, 2 or 3 user roles, a handful of core screens, an admin panel 8 to 14 weeks Number of roles and screens, integrations, how settled the requirements are
Larger platform with several integrations or a data migration 3 to 6 months, in phases Third-party APIs and their approval steps, cleaning old data, review rounds

What speeds a project up most is on your side: one person who can make decisions, and feedback on each weekly build within a couple of days. What slows it down is content that arrives late and scope that grows mid-build. If the scope grows, we'd rather update the written plan than squeeze extra work into the old dates.

Working with us from abroad

Pakistan Standard Time is UTC+5 all year, with no daylight saving (Pakistan Standard Time, checked 1 November 2026). We work Monday to Friday, 10am to 7pm PKT, and usually reply within one business day. Here are those hours in your city.

Your city Your offset Our hours, your winter time Our hours, your summer time Overlap with a 9am to 5pm day
London UTC+0, UTC+1 in summer 5am to 2pm 6am to 3pm 5 hours (6 in summer)
Berlin, Paris, Amsterdam UTC+1, UTC+2 in summer 6am to 3pm 7am to 4pm 6 hours (7 in summer)
Dubai UTC+4 all year 9am to 6pm 9am to 6pm Your whole day
Riyadh UTC+3 all year 8am to 5pm 8am to 5pm Your whole day
New York UTC-5, UTC-4 in summer Midnight to 9am 1am to 10am None (1 hour in summer)
San Francisco UTC-8, UTC-7 in summer 9pm to 6am 10pm to 7am None

For US clients we also take calls from 6pm to 10pm PKT, Monday to Friday. In New York that's 8am to 12pm in winter (EST) and 9am to 1pm in summer (EDT). In San Francisco it's 5am to 9am in winter (PST) and 6am to 10am in summer (PDT).

Summer time runs from the last Sunday in March to the last Sunday in October in the UK and the EU (GOV.UK, CET), and from the second Sunday in March to the first Sunday in November in the US (NIST). Pakistan doesn't change its clocks, so the overlap moves by an hour twice a year, on your side only. Gulf offsets: UAE, Saudi Arabia. All checked 1 November 2026.

In practice, the Gulf gets a full shared day, and the UK and Europe get your morning and early afternoon, which is when we'd put the weekly call. US teams get live calls and urgent replies in their morning, through the 6pm to 10pm PKT window, alongside the weekly build. On the West Coast that window falls early in your day.

Reach us by email at hello@zoftaa.com, on WhatsApp at +92 308 6475141, or through the contact form.

When we're not the right fit

  • You need an online shop. We don't build e-commerce, Shopify or WooCommerce sites.
  • You want WordPress. For a new theme or plugins, hire a WordPress developer. WordPress can also suit a site that several non-technical people edit every day.
  • You need a simple site live this week for very little. A site builder such as Squarespace or Wix is the sensible choice.
  • You need someone online through your US afternoon, or people in your office.
  • You need formal certifications or a large bench of developers. We're a small studio and hold no certifications.
  • You want promised rankings or someone to run your ads. We build sites search engines can read well. We don't sell rankings or manage marketing.

Frequently asked questions

Do you build online shops, Shopify or WordPress sites?

No. For a store with a catalogue, cart and checkout, a Shopify or WooCommerce specialist will serve you better.

Will a Next.js website rank on Google?

A fast site with clean HTML, page titles, a sitemap and structured data gives search engines what they need, and we build all of that in. Rankings also depend on your content and on other sites linking to you, which no developer controls. Google's own guide to hiring an SEO says that if someone promises their changes will put you in first place, "find someone else" (Google Search Central, last updated 5 June 2026, checked 1 November 2026).

Can my team edit the website without a developer?

Yes. We add a content editor so text, images and posts change without code. For a site that changes a few times a year, we may suggest skipping it: one less account to pay for and keep updated.

Can you take over an existing website or web app?

Usually, if it's built in React, Next.js, Node.js or Python. We read the code before writing the plan, and the plan says what we'd fix first. If it's WordPress or a page builder, we're not the right team.

How much does a website or web app cost?

We don't publish prices, because scope drives them. The written plan after the scope call gives a fixed price, agreed before any code. Hosting is billed to you by the provider, and a static site on Cloudflare's free plan can cost nothing to host.

What happens after launch?

You have the code, the accounts and the documentation, so you can take the project to any developer. If you'd like us to keep going, a monthly product retainer gives you the same engineers every month for fixes and new features (hire developers in Pakistan explains how it works).

How quickly will you reply?

Usually within one business day. Our hours are Monday to Friday, 10am to 7pm PKT (UTC+5), and the reply comes from an engineer.

Tell us what you're building on the contact page. A few lines is enough: what it should do, who will use it, and any deadline.

Guides on this topic

Contact

Have something that needs building?

Tell us about the problem in a few lines. An engineer will reply, usually within one business day.

Studio
Lahore, Pakistan
Hours
Monday to Friday, 10am to 7pm PKT
US calls
6pm to 10pm PKT, your morning on the East Coast
New work
Open for Q4 2026