All projects
Web App
Live in production

BogarInfra — Construction Firm Website and Admin Panel

Bogar Infra Projects is a Chennai engineering and construction firm. We rebuilt its website around smart, integrated buildings and built the admin panel behind it: an enquiry pipeline, in-panel email, an AI visiting-card scanner and private progress reports for clients.

For Bogar Infra ProjectsJul–Oct 2026
  • Public website (bogarinfra.com)
  • Admin panel (web)
  • Visiting-card scanner (phone web link)
  • Client report pages
  • Field-crew update link
BogarInfra home page hero on desktop

Overview

Bogar Infra Projects Pvt Ltd (formerly Sree Bogar Projects) is an engineering, procurement and construction company in Chennai, established in 2019. Its earlier website was a static template that presented the firm as a general turnkey contractor. Between July and October 2026 CountryDevs rebuilt it as a Next.js site on a Node.js and MongoDB API, with an admin panel for the firm's directors and staff.

The public site at bogarinfra.com now presents the firm as a specialist in smart, integrated buildings for commercial, industrial, warehouse and mission-critical facilities. It is organised on two axes: six disciplines, from construction and structural engineering to MEP, HVAC and fire, solar, interiors and mission-critical work, and fourteen sector pages led by data centres, operation theatres and solar power plants.

Behind it, the admin panel holds the firm's working tools: website enquiries on a kanban board, the company mailboxes, projects and photo albums, staff accounts, and the site's colours and fonts. Directors turn visiting cards into contacts from a link on their phone. Clients follow their job on a private, passcode-protected report page, and site staff post progress from a separate link without a login. The site still uses stock photography until the firm supplies its own.

Repositioning a template-era contractor site as a smart-building specialist

The old site was a static template from around 2019. It sold the firm as a turnkey contractor across six expertise areas and eleven services, and a page-by-page audit found section index pages that returned 404 and project pages that linked out to client websites.

Two axes, niche first

We kept the old two-axis structure because it was right: disciplines say how the firm builds, sectors say what it builds. After the client's feedback round on 10 September 2026 the disciplines became six: Construction, Structural Engineering, MEP / HVAC / Fire, Solar, Interior Solutions and Mission Critical. Project Management and stand-alone HVAC were retired, and their old URLs redirect permanently. The firm named data centres, operation theatres and solar power plants as its focus, so each got its own sector page, taking the total to fourteen.

Fourteen in a row still read as if canteens were a speciality. So sectors are now ordered niche first with an "Also" group after, and each discipline page lists only the sectors it applies to: Mission Critical shows data centres, operation theatres, healthcare, manufacturing and industrial, not canteens. Every count on the site is derived from these lists, so "14" cannot drift from the pages.

Smart, without overclaiming

The Smart & Integration-Ready page explains the pitch by building type:

Building Connects to Standards named
Operation theatres and hospitals hospital systems, BMS, imaging BACnet/IP, Modbus, HL7/FHIR, DICOM
Data centres DCIM and NOC monitoring SNMP, Modbus TCP, BACnet/IP, MQTT
Factories SCADA, MES, ERP, energy dashboards OPC UA, Modbus, MQTT

The copy keeps one honesty line: the firm specifies, installs and hands over systems that speak open standards, with points lists, IP schedules and integration test records. Connecting them to the client's own software is done with the client's IT team or vendor. No product names, no client names, no figures.

An AI visiting-card scanner: the model transcribes, the code owns the facts

The firm's five directors each hold a backlog of 500 to 1,000 visiting cards. They wanted to photograph a card and get a usable list of potential clients.

Choosing the model on evidence

We built a test set of 29 freely licensed images: Indian cards including Tamil and Hindi ones, photos of physical cards, foreign controls and two images that are not cards at all. Four models read every image once against hand-checked answers.

Model Names Companies Phones Usable as-is Cost per card
Small model A (cheapest) 57% 45% 75% 17/29 $0.00020
Small model B 57% 55% 71% 16/29 $0.00044
Small model C 57% 65% 79% 18/29 $0.00066
Mid-size model (shipped) 76% 85% 96% 21/29 $0.00139

