All articles
Guides

Website or Web App? One Project That Was Both, Taken Apart

A website mostly tells visitors things; a web app lets signed-in people do things. We take apart one live project that is both, Bogar Infra's site and its admin panel, to show where the line falls and why it changes the quote.

Surya Kumar Muni5 November 20268 min read6 views
Website or Web App? One Project That Was Both, Taken Apart

Quick answer

Ask one question: does the system need to know who this person is? If not, it is a website, and the effort goes into content, structure, speed and search. If what people see or do depends on who they are, it is a web app, and the effort goes into roles, rules, failure paths and what the server returns. Many businesses need both: a public site with an app behind its contact form, priced as two things.

Bogar Infra's public site has six discipline pages, fourteen sector pages and a profile for each of the firm's five directors. Nobody who visits it ever signs in. Behind it, in the same codebase, sits an admin panel where partners move enquiries across a board, read the firm's mail, publish project albums, issue private progress links to clients and restyle the whole site. One of those halves is a website. The other is a web app. They were planned, priced and tested as two different things, and walking through where one stops and the other starts is the clearest way we know to answer the question in the title.

The one-line version first. A website mostly tells visitors things. A web app lets signed-in people do things, and has to remember what each of them did. The test we use with clients is a single question: does the system need to know who this person is? If not, you're building a website. If what they see or can do depends on who they are, it's an app.

The website half: content and structure

The firm had changed what it sells faster than its old site. The previous build, a template from around 2019, described a turnkey contractor. The firm now wanted to be seen as a focused engineering company delivering structure, MEP, HVAC, fire and solar as one integrated building.

Almost none of the work on the public side was engineering in the hard sense. It was structure. The site is organised on two axes: what the firm does (six disciplines) and the building types it does it for (fourteen sectors). Each discipline page lists only the sectors it applies to. That exists because buyers search for "data-centre construction" or "operation theatre MEP", not for an engineering firm's name.

The ordering mattered more than we expected. Fourteen sectors in a row read as if canteens were a speciality, so the list now leads with the niche ones the firm actually focuses on (data centres, operation theatres, solar power plants) with an "Also" group after. Every count on the site is derived from those lists, so the number 14 can't drift out of date when a sector is added. Retired disciplines' old addresses redirect permanently, so links and search rankings don't fall into a 404.

Then the dull, important part. The design mock-ups carried sample project values, areas and completion figures next to real company names, plus a sample testimonial. None of that could go live as fact. All of it sits in one file behind a flag, and the production build check fails while that flag is on. It's one line of configuration that stops a placeholder from becoming a claim.

That's a website project: content, structure, speed and search. Our website development page covers how we approach it, and the SEO for apps and websites page covers the search side.

The seam: one contact form

The line between the two halves runs straight through the contact form. On the visitor's side it's a website feature: validated, rate-limited and honeypotted, it notifies the firm and acknowledges the sender.

On the firm's side, the moment it's submitted, it's app data. The enquiry lands on a five-stage board (New, Contacted, Quoted, Won, Lost), with drag-and-drop on a desktop, a dropdown on a touch screen and one-tap call and WhatsApp. Now someone owns it, someone moves it, and the system has to remember who did what.

Most "website" briefs we receive contain a seam like this somewhere. Spotting it early is most of the job.

The web-app half: rules and failure paths

Everything behind the login was planned as an app, because that's what it is.

