Home Web development

Web development

Websites and software, built by hand.

Corporate sites your team can actually edit, web apps and internal tools, dashboards, WordPress plugins, AI integrations, and even desktop apps. No bloated page builders, no paid plugin sprawl, and every build ready for search and AI from the first day.

30 Custom editing blocks built into one corporate WordPress theme
0 Paid plugin licenses on that site, across 18 plugins
207 Automated checks behind one web app's backend rebuild
12 Languages routed and tested on one app's download pages

What we build

From a one-page site to a full app.

Same people, same standards, whether it's a landing page for a food stall or the backend of a multi-team platform.

Websites

Marketing & corporate sites

Custom WordPress themes your team can edit without breaking the layout, or hand-coded sites when the content rarely changes.

WordPressElementorHTML/CSS
Web apps

Platforms & internal tools

Task managers, client portals, approval queues, and admin tools with real logins, roles, and permissions.

ReactNodeSQLite
Data

Dashboards & reporting

Login-protected dashboard sites that pull straight from analytics, search, ads, and revenue data, replacing shared spreadsheets.

PHPGoogle APIsPython
WordPress

Plugins & security

Custom plugins for publishing workflows, staging, popups, and activity logs, plus hardening that replaces paid security add-ons.

PHPWordPress
AI

AI tools & integrations

Claude connectors (MCP) that let a team query its own data in plain English, AI triage and drafting, and scheduled agents.

ClaudeMCPNode
Desktop

Desktop apps

When the job needs to run offline or drive multiple screens, we build native-feeling desktop apps for Mac.

ElectronJavaScript

Featured work

Five recent builds.

Two of our own products and three other builds, with client names kept private.

Corporate website · IT solutions company

A corporate site the team can run without a developer.

A full redesign and rebuild of an IT solutions company's website on WordPress, with a custom theme, 30 purpose-built editing blocks, and a resources library staff publish to by filling in a form. Layouts are locked so editors can change content without breaking design.

  • Site search that opens the page scrolled to the matching passage, highlighted
  • Approval workflow, staging site, daily backups, and security hardening
  • 18 plugins, none of them paid, most built in-house
  • 31-slide handover guide for the team
Build sheet Live
30blocks
Custom editing blocks Hero slider, partner cards, resources grid, FAQ, stats
Theme
17tests
Search test cases Matches only text visitors can actually see
Passing
0paid
Paid plugin licenses In-house tools instead of yearly subscriptions
Saved
Selah Screens v1.0 Mac app
4screens
Outputs Operator, projector, stage monitor, livestream
Pinned
12routes
Remote control API Stream Deck and Companion ready
Local
3bibles
Offline Bibles bundled No internet needed during a service
Offline

Desktop app · our product

Selah Screens: worship slides volunteers can run.

Church presentation software is either expensive or confusing for the volunteers who run it on Sunday. Selah Screens is a Mac app built to be simpler: a running order you drive with the arrow keys, from the first song to the last announcement.

  • Imports PowerPoint, Keynote, PDF, and Google Slides decks
  • Lyrics from plain text, ChordPro, or OpenLyrics, with quick find
  • Stage monitor with current and next slide, timers, and messages
  • Clean lower-thirds for livestreams, ready for chroma key

Web service · our product

Earshot: hear every mention of your brand.

A self-hosted social listening service that watches ten online communities for your brand, competitors, and category questions. Claude checks each match, drafts reply options, and sends the ones worth a response to Slack, email, or a webhook.

  • Reddit, Hacker News, Bluesky, GitHub, Mastodon, Stack Exchange, and more
  • Real-time Bluesky feed, scheduled checks for the rest
  • 10 Claude (MCP) tools to build filters and pull matches from chat
  • Plain Node with built-in SQLite: zero third-party packages
Earshot Self-hosted
10sources
Communities watched Plus any RSS or Atom feed
Live
2-3drafts
Reply options per match Written by Claude, approved by a person
AI
48hrs
Webhook retries No alert lost if your endpoint is down
Reliable
Web work for one client Ongoing
31pages
Dashboard site Traffic, search, installs, ads, revenue
Gated
12langs
Download page routing Each visitor sent to their language, tested live
Tested
2plugins
WordPress plugins Login protection and an approval workflow
Live