We had predicted the cheapest model would read 90% of clear cards correctly; it got 57% of names. The model we shipped costs about seven times as much per card and still puts a 5,000-card backlog at about $7, or around $9 if roughly 30% of cards need a second photo. The test also caught our own mistake: the first prompt told models to drop Tamil names, which is wrong for a Chennai firm. It now copies names in the script they are printed in.

What code decides

The model fills a strict JSON schema and is told to return null rather than guess. Code then checks everything checkable: Indian mobile and landline formats, email shape, PIN code to state, the GSTIN checksum, and a sector suggestion. A card needs a name or company and one valid phone or email, or it waits for a person. A QR code on the card is decoded by code and outranks the model.

Private, and never paid for twice

Each director scans through a personal link and PIN, at up to 20 cards a minute. Contacts are private to the director who scanned them. The same photo sent twice is recognised by its hash and costs nothing, and a re-photographed card asks to merge. Card photos sit in a private S3 folder; an anonymous request gets 403.

One unreadable email was freezing a whole mailbox

The firm reported that emails with attachments, and emails with odd or empty subjects, would not open in the panel. Both sat on "Loading the message…" for ever.

What the logs said

The production log had a TypeError reading subject of undefined, and a run of request lines with status "-". In morgan's log format that means the response never finished.

One bug, not two

GoDaddy's mail server had returned a message row with no envelope, and our mapper read the subject off it. The throw happened inside a for await loop over the IMAP fetch, which abandoned the iterator while the server was still sending. Connections are pooled per mailbox and work on them is serialised, so every later click for that mailbox queued behind a command that would never finish, until the process restarted. Attachments only looked guilty because a large message holds a stuck queue longer.

The fixes

  • The mapper cannot throw: a missing envelope, flags or addresses become blanks.
  • Every fetch is drained to the end before any row is mapped.
  • Each pooled operation has a 45-second timeout, inside nginx's 60. It times the work, not the wait for a turn: timing the wait failed eight healthy messages under load.
  • A failure to mark a message as read no longer hides it.
  • The panel stops waiting after 60 seconds and says so in words.

We also found that opening a message downloaded all of it, attachments included. A 9.63 MB email with two PDFs took 56.9 seconds to open. Now only the body parts load, and the four heaviest messages open in 5.5 to 6.4 seconds.

Proving it

The test suite's fake mail server only ever returned tidy rows, so it now misbehaves on purpose. A script then ran 50 live scenarios against the firm's real shared mailboxes through the real API: Tamil, emoji and 300-character subjects, bodies up to 5 MB, one to six attachments, the refusals, replies, drafts, every folder and ten concurrent reads. Each test message carried a run tag, and cleanup removed only tagged mail.

Progress reports for clients and site updates without logins

Midway through the build the firm asked for something a marketing site does not do: let a client see where their job stands, behind a password, at a link of its own. That gave each project three faces.

Face Who sees it Shows the progress timeline?
Public project page everyone never
Admin panel partners and staff yes
Client report link that client yes

The report link

The link carries an unguessable token, and a wrong token returns 404, so it never confirms that a project exists. Password attempts are rate-limited. Our first version hashed a password the partner typed and never showed it again, which left no way to send it to the client. The server now generates the passcode from an alphabet without look-alike characters and shows it in the panel with a copy button. That is only safe because it can never be someone's reused personal password. The report works whether or not the project is published on the site.

The site-update link

A second link per project works in the other direction. A site engineer without a login opens it on a phone and posts what happened, notes and up to six photos. The server records the date. The link can never change the project's status or percent complete; only the office moves those.

Keeping private fields private

While repositioning the site we found that the public projects page handed whole project records to a client component, so locations, scope and the prototype's placeholder figures sat in the page source even though nothing displayed them. We fixed it at the API: the public serializer returns a name, a sector and photos, and a test pins that key list. Admin and report pages use their own serializers.

One limit is written down rather than hidden: report photos go through the site's public image pipeline. The passcode protects the page, not a photo URL someone forwards.

