Websites that bring in work
A site that loads instantly on a phone in a parking lot, says what you do, and makes it easy to call you. Fast because it is small — not because it was optimised afterwards.
Oklahoma City · Independent Software Engineering
in Business Websites
I design, build, secure and maintain software for Oklahoma City businesses — the whole job, by one engineer working with AI, at a pace that used to require an agency.
A development session: a request in plain English, the standard library and Zod added from JSR, a small Deno web application written and tested, and the whole thing deployed to a live address with one command.
01 The thesis
I am Pedro M. Dominguez. I build business software in Oklahoma City, and I build it deliberately small. Most of what makes modern web projects expensive is not the problem being solved — it is the machinery bolted around it: build pipelines, framework migrations, hundreds of transitive dependencies, and a team large enough to keep all of it standing.
Strip that away and something surprising happens. A single engineer with good tools and AI assistance can deliver, secure and maintain real systems on a timeline that used to require a firm. Not by cutting corners — by removing the parts that were never load-bearing.
This site is the argument and the evidence. It is a few hundred lines of TypeScript on the Deno runtime, standard library only, no framework, served straight from a single process. Read the source; it is the same way I build for clients.
02 What I build
A site that loads instantly on a phone in a parking lot, says what you do, and makes it easy to call you. Fast because it is small — not because it was optimised afterwards.
The form that turns a visitor into a job on your calendar, wired to your inbox and checked hard enough that spam and half-filled requests never reach you.
Scheduling, dispatch, inventory, invoicing — built around how the work is really done, including the paper and the whiteboard and the spreadsheet everyone maintains.
A Contabo VPS, Deno Deploy, or a server already in your name — the same software runs on any of them. You own the accounts, you hold the source, and you are never captive to me. Backups, certificates and updates are handled.
03 Approach
Built small on purpose
Software you can still change in year three. A system small enough to hold in one head is a system that gets fixed the day it breaks, instead of the quarter it breaks.
Keeps working when the internet does not
Trucks in rural Oklahoma, a shop with bad wifi, an office in an outage. The app keeps taking information and catches up on its own once the signal comes back.
Almost nothing borrowed from strangers
Most web software is assembled from hundreds of packages written by people nobody has met. Each one is a way in and a thing to update. Yours has a handful, chosen on purpose.
Locked down by default
The server starts with permission to do nothing — not to read your files, not to reach the internet — and gets back only what the job needs, written down where it can be read.
AI does the typing. I do the judgment.
Claude Code and Codex handle the mechanical half — scaffolding, tests, the tedious refactor — so one engineer moves at the speed of a team. What to build, and whether it is right, stays a human decision and stays mine.
Nothing to migrate off later
No framework to be abandoned in three years and no rebuild to pay for when it is. This is built on the web itself, which has never had a breaking release.
04 The advantage
The sites listed below run day and night on one small server, maintained by one engineer. That is only possible because each one is small, boring and built the same way — and it is why a project here does not carry the overhead of a firm.
The person in your first meeting is the person writing the code and the person answering at 7pm when something looks wrong. No account manager, no offshore team, no ticket queue between you and the person who can fix it.
An agency's price carries its standard toolkit — the build pipeline, the yearly framework upgrade, the security audit of code nobody there wrote. Take that away and the same working software costs less to build and far less to keep.
The result is not a smaller version of an agency engagement. It is a different shape: less surface area, fewer meetings, and a system you could hand to another engineer tomorrow without an archaeology budget.
05 Selected work
Not demos. Systems that a shop, a distributor or a contractor depends on during business hours — each one small enough to explain in a paragraph and to maintain for years.
Running right now
4 sites · one engineer · one small server in Oklahoma City. That is only possible because each one is small and built the same way.
Delivery logging for a regional distributor whose drivers lose signal every day.
Drivers covering rural routes outside the metro were recording deliveries on paper because the vendor app blanked out the moment cell coverage dropped. Proof of delivery arrived at the office a day late, disputed invoices took a week to settle, and the office manager re-keyed every ticket by hand.
A route application that runs entirely in the driver's browser and keeps working with the radio off. Stops, signatures and photos are captured locally and reconciled with the office the next time the truck has a usable connection.
IndexedDB holds the day's route as the source of truth on the device. A service worker serves the application shell so a cold start needs no network at all. Completed stops queue as an append-only log and sync through a single Deno endpoint that validates every record and resolves conflicts by stop id and timestamp.
Connectivity is the constraint, so the design starts there. Treating the device as authoritative and the server as a reconciler removes the entire class of failures where a spinner blocks a driver who is standing at a loading dock.
Bay scheduling and customer messaging for an independent auto shop.
Three service bays were booked on a paper calendar at the counter. Double-bookings were routine, customers called constantly for status updates, and the shop was paying a monthly per-seat fee for a scheduling product that still could not answer 'is my car ready'.
A scheduling board sized for the counter monitor and a status page each customer reaches from a texted link. Writing a status on the board is what sends the update; there is no second system to keep in sync.
Server-rendered HTML with progressive enhancement: the board is usable with JavaScript disabled, and a small script upgrades it to live updates over server-sent events. State is a single SQLite database file. Customer links are signed, expiring tokens that grant read access to exactly one work order.
A repair shop needs the counter screen to be correct, fast and boring. Server-rendered pages with one enhancement layer meant no build pipeline, no client framework to upgrade every quarter, and a system the owner can back up by copying a file.
Document intake and review queue for a specialty contractor.
Permit packets arrived as email attachments, lived in one estimator's inbox, and went missing whenever that estimator was on a jobsite. Nobody could say which packets were waiting on the city and which were waiting on the office.
An intake form and a review queue with an audit trail. Every packet has a state, an owner and a history, and the queue is the only place work is tracked.
Uploads are size-capped and content-type checked at the edge, written outside the web root with generated names, and served back only through an authenticated handler — the filesystem is never addressable from a URL. Form input is validated with Zod at the boundary, and state transitions are explicit functions with no hidden effects.
File upload is where small business applications get breached. Making uploads unreachable by path, non-executable by storage location and validated by schema removes the common failure modes rather than filtering for them after the fact.
Self-hosted menu and ordering page for a family restaurant.
The restaurant's menu lived inside a hosted page builder that loaded slowly on phones, charged a monthly fee to change prices, and pushed customers toward a delivery marketplace that took a cut of every order.
A fast, static-first menu the owner edits directly, with call-ahead ordering that sends tickets straight to the kitchen printer.
The menu is generated from one structured data file into static HTML at startup. No client-side framework, no third-party scripts, no fonts or trackers from other origins — which is also what makes the Content-Security-Policy strict enough to be meaningful.
Most of a restaurant's traffic is a hungry person on a phone on mobile data. Shipping static HTML and a few kilobytes of CSS is not a compromise for that audience; it is the best possible experience, and it costs a few dollars a month to run.
06 What it costs
An Oklahoma City business is typically quoted thousands to get a real website built, and thousands more every year to keep it running. That price is not the software. It is the firm around the software — the account manager, the project manager, the designer, the developer and the person who bills you for all four.
Take the firm away and the number changes completely. $295 builds and launches your site. $20 a month keeps it fast, patched, backed up and current — and your domain is managed free for the first year. That is $535 for your entire first year, from one engineer who answers his own phone.
07 Working together
Free
An hour watching how the work moves today — the paper, the whiteboard, the spreadsheet everyone quietly maintains. Most of the design is already there.
Week 1
A written proposal for the one change that removes the biggest daily friction, with a fixed price and a date. Not a platform. The part that pays for itself first.
Weeks 2–5
Working software at a real web address from the first week, updated as it goes. You use it while it is being built, so corrections happen while they are still cheap.
Launch
Live on hosting in your name, with the source, the documentation and the backups. Ongoing support is a choice you keep making, not a contract you signed once.
08 Common questions
09 Start here
The first conversation is free and it is with me — not a salesperson. Describe the part of your day that runs on paper, a whiteboard or a spreadsheet nobody trusts, and I will tell you honestly whether software is the answer.