Web apps & WordPress · language-learning app

The web layer behind a global app's marketing team.

For a language-learning app, we built a login-protected dashboard site to replace link-shared reports, moved it to new hosting by building in parallel with the old server kept as a fallback, and connected it to Claude so the team can ask questions of their own data.

  • Custom login protection that replaced paid security features
  • Approve-before-publish workflow for AI and staff edits
  • Personalized homepage prototype: 14 versions, 89 posts mapped by language and goal

Web app · task platform

A backend rebuilt in place, with the front end untouched.

A multi-team task platform stopped working when its host started blocking the two-process setup it ran on. We rewrote the backend as a single Node server with built-in SQLite and kept the exact same API, so the React front end didn't need a single change.

  • Logins, organization and client roles, invites, and protected files
  • 91 API checks and 116 browser checks before go-live
  • Live data migrated, with the old version kept for rollback
Before 2 processes Blocked by the host, app down
After 1 server Same API, 207 checks passing

Small business sites

Off the site builder, onto something faster.

Several of these started on a drag-and-drop builder. Each one is now hand-coded, with structured data, and light enough to load quickly on a phone.

Food franchise · Manila 4 pages

A four-page site for a gyoza stall chain, including a franchise inquiry page.

  • Under 6 KB of HTML on the homepage
Theology journal 92 / 100

Mobile performance score in lab testing for a peer-reviewed journal, redesigned off a site builder.

  • Zero blocking time and zero layout shift
Solar & EV broker · Australia 0 ms

Blocking time on mobile after a redesign off a site builder.

  • Zero layout shift while the page loads
Staffing agency · Manila 1.7s

Until first content shows on a phone, for a recruitment agency's redesigned site.

  • Zero blocking time and zero layout shift
Church · Bangkok 2 languages

A bilingual Thai and English site for a church in Bangkok.

  • Under 25 KB of HTML
Restaurant & event venue · US 1 table

An accessible event-space comparison table added to an existing venue site, built for screen readers and search.

  • Real HTML, not an image, so it can be read and indexed

How we build

Six things every build gets.

  1. 01

    Light, fast pages

    Hand-written code instead of stacks of plugins and page-builder bloat. Less to download, less to break, less to update.

  2. 02

    Ready for search and AI

    Clean HTML, structured data, proper headings, a sitemap, and redirects for old URLs, so a relaunch doesn't cost you rankings.

  3. 03

    Security built in

    Login protection, locked-down APIs, no exposed usernames, and secrets kept outside the web root, from day one.

  4. 04

    Staging and review

    Changes go to a staging copy first, and content can require approval before it goes live, including edits made by AI.

  5. 05

    Tested before launch

    Automated test harnesses for the parts that matter, browser checks on real pages, and a rollback plan for every migration.

  6. 06

    A real handover

    A written guide, training for your editors, backups, and someone to call. You own the code and the hosting.

Tools of the trade

What we build with.

HTML & CSS JavaScript React Vite Tailwind Node.js Express SQLite PocketBase PHP WordPress Elementor WPML Python Electron Claude & MCP Google APIs JSON-LD schema

Questions

Common questions.

Do you build on WordPress or code everything by hand?

Both, depending on who has to run the site afterwards. If your team needs to publish and edit pages themselves, we build a custom WordPress theme with editing blocks made for your content. If the site rarely changes, hand-coded HTML and CSS is faster, cheaper to host, and has almost nothing to hack.

Can you take over or fix a site someone else built?

Yes. Most of our work starts with an existing site: we audit it, fix what's broken, and rebuild only the parts that need it. We have also rebuilt app backends in place while keeping the same API, so the front end didn't need to change.

Will the new site be ready for SEO and AI search?

Yes. Every build ships with clean, crawlable HTML, structured data, sensible titles and headings, a sitemap, and redirects for any old URLs, so you don't lose rankings at launch. For ongoing search work, see SEO & AEO.

What happens after launch?

You get a written handover guide, a staging site for testing changes, backups, and training for whoever will edit the site. Ongoing support and improvements are available monthly.

Let's talk

Have a site or an app that needs building?

Book a 20-minute call. Tell us what you need it to do and who has to run it afterwards, and we'll tell you honestly how we'd build it.