Mail. Partners' personal and shared mailboxes open inside the panel with their real folders, drafts and attachments. We made a choice here: no mail is stored in the panel's database. It talks live to the firm's own mail servers, so phones and desktop mail keep working as before, mail passwords are encrypted, and sends are logged as metadata only. That choice had a cost later. When the firm reported emails that wouldn't open, we traced it to one message stored without its envelope, which wedged a whole mailbox connection. The fix was five changes, including a 45-second limit on every mail operation (under the web server's 60 seconds), ten new unit tests (five of which failed first, which is how you know they test the bug) and 50 live scenarios run against the real mailboxes with tagged test mail. A website never has a week like that.

Progress links. A partner creates a report link per project with a passcode the server generates. The token is unguessable, and a wrong link returns "not found" rather than hinting that something exists. Site staff without a login get a separate update link to post notes and up to six photos from a phone. That link can never change a project's status or percent complete. Those are secure share links, and each rule in that paragraph had to be written down before it was built.

The public projects page. This is the one we'd point any founder at. The public projects page received whole project records from the API and displayed three fields. Nothing showed on screen, but the rest was in the response for anyone who looked. The public API now returns name, sector and photos only, and a test pins it so a later change can't quietly widen it again. That's the difference between a website bug and an app bug: one is wrong in public and gets fixed in an afternoon, the other can be wrong in private for months. Our pre-launch security checklist exists for the second kind.

Appearance. Partners can switch between five colour palettes and five font sets and preview the real public site in a frame before anything changes for visitors. One colour token declared twice once turned body text white on near-white in three of four themes, while every check stayed green. Now each palette must define all 33 colour roles and a token check fails the build. A design system inside an admin panel is still app work.

The Bogar Infra case study covers the whole build.

What the split did to the plan

Here's how the two halves compared on the same project:

Public website Admin web app
Who uses it Anonymous visitors Partners and staff with accounts and roles
What it holds Content the firm publishes Enquiries, mail, projects, links people create and change
Where the effort went Structure, ordering, redirects, placeholder gate Permissions, failure paths, what the API returns
How we tested it Pages, forms, devices, the build check Each role, each route, live scenarios on real mailboxes
Upkeep Content updates and light patching Security updates, backups, monitoring, support

A website project lives or dies on content and structure. An app lives or dies on its rules: who may do what, what happens when a request half-fails, what leaves the server. Quote the second as if it were the first and the rules arrive later as change requests.

When the answer is just a website

Often it is. We've built one-page static sites for professionals that load fast, cost very little to host and need no database at all. For someone who wants to be found and contacted, anything heavier would be waste.

A website on its own is right when the content changes a few times a month, nobody needs an account, the only action is a form, a call or a link, and your team can edit text and images without a developer. Then there's a smaller choice to make: a static site if it changes rarely, a familiar editor if people publish weekly, and a custom CMS only if the content has real structure, like Bogar's projects with albums and sectors generated from data.

Phrases in a brief that mean app work

When we read a brief, these phrases change the quote:

  • "Customers can log in to see…"
  • "Only managers can approve…"
  • "Track the status of…"
  • "Book a slot", "pay online", "upload documents"
  • "Send a reminder when…"
  • "Export a report of…"

None of them is a reason not to build. They're a reason to plan it as an app: roles enforced on the server (role-based access control, not a hidden button), validation on the server because anyone can send a request without your screens, an audit trail, backups that are actually restored now and then. On Pakka's web platform we exercised 260 of 270 API routes with real requests before launch, because the route nobody tried is the one that leaks.

If the list of "can…" sentences is long and describes how your business runs day to day, you may be looking at custom business software rather than a website with extras. If people will sign in at a desk and on a phone every day, an installable web app often does the job without a store app at all; our web app development page explains where that line sits.

Starting with one and adding the other

You can start with a website and add the app later, and it's often the sensible order if the business isn't ready to define its rules yet. A static site is perfect until someone needs a login; at that point moving it onto an app framework rebuilds the site, though not its content.

When we can see the app coming, we build the website on the stack the app will use. That's what happened at Bogar: one front end serving both the public pages and the panel, one API behind it. The admin joined the project instead of sitting next to it, and partners publish projects and albums to the public site from the panel, with a project's address locked once it's published.

So, before you ask anyone for a quote, read your own brief and underline every sentence where a person does something rather than reads something. If there are none, you need a website. If there are a few, you need a website with a small app behind it, priced as both. If the underlining covers the page, you're building software, and the website is the smaller job. Our deployment and hosting page shows what each one needs to keep running after launch.

Should an admin panel live in the same codebase as the public website?

When both read the same data, usually yes. Bogar Infra's front end serves the public pages and the admin panel from one app, with one API behind it, so a project edited in the panel is the same record the site displays. Keep the admin routes behind sign-in and out of search, and keep the public API narrow.

Can staff restyle a business website without a developer?

They can if the styles run on tokens with a check behind them. Bogar's partners choose from five palettes and five font sets and preview the real site before visitors see it; each palette must define all 33 colour roles, and the build fails if one is missing.

How do clients see project progress without an account?

Through a private link with an unguessable token and a passcode the server generates. A wrong link returns "not found", and the link can be disabled or regenerated at any time. See secure share link.

Is a business website with a blog and a contact form a web app?

No. Publishing posts and receiving enquiries is still a website, even with a content editor behind it. It becomes app work when the people who submit or handle those enquiries need accounts, stages, permissions or a history of who did what.

Your project

Not sure whether you need a website, a web app or both?

Tell us what you are building and the one journey that must work. We reply with the questions that shape the plan, and every project starts with a two-week Discovery Sprint.

Start a project →

Part ofChoosing a development partner: every page on the topic, in one place