Design tokens, and a build check that refuses placeholder content

Two kinds of mistake pass every automated check on a site like this: colours that break on a theme nobody is looking at, and placeholder content that quietly becomes real.

Two tiers of tokens

Raw colours (--pal-*) are declared once on :root and never touched by a theme. Components read only semantic roles (--color-*), which each palette re-points. Early on, one raw token was declared twice with two meanings and the later one won: body text turned white on a near-white background in three of the four themes, while TypeScript and the build stayed green. check:tokens now fails on a duplicate raw token, a raw token inside a palette block, a palette missing any role, or a hex value in a component stylesheet.

That structure paid off when the firm asked to choose its own look. The panel offers five palettes and five font sets, as presets or mixed. Each palette defines all 33 roles plus corner radii and hero-overlay strength, and the check enforces it. The panel previews the real public site in a frame, sending the choice by message after the page hydrates, before anything changes for visitors.

A gate on placeholder content

The design handoff came with sample project values, areas and completion percentages next to real company names, and a sample testimonial. We kept the layouts and moved every sample value into one file behind a single flag, HAS_PLACEHOLDER_CONTENT. While it is true, check:placeholders fails and npm run verify:prod stops. Placeholder content should never reach a live page by default; someone has to decide that it is true.

Since the repositioning, no public page shows project figures, the public API does not send them, and the testimonial is hidden. The flag stays up until the firm supplies figures it will stand behind. The same goes for photos: the next.config entry that allows stock images is marked temporary, to be deleted when real site photography arrives.

The challenge

The firm had changed what it sells faster than its website. The old site, a template build from around 2019, described a turnkey contractor across six expertise areas and eleven services. Some of its section pages returned 404s, and its project pages linked out to client websites instead of showing the work. The firm now wanted to be seen as a focused engineering company that delivers structure, MEP, HVAC, fire and solar as one integrated, monitored building.

The new design's mock-ups needed care too: their project pages carried sample values, areas and completion figures next to real company names, plus a sample testimonial, and none of it could go live as fact. And the directors had needs no brochure site covers: hundreds of visiting cards each and no way to turn them into leads, mail split across phones and webmail, and clients and site engineers asking for progress with no login to give them.

The solution

We built two repositories: a Next.js 16 App Router client in TypeScript that serves both the public site and the admin panel, and an Express and MongoDB API that runs in Node cluster mode. The design prototype was the spec for layout, but none of its placeholder content reached a public page: everything made up lives in one file behind a flag that a production build check refuses, and the public project API returns only a name, a sector and photos.

Each panel feature follows one rule. The card reader lets the model transcribe and lets our code decide what is true. Mail is a live window onto the firm's own IMAP and SMTP servers, with passwords encrypted at rest and no mail stored in the database. Client report and site-update links use unguessable tokens with passcodes the server generates. Colours and fonts run on a two-tier token system with its own build check, so the directors can restyle the site from the panel without breaking it.

The impact

bogarinfra.com is live (checked 17 October 2026), with six discipline pages, fourteen sector pages, a Smart & Integration-Ready page and a profile page for each of the five directors. The admin panel runs in production alongside it. Visiting cards work end to end in production up to the reading step: photos upload, are stored privately and are listed for each director. At our last record the reader itself was waiting for the firm's own AI API key; until it lands, cards are kept and the panel says they are waiting to be read rather than claiming they were.

On 10 October 2026 we traced the firm's report of emails that would not open to a single bug in the production logs, fixed it, and proved the fix with 50 live scenarios against the firm's real mailboxes. The API's test suite stood at 346 passing tests after that work. Still open on the firm's side: real site photography, project figures it will stand behind, and written permission to show client logos.

Features

What we built into BogarInfra

Six disciplines, fourteen sectors

The site is organised on two axes: what the firm does (construction, structural engineering, MEP/HVAC/fire, solar, interiors, mission critical) and the building types it does it for. Niche sectors are listed first, and each discipline page lists only the sectors it applies to.

Smart & Integration-Ready page

