Skip to content
Pineland Technologies

Portfolio

Recent projects.

Building for the web since 2014; this is the current work. Not concepts, not redesign mockups, but working software with real users, real data, and a deployment history. Pick a service below to see only that kind of work, or open any project for the problem it solved and what it took to build.

Mobile Service Sync: The software a mobile service business runs on01

SaaS Platform

Mobile Service Sync

The software a mobile service business runs on

Scheduling, dispatch, invoicing, and parts for mobile oil change operators, in one place. Jobber and Housecall Pro are general-purpose; this one knows what a 2019 Silverado takes, which filter it needs, and the fastest order to hit today's eight stops.

Next.js 14TypeScriptPrismaPostgresMapbox+3
mobileservicesync.comCase study
RWCBM: A private members' network, web and mobile02

Web App

RWCBM

A private members' network, web and mobile

A private hall where members list their companies, post what they are building, and ask each other for help. Invite-only, with a privacy model designed around the fact that a business phone number and a personal one are not the same thing.

Next.jsClerkVercel PostgresVercel BlobStripe+5
rwcbm.comCase study
RWCBM Mobile: The members' network, on the phone03

Mobile App

RWCBM Mobile

The members' network, on the phone

The members are contractors and business owners, not people sitting at desks. This puts the whole network in a pocket: the directory, the request board, and messages, with a notification when somebody answers. They sign up once on the web and are already logged in here.

React NativeExpo SDK 54Expo RouterTypeScriptClerk+2
Shipped · iOS and Android · screens shown with demo dataCase study
LaneLab: Video stroke analysis platform for a swim coach04

Web App

LaneLab

Video stroke analysis platform for a swim coach

A swimmer sends footage and gets back a marked-up review: the one fix that matters, pinned to the second in the video where it happens, with drills and a training block written off the back of it. The coach writes those reviews in a console built around the seventy-two hour turnaround the service promises. Every screen is real and clickable, running on stand-in data while the client signs off on the product itself.

Next.js 16React 19TypeScriptTailwind CSS v4next/font+1
Client preview · password-protected · shown with mock dataCase study
K&J Shine Works: Auto detailing, rebuilt off WordPress05

Marketing Site

K&J Shine Works

Auto detailing, rebuilt off WordPress

A one-page detailing site that replaced a WordPress install: faster, nothing to patch, and no plugin bills. It went up beside the old site first so the client could compare the two on real URLs, then took over the domain the day they said go.

HTMLCSSJavaScriptVercelWebP
kjshineworks.comCase study
Low-Key Locksmith: 43 city pages that are worth reading06

Marketing Site

Low-Key Locksmith

43 city pages that are worth reading

A mobile locksmith working three Utah counties. Somebody locked out in Cedar City finds a page written about Cedar City, with its own ZIP codes, landmarks, and drive times, rather than a template with the name swapped. Sixty pages, and changing the phone number changes it on all of them at once.

Next.js 15React 19TypeScriptTailwind CSS v4Vercel
lowkeyut.comCase study
NXR Advertiser Studio: Selling podcast ads without the email thread07

SaaS Platform

NXR Advertiser Studio

Selling podcast ads without the email thread

Advertisers see what is genuinely available, buy a package or build a campaign slot by slot, and upload their own creative. The network works one queue instead of an inbox: what sold, what needs review, and what runs where. Nobody has to remember which email had the current availability.

Next.js 16React 19TypeScriptTailwind CSS v4Prisma+3
nxr-advertiser-studio.vercel.appCase study
Deafinitely Dogs: A rebuild that kept every post since 201808

Nonprofit

Deafinitely Dogs

A rebuild that kept every post since 2018

A service dog nonprofit with years of program pages, donor content, and blog posts stranded on aging shared hosting. All of it came across, back to 2018, onto a build that loads fast and that staff can edit themselves: changing a program description no longer means finding a developer.

Next.js 16React 19TypeScriptResendJSON content model+1
deafinitelydogs.orgCase study
Oil To Go: Ads that keep working when the pixel is blocked09

Marketing Site

Oil To Go

Ads that keep working when the pixel is blocked

Mobile oil change in Cedar Rapids. The site is fast because there is almost nothing to it, and the advertising keeps learning: conversions are reported from the server, so a blocked browser pixel does not quietly push the cost per lead up month after month.

HTMLCSSJavaScriptVercel FunctionsMeta Conversions API
oil-to-go.coCase study
Coat of Arm Wars: A media kit that cannot go stale10

Marketing Site

Coat of Arm Wars

A media kit that cannot go stale

An armwrestling channel with 21.5K subscribers and 2.96M lifetime views, and a site whose job is to turn that into sponsorship. Every figure on the media kit is one a stranger can check against a public YouTube page, and none of them is typed in by hand: the site reads them off the channel on the way out the door.

Next.js 16React 19TypeScriptTailwind CSS v4Resend+2
armwrestling.proCase study
Mobile Service Sync Field App: The technician app, iOS and Android11

Mobile App

Mobile Service Sync Field App

The technician app, iOS and Android

The job in the technician's hand: today's route, the customer and their vehicle, before and after photos, and the card payment taken at the door before the van pulls away. It keeps working in a dead zone, and it is the same account and the same data as the web app.

React NativeExpo SDK 54Expo RouterTypeScriptClerk+3
Shipped · iOS and AndroidCase study
Embeddable Booking Widget: A booking wizard that drops into a site you already have12

Custom Solution

Embeddable Booking Widget

A booking wizard that drops into a site you already have

Customers book on the site you already own rather than being sent to somebody else's domain. The widget reads the plate, works out what that exact vehicle needs, offers a slot that is genuinely open, and hands back a confirmation number. The price on the page is the price on the invoice.

Next.jsReactTypeScriptServer ActionsCarAPI+3
Live · embedded on operator sites · shown with demo dataCase study
Ad Spend and Attribution: Where the sign-ups came from, and what each one cost13

Custom Solution

Ad Spend and Attribution

Where the sign-ups came from, and what each one cost

The module that answers the only question anyone actually asks about advertising: did it work. Google and Meta spend joined to the sign-ups those clicks produced, with cost per acquisition and return on spend coming out of the same table rather than out of two dashboards that disagree.

Next.jsTypeScriptPrismaPostgresGoogle Ads API+3
Live · private console · shown with demo dataCase study
The Newsroom Block: Everything a blog needs, already built14

Custom Solution

The Newsroom Block

Everything a blog needs, already built

A complete publishing system that becomes part of your site: write and schedule posts, hold comments for review before anyone sees them, let readers search years of archive, and find out what people actually read. It already runs on three sites, so you get something proven on day one instead of paying to invent it, and every improvement made for anyone lands on yours too.

Payload 3Next.js 16TypeScriptPostgresLexical+1
Live · running on three sites · shown with demo contentCase study

Want one of these for your business?

Tell us what it needs to do. You will get a straight answer on what it takes to build, what it costs to run, and which half of the idea to drop.

Or skip the form entirely. hello@pinelandtech.com reaches a person, not a queue.

Score My Sitefree