import Image from "next/image"; import Link from "next/link"; import { ContactForm } from "~/app/_components/contact-form"; import { MobileNav } from "~/app/_components/mobile-nav"; import { ThemeToggle } from "~/app/_components/theme-toggle"; const services = [ { title: "Networks & Infrastructure", body: "UniFi networking with wired links, wireless access, VLANs, and hardware that stays up when it counts.", tag: "UniFi", }, { title: "Servers & Cloud", body: "Local and cloud servers with web hosting, S3 storage, and backups tested by restore.", tag: "Cloud", }, { title: "Databases", body: "Designed, deployed, and operated under the stack, with backups, monitoring, and tested restores.", tag: "Data", }, { title: "Web & Applications", body: "Sites built and hosted from the marketing page to the ticket platform. When a site fails, one number gets the call.", tag: "Web", }, { title: "Commerce & Ticketing", body: "A ticket system built from scratch, plus a Shopify store running real event-day traffic, not a demo.", tag: "Commerce", }, { title: "On-Site Operations", body: "Event-day coverage at the counter, the gate, and wherever else the day requires. Most clients get this as part of the job.", tag: "On-site", }, ]; export default function Home() { return (
); } function Wordmark() { return ( Hadlock Technologies Hadlock Technologies ); } function Header() { return (
Get in touch
); } const capabilities = [ "Networks", "Servers", "Cloud", "Storage", "Databases", "Web", "Commerce", ]; function Hero() { return (
{/* The Hadlock Pond image fills the section with a slight darkening filter */}
Hadlock Pond at dawn in Fort Ann, New York
{/* Scrims darken the top for the nav and the left for the text. They fade the base into the page */}
{/* Dark overlay, same treatment as the Racetix card, in dark mode */}
Hadlock Technologies Hadlock Technologies

Everything technical, handled.

The same stack powers clients across Long Island — race tracks, retailers, and web platforms. UniFi, cloud infrastructure, databases, websites, ticketing, and commerce, built and operated by one person. Hadlock Technologies is that work under one name.

{/* A capability strip, where DUNE puts its client logos */}
Working across {capabilities.map((c) => ( {c} ))}
); } function Services() { return (
{services.map((s) => (
{s.tag}

{s.title}

{s.body}

))}
); } function Approach() { const points = [ { title: "Full ownership", body: "Everything from the network cable to the interface is built and owned in one place. Nothing gets lost in a handoff, because there is no handoff.", }, { title: "Hands-on, not hands-off", body: "The person who designed the system is the person who fixes it, on-site when it matters. No ticket queue for an answer.", }, { title: "Built to stay up", body: "Backups are tested. Monitoring alerts before a problem surfaces. The systems handle the busy night, not just an average Tuesday.", }, ]; return (
{points.map((p) => (

{p.title}

{p.body}

))}
); } const racetixFeatures = [ { title: "Multi-tenant by track", body: "Each track runs its own catalog, prices, and gate.", }, { title: "QR gate scanning", body: "The scanner app verifies tickets offline at the gate.", }, { title: "Apple & Google Wallet", body: "Paid tickets go straight into the phone wallet.", }, { title: "Stripe payments", body: "Stripe Connect runs checkout, refunds, and tax.", }, ]; const beenvoiceFeatures = [ { title: "Invoices that stay organized", body: "Draft line items, apply taxes, send a link, and export a polished PDF.", }, { title: "Built-in time clock", body: "Track billable hours as you work, then pull them into an invoice without retyping.", }, { title: "Recurring invoices", body: "Set up retainers once, then let beenvoice generate the next invoice on schedule.", }, { title: "Send and follow up", body: "Email invoices from the app and keep status visible from draft through paid.", }, ]; const racehubFeatures = [ { title: "Events & schedule", body: "Race events, special events, and iCal feeds for every fan's calendar.", }, { title: "Standings & results", body: "Points, lineups, and results served live from the Hotlap API.", }, { title: "News & media", body: "Articles, announcements, and promotions published from the CMS.", }, { title: "Granular permissions", body: "97+ permissions, role-based access, and a full audit trail.", }, ]; const hristudioFeatures = [ { title: "Visual experiment designer", body: "Drag-and-drop blocks build branching protocols. No code required.", }, { title: "Guided wizard interface", body: "Step-by-step trial execution with every action logged in time.", }, { title: "Robot-agnostic", body: "Design once, run on any robot — NAO, Pepper, or TurtleBot.", }, { title: "Automatic data capture", body: "Synchronized multi-modal streams, timestamped and exportable.", }, ]; function Projects() { return (
Race cars on a short track under the lights
Racetix Racetix

Multi-tenant ticketing for short tracks. It owns ticket products, orders, payments, admission redemptions, and ticket email. Tracks embed checkout in their own site through the versioned API.

Explore Racetix
{racetixFeatures.map((f) => (

{f.title}

{f.body}

))}
{/* beenvoice backdrop: hairline grid + soft animated blob */}
{/* Scrim keeps the text readable in both themes */}
$ been voice

Run your freelance admin from one place.

beenvoice manages clients, tracks time, sends invoices, and stays on top of getting paid, without the weight of a full accounting suite.

Explore beenvoice
{beenvoiceFeatures.map((f) => (

{f.title}

{f.body}

))}
{/* racehub backdrop: dark checkered band, stays dark in both themes */}
); } function CheckIcon({ className }: { className?: string }) { return ( ); } function BotIcon({ className }: { className?: string }) { return ( ); } function NameStory() { return (
The name

Named for still water in the Adirondacks.

The water at the top of this page is Hadlock Pond in Fort Ann, New York. It is quiet, dependable, and built to last. This is the standard held for infrastructure. You should not have to think about it for it to work.

); } function Contact() { return (
Get in touch

Have something technical that needs an owner?

); } function Footer() { return ( ); } function SectionHeading({ eyebrow, title, description, display = false, }: { eyebrow: string; title: string; description: string; display?: boolean; }) { return (
{eyebrow}

{title}

{description}

); }