Organised by building type, it names the open standards the installed systems speak, such as BACnet/IP, Modbus, OPC UA and SNMP, and the handover records a client's IT team needs. It promises coordination with the client's software vendor, not integrations the firm does not build.

Enquiry pipeline

The contact form is validated, rate-limited and honeypotted; it notifies the firm and acknowledges the sender. Enquiries land on a five-stage board (New, Contacted, Quoted, Won, Lost) with drag-and-drop on desktop, a dropdown on touch screens and one-tap call and WhatsApp.

AI visiting-card scanner

Each director gets a personal phone link and PIN. Cards are read by a vision model, checked by code, de-duplicated within that director's own contacts and turned into an enquiry in one step.

Webmail inside the panel

Personal and shared company mailboxes open in the panel with their real folders, drafts, attachments, reply and forward. Passwords are encrypted with AES-256-GCM, HTML mail renders in a sandboxed frame, and every send is logged as metadata only.

Private client report pages

A partner creates a report link per project with a generated passcode. The client sees status, percent complete and a dated timeline with photos, and the link can be disabled or regenerated at any time.

Field-crew update link

Site staff without a login post what happened, notes and up to six photos from a phone. The server records the date, and the link can never change a project's status or percent complete.

Projects and photo albums

Partners edit projects and galleries and publish them to the site. A project's URL locks once it is published, and the public API carries only its name, sector and photos.

Brand and appearance

Five colour palettes and five font sets, used as presets or mixed. Partners preview the real public site in the new look inside the panel before anything changes for visitors.

Team accounts and Google sign-in

Partners create staff accounts, and each person sets their own password from an emailed link. Google sign-in can identify an existing account but never creates one.

By the numbers
$0.00139
AI cost to read one visiting card with the model we shipped, from a four-model bake-off
21/29
Test cards the shipped model read usable as-is (best of four models)
50
Live scenarios run against the firm's real mailboxes to prove the mail fix
6.4s
Seconds to open the slowest of four heavy emails after the fix (a 9.63 MB one took 56.9 s before)
Screens

What BogarInfra looks like

Smart integration page on desktop
The smart & integration-ready page: every installed system is specified on open protocols with a documented handover, so the building plugs into the software the client already runs.
Data centres sector page on desktop
A sector page for data centres, one of the industry verticals the site is organised around.
MEP, HVAC and fire expertise page on desktop
One of the expertise pages, describing the combined MEP, HVAC and fire-protection package.
About page on desktop
The about page introduces Bogar Infra Projects as a Chennai EPC company established in 2019 (formerly Sree Bogar Projects), followed by vision, safety and management-team sections.
Contact page with enquiry form on desktop
The contact page and enquiry form; submissions land on the admin panel's enquiries board.
BogarInfra admin dashboard with enquiry counts and pipeline bars on demo data
The partners' home: enquiries the website has brought in, how many still need a first reply, published content and the sales pipeline by stage.
Kanban board of demo enquiries across five pipeline stages
Website enquiries land on a drag-and-drop board (New, Contacted, Quoted, Won, Lost) with sector tags and one-tap call and WhatsApp actions.
Visiting-card contacts list with five fictional demo contacts
Directors snap visiting cards from a personal phone link; cards are read automatically into a private contact list with status, sector and where they met, and can be converted into an enquiry. (Demo contacts; no cards were read for this capture.)
Progress timeline section listing dated site updates for a demo project
Dated site updates with status and percent complete form a timeline that feeds the client's private report page, never the public site.
Password-unlocked client report for a demo project with status and timeline
A private, password-protected page where a client follows their job: project details, current status and percent complete, and the dated site-update timeline.
Brand and appearance page with palette presets, colour palettes and font sets
The whole public site's look comes down to a colour palette and a font set: presets or a custom mix, checked in a live preview before anything changes for visitors.
Live preview of the public site in an alternative palette
The live preview renders the site's sections in the selected palette and fonts so partners can compare a preset against what is live.
App screens

Inside the mobile app

Mobile 'Scan visiting cards' page asking for a 6-digit PIN, field empty
A director's personal visiting-card link opens on their phone with no login and first asks for the 6-digit PIN shown under My visiting cards in the panel.
Unlocked visiting-card scanner for a demo account with Snap a card and Choose photos from the gallery buttons
After the PIN, the page names whose cards are being scanned and offers two ways in: snap a card with the camera, or choose many photos from the gallery, at up to 20 cards a minute. (Demo account; no card was sent or read for this capture.)
Mobile site-update form filled with a demo progress note
Site staff post a progress update from their phone through a PIN-protected link, with no login; it lands on the project's timeline for the office to review.
BogarInfra home page on mobile
The live home page on a phone-sized screen.
Project details
Tech stack
Next.jsTypeScriptReactRedux ToolkitMotionNode.jsExpressMongoDBAWS S3AI vision APIImapFlowNodemailersharpjsQRGoogle OAuth
Timeline & team
Jul–Oct 2026
FAQ

Questions about this project

How does BogarInfra's visiting-card scanner turn a photo into a contact?

A director opens a personal link on their phone, enters a PIN and snaps the card. A vision model transcribes what is printed into a strict schema, then our code checks phone numbers, emails, PIN codes and GSTINs, flags anything doubtful for a person and matches duplicates within that director's own contacts. A contact becomes an enquiry on the shared board in one step.

How was the AI model for BogarInfra's visiting cards chosen, and what does a card cost?

On a test, not a price list. Four models read the same 29 freely licensed card images; the one we shipped read 21 usable as-is, against 16 to 18 for the cheaper models, at about $0.0014 a card. A photo sent twice is recognised by its hash and costs nothing.

How do BogarInfra's clients follow progress on their project?

Each project can have a private report link with a passcode the server generates. It shows status, percent complete and a dated timeline of site updates with photos. Site staff add updates from a separate passcode link without a login, and the public website never shows the timeline.

Does the BogarInfra admin panel keep a copy of the firm's email?

No mail is stored in the panel's database. The panel talks live to the firm's own IMAP and SMTP servers, so phones and desktop mail keep working as before. Mail passwords are encrypted with AES-256-GCM, HTML messages render in a sandboxed frame, and sends are logged as metadata only.

More work

Other things we shipped

All projects
Storafleet fleet overview with storage totals, trend line, transfers list and per-provider footprint barsFeatured
Saasfor Storafleet

Storafleet — Multi-Cloud Storage Control Plane

Storafleet is CountryDevs' own SaaS control plane for object storage. Teams connect buckets they already own on 50+ providers, including AWS S3, Cloudflare R2, Backblaze B2, Wasabi and MinIO, then browse, migrate, search, secure and cost-check them from one console.

Next.js 15ReactRedux ToolkitNode.js+11
50+Storage providers in the connection roster
Case study
Pakka Logistics home page hero on desktopFeatured
Mobile Appfor Pakka Logistics

Pakka Logistics — Porter-Style Delivery Platform

Pakka Logistics is a Porter-style delivery platform for India. We built all of it: Android apps for customers and drivers, a business portal, an operations console and the website. The web platform is live; the Android apps are being prepared for Google Play.

React NativeTypeScriptRedux ToolkitNode.js+12
96.3%API routes exercised by a probe before launch (260 of 270)
Case study
Superadmin stories grid with photo storiesFeatured
Mobile Appfor Slic Solutions Private Limited

LetSlic — Social Media App with Group Chat, Stories and Premium

LetSlic, listed on Google Play as Slic, is a social app for photo posts, 24-hour stories and real-time chat with group moderation. We built it for Slic Solutions Private Limited: the React Native app, two Node.js APIs, the superadmin console and the website, plus Premium and ads.

React NativeTypeScriptReduxNode.js+13
13Months from first commit to handover (Jun 2025 – Jul 2026)
Case study
Got a project?

Let's build the
next one together

Tell us what you're trying to ship. We'll come back with a scope, a timeline, and a fixed price — usually within 48 hours.

Not ready for a full build? Start with a fixed-price Discovery Sprint, or get a code audit of an app someone else built.

More on what we build from Bangalore for Indian businesses: App Development Company in Bangalore.