// Direction C — "Grid": Bold technical research-firm energy const DirectionC = ({ density = "spacious" }) => { // Direction C runs with extra breathing room — pull the rhythm of B into the grid. const airyVars = density === "spacious" ? { "--d-section-py": "180px", "--d-card-pad": "56px", "--d-h1": "112px", "--d-h2": "68px", "--d-body": "19px", "--d-eyebrow": "13px" } : {}; const cStyles = { root: { fontFamily: "'Space Grotesk', 'Inter', system-ui, sans-serif", background: "#fafaf7", color: "#0a0a0a", width: "100%", overflow: "hidden", position: "relative", ...airyVars }, nav: { display: "grid", gridTemplateColumns: "104px 1fr auto", alignItems: "stretch", padding: 0, borderBottom: "1px solid #0a0a0a", height: 104 }, brand: { display: "flex", alignItems: "stretch", justifyContent: "center", borderRight: "1px solid #0a0a0a", overflow: "hidden" }, navLinks: { display: "flex", borderLeft: "1px solid #0a0a0a", height: "100%" }, navLink: { padding: "0 28px", borderRight: "1px solid #0a0a0a", fontFamily: "'JetBrains Mono', monospace", fontSize: 12, letterSpacing: "0.1em", textTransform: "uppercase", display: "flex", alignItems: "center" }, cta: { background: "var(--tjb-forest)", color: "#fafaf7", border: 0, borderLeft: "1px solid #0a0a0a", padding: "0 36px", height: "100%", fontFamily: "'JetBrains Mono', monospace", fontSize: 12, letterSpacing: "0.12em", textTransform: "uppercase", fontWeight: 600 } }; return (
); }; const CMark = () => ; const HeroC = () =>
// tjb.llc est. 2024 · MSSP

Networking,
cloud, and the
security
that connects them.

TJB is a Managed Security Service Provider. We analyze the technical risk in your stack — networks, cloud, identity, endpoints — and engineer the response.

TJB is not a help-desk. TJB is not a re-seller. TJB is a risk-led engineering practice for the part of your stack that does not get a second chance.

Engage TJB → Read the threat model
{/* Right column — portrait + signed note */}
; // Bright-coloured data-centre illustration — server-aisle in vanishing-point // perspective with vivid LED rows. Rendered with SVG so it scales cleanly and // can be replaced at any time by dragging a real photo onto the image-slot. const DataCentreArt = () => { // Six rack pairs receding to the vanishing point. Each row of LEDs uses a // saturated hue from a curated bright palette; we vary the count so the // racks read as live equipment rather than wallpaper. const palette = ["#00f5ff", "#ff2bd6", "#ffd400", "#7cff5b", "#ff6a3d", "#5b8cff"]; const racks = [ { z: 0.10, hue: 0 }, { z: 0.22, hue: 1 }, { z: 0.36, hue: 2 }, { z: 0.52, hue: 3 }, { z: 0.70, hue: 4 }, { z: 0.86, hue: 5 }]; // Build a single rack face (one side of the aisle). const Rack = ({ side, z, hueIdx }) => { // side: 'L' or 'R'. Project from foreground (z=0) to vanishing point (z=1). const cx = 50; // vanishing-point x % const cy = 52; // vanishing-point y % const outer = side === "L" ? 0 : 100; const inner = side === "L" ? 30 : 70; const x1 = outer + (cx - outer) * z; const x2 = inner + (cx - inner) * z; const yT = 8 + (cy - 8) * z; const yB = 96 + (cy - 96) * z; const points = `${x1},${yT} ${x2},${yT} ${x2},${yB} ${x1},${yB}`; const baseColor = palette[hueIdx % palette.length]; // LED bar rows — fewer for distant racks. const rows = Math.max(3, Math.round(9 * (1 - z))); return ( {/* Rack face — dark with a faint vertical gradient */} {/* LED rows */} {Array.from({ length: rows }).map((_, i) => { const t = (i + 0.5) / rows; const ry = yT + (yB - yT) * t; const rh = Math.max(0.6, (yB - yT) / rows * 0.45); // Alternate accent hues per row for variety. const c = palette[(hueIdx + i) % palette.length]; return ( {/* Tiny indicator dots along the bar */} {Array.from({ length: Math.max(2, Math.round(8 * (1 - z))) }).map((__, j, arr) => { const u = (j + 0.5) / arr.length; const dx = Math.min(x1, x2) + Math.abs(x2 - x1) * u; return ( ); })} ); })} {/* Bright outline glow along inner edge — the lit aisle */} ); }; return ( {/* Ceiling */} {/* Floor */} {/* Glowing aisle stripe */} {/* Ceiling light strips */} {[0.18, 0.32, 0.48].map((t, i) => { const cx = 50,cy = 52; const y = cy * t; const xl = 0 + (cx - 0) * t; const xr = 100 + (cx - 100) * t; return ( ); })} {/* Racks — back to front so nearer racks overlap correctly */} {[...racks].reverse().map((r, i) => )} {/* Vanishing-point bloom — sits over everything for the warm core glow */} {/* Subtle scan-line texture for "photographed" feel */} {Array.from({ length: 60 }).map((_, i) => )} ); }; // DataCentrePhoto — static pointing at the exported asset file. const DataCentrePhoto = () => { return (
The Floor
FIG.01 / THE FLOOR
EST. 2024
); }; const PortraitNoteC = () =>
{/* Data-centre photo slot — drop a real image here. The wrapper sizes itself to the photo's natural aspect so nothing is cropped. */} {/* Signed note — personal, hand-written feel */}
// FROM THE DESK

Most security work is monitoring theater — dashboards sold in place of attention, alerts surfaced without context, tickets answered without thought. TJB does different work: we analyze the technical risk in your environment, engineer the controls that close it, and react when those controls catch something. Principal-led. No tier-one queue.

— Tim Brewer PRINCIPAL · FOUNDER
; const MarqueeC = () => { const items = ["NETWORK", "CLOUD", "ENDPOINT", "IDENTITY", "SIEM", "FIREWALL", "BACKUP", "ANALYSIS", "INCIDENT", "RESPONSE"]; return (
{items.map((s, i) =>
{s}
)}
); }; const SectionHeadC = ({ idx, kicker, title, sub }) =>
{idx}
§ {kicker}

{title}

{sub &&

{sub}

}
; const ThreatModelC = () =>
{[ ["Analyze", "Every layer of your stack mapped — endpoint, identity, firewall, cloud. Technical risk named, prioritized by exploitability, and put on a written register.", "→ Risk register"], ["Engineer", "Out-of-the-box controls catch the easy stuff. TJB replaces them with segmentation, conditional access, detections, and backups built for your environment.", "→ Tuned controls"], ["React", "Containment, eviction, lessons — full incident response by an engineer who actually knows your environment, not a tier-one queue reading off a runbook.", "→ Same-day IR"]]. map(([t, d, m], i) =>
STEP 0{i + 1}

{t}.

{d}

{m}
)}
; const ServicesC = () => { const services = [ ["NET", "Network Design & Mgmt", "Segmented architectures and zero-trust access. SD-WAN that does not fold when a circuit blinks.", ["Cisco", "Meraki", "Juniper", "Ubiquiti", "Palo Alto"]], ["CLD", "Azure & M365", "Conditional access, Entra ID, Defender for Cloud — and backups proven by restoring them, not by trusting the dashboard.", ["Azure", "M365", "Entra", "Intune", "Defender"]], ["SIM", "SIEM & Detection", "Aggregated logs and correlated alerts tuned for signal, not vendor defaults.", ["Sentinel", "Wazuh", "Graylog", "Rapid7"]], ["EDR", "Managed Endpoint", "Deployment, policy tuning, and host quarantine that fires before the user notices. After-hours response on retainer.", ["SentinelOne", "Defender", "CrowdStrike"]], ["IAM", "Identity & Access", "Phishing-resistant authentication, conditional access, privileged access management. Most breaches start at the login page — we close it first.", ["Entra ID", "Okta", "Duo", "YubiKey"]], ["VLN", "Vulnerability Mgmt", "Continuous scanning, prioritized by exploitability, and closed — not shipped back to you as a PDF.", ["Tenable", "Qualys", "Defender"]], ["FW", "Firewall Mgmt", "Rules with reasons behind them. Segmentation, IDS/IPS, VPN — reviewed quarterly, not only on day one.", ["Juniper", "Palo Alto", "Meraki MX"]], ["BCP", "Backup & DR", "Tested restores. Immutable storage. Runbooks rehearsed before they are needed.", ["Veeam", "Datto", "Azure Backup"]], ["IR", "Incident Response", "When containment is the priority, TJB mobilizes — forensics, eviction, post-incident lessons. Standing retainer or emergency engagement.", ["Velociraptor", "KAPE", "M365 audit", "Sentinel"]]]; return (
{services.map((s, i) =>
{s[0]}
0{i + 1}

{s[1]}

{s[2]}

{s[3].map((t) => {t} )}
)}
); }; // BuildOutsC — Project & advisory work. Distinct from the ongoing // managed-services grid (ServicesC) above: these are scoped, one-off // engagements TJB takes on alongside or independent of a retainer. // Layout is a dense ledger to read as complementary, not a duplicate // 3×3 card grid. const BuildOutsC = () => { const rows = [ { code: "HST", title: "Secure managed hosting", lede: "Hardened VPS, dedicated, or co-location. Patched OS, encrypted backups, monitored from day one.", stack: ["Linux", "Windows", "Websites", "Cloud Apps"], deliverable: "Hosted workload + runbook" }, { code: "DEV", title: "Bespoke software development", lede: "Internal tooling, integrations, and automation written to your spec. Code you own, code that's documented, code reviewed against the same security bar as the rest of your stack.", stack: ["Python", "Node", ".NET", "Go", "Rust", "APIs", "SQL"], deliverable: "Source repo + handoff docs" }, { code: "CLD·D", title: "Cloud design & setup", lede: "Tenant build-outs, landing zones, M365 onboarding, lift-and-shift. Done once, done right — not patched together quarter after quarter.", stack: ["Azure", "AWS", "M365", "Terraform"], deliverable: "Tenant + IaC repo" }, { code: "PHY", title: "Physical security assessment & advisement", lede: "Door access, camera coverage, server-room controls, badge audits. On-site walk-throughs with a written remediation plan and vendor-neutral recommendations.", stack: ["On-site", "ACS", "CCTV", "Badge audit"], deliverable: "Site survey + remediation plan" }, { code: "AWR", title: "Security awareness training", lede: "Phishing simulations, role-based training, and reportable metrics. Built around the threats your people will actually see — not generic videos.", stack: ["Ninjio", "Hoxhunt", "Wizer"], deliverable: "Program + quarterly report" }, { code: "PEN", title: "Penetration testing", lede: "External, internal, and assumed-breach engagements. Findings prioritized by exploit chain and business impact, not raw CVSS score.", stack: ["Nessus", "Burp", "Caldera", "Bloodhound"], deliverable: "Findings report + retest" }, { code: "MAIL", title: "Email security & DMARC", lede: "Tenant hardening, SPF / DKIM / DMARC enforcement, attachment & link policies, banner and quarantine review. Closes the front door most attackers still walk through.", stack: ["M365", "Proofpoint", "Mimecast"], deliverable: "Enforced DMARC + policy set" } ]; return (
// code Capability What it is Tooling Deliverable
    {rows.map((r, i) => { const isLast = i === rows.length - 1; return (
  1. {r.code}
    0{i + 1} / 0{rows.length}

    {r.title}.

    {r.lede}

    {r.stack.map((t) => {t} )}
    ships with
    {r.deliverable}
  2. ); })}
// Pricing sized to scope. We do not bill discovery calls.
Scope a project →
); }; const ProcessC = () =>
04
§ Engagement

How an engagement runs — four phases.

{[ ["t=0d", "Posture review", "30-minute intake. We map what you run, who has access, what's logged."], ["t=14d", "Written brief", "A plain-English plan with priorities, costs, and what we're not doing yet."], ["t=30d", "Stand-up", "Tooling deployed. Logs flowing. First detections tuned. Backups verified."], ["t=∞", "Operate", "Monthly review. Quarterly tabletop. Reachable when it matters. No mystery invoices."]]. map(([t, h, d], i) =>
{t}

{h}

{d}

)}
; const IndustriesC = () => { const items = [ ["Healthcare", "PHI handling · device segmentation · M365 hardening"], ["Legal", "Client-data isolation · M365 · phishing-resistant identity"], ["Financial services", "Transaction monitoring · fraud-aware controls"], ["Manufacturing", "OT/IT separation · ransomware resilience"], ["Public sector", "Lean budgets · cloud migrations · device fleets"], ["Professional services", "M&A integrations · scaling · mobile workforce"]]; return (
{items.map((it, i) =>
0{i + 1} · sector

{it[0]}

{it[1]}

)}
); }; const CaseC = () =>
MSBC faced technical risk that many SMBs face. They had done just enough. But after what TJB engineered for MSBC, all incidents responded to were small, and auditors mentioned that their incident response, among other things, was one of the most prepared set of processes for an audit they had seen. } note="// Nine passing audit cycles thanks to TJB." metrics={[ ["3", "Sites segmented"], ["100%", "MFA enforced"], ["12", "Incidents handled"]] } /> TJB is the technical-security arm behind GOVERNANCE Ltd's GRC work — we close the technical gaps their audits surface, build the controls behind their policies, and mobilize incident response when their clients need hands on the keyboard. } note="// Joint engagements across healthcare and communications." metrics={[ ["2", "Joint engagements"], ["20", "Audits supported"], ["12", "IR mobilizations"]] } />
; const CaseCardC = ({ clientName, sectorTag, timeframe, lede, note, metrics, accent }) =>
{sectorTag} {timeframe}

{clientName}

{lede}

{note}
{metrics.map(([n, l]) =>
{n}
{l}
)}
; const AboutC = () =>
Tim Brewer — Founder
Tim Brewer
Principal · Founder
// background

15+ years across network engineering, cloud architecture, and incident response. Hands kept on tools — Cisco to Juniper to Rapid7 — not abstracted away into slide decks.

Founded in 2024 after watching small organizations get sold software they did not need and miss the breach they did. TJB exists to do the work that quietly keeps that from happening.

// principles
  • No mystery invoices.
  • No vendor TJB would not run itself.
  • No alert delivered without tuning.
  • No client TJB cannot pick up the phone for.
; const EngagementC = () => { const models = [ { tag: "RTN", kind: "Retainer", lede: "Ongoing security operations. Best for organizations that need continuous monitoring, monthly hardening work, and a known number to call when something is wrong.", includes: [ "Continuous monitoring & detection", "Quarterly hardening sprints", "Monthly written report", "Defined response SLA", "Standing incident-response coverage"], response: "Tier-1 alerts triaged within 15 min.", foot: "Sized to seats, sites, and risk profile. Multi-year discount available.", accent: false }, { tag: "PRJ", kind: "Project", lede: "A defined piece of work with a start and an end. Cloud migration, M365 hardening, network re-design, SIEM build-out, identity rollout.", includes: [ "Written scope & success criteria", "Fixed-fee or T&M, your choice", "Hand-off documentation", "30-day post-launch support", "Optional retainer to follow"], response: "Project kickoff within 2 weeks of signed scope.", foot: "Quoted from a written scope. We do not bill discovery calls.", accent: false }, { tag: "IR", kind: "Incident", lede: "Something is happening right now. Active intrusion, suspected compromise, ransomware. Engage TJB and we mobilize — forensics, eviction, recovery.", includes: [ "Mobilization within 1 hour", "Containment & forensic capture", "Eviction & tenant rebuild", "Written post-incident report", "Carry-over to retainer if desired"], response: "Boots on the keyboard in under an hour.", foot: "Hourly during the incident, with a not-to-exceed before we start.", accent: true }]; return (
{models.map((m, i) =>
{m.tag}
0{i + 1} / 03

{m.kind}.

{m.lede}

// Included
{m.includes.map((t) =>
+ {t}
)}
// Response

{m.response}

{m.foot}

)}
); }; const ResourcesC = () => { const items = [ { tag: "NET", idx: "01", title: "Managed Network Security", kicker: "Service brief", lede: "Your network has more exposure than you think. Risk-calibrated managed network security so you can stop guessing about your exposure and start knowing.", pages: "1 page · PDF", file: "assets/TJB-Network-Security-OnePager.pdf", contents: [ "Network risk assessment — prioritised findings & roadmap", "Managed firewall & perimeter — continuous rule management", "Network monitoring & detection — 24/7 NTA, IDS/IPS", "Vulnerability management — risk-tiered remediation" ] }, { tag: "CLD", idx: "02", title: "Managed Cloud Security", kicker: "Service brief", lede: "Your cloud provider secures the infrastructure. The rest is on you. Continuous cloud security operations so your environment stays assessed, monitored, and controlled — not just deployed.", pages: "1 page · PDF", file: "assets/TJB-Cloud-Security-OnePager.pdf", contents: [ "Cloud risk assessment — config, IAM, data, monitoring", "Cloud Security Posture Management (CSPM)", "Identity & access — least-privilege, MFA, stale removal", "24/7 monitoring across AWS, Azure, and GCP" ] }, { tag: "SEC", idx: "03", title: "Managed Cybersecurity", kicker: "Service brief", lede: "You have the tools. Do you have the operation behind them? Risk-based managed cybersecurity that turns security investment into security resilience — continuously, not periodically.", pages: "1 page · PDF", file: "assets/TJB-Cybersecurity-OnePager.pdf", contents: [ "Cybersecurity risk assessment — benchmarked to your sector", "Managed detection & response — 24/7 triage & containment", "Phishing & social-engineering defence — DMARC/DKIM/SPF", "Incident response — containment, recovery, post-incident review" ] } ]; return (
{items.map((r, i) =>
{r.tag}
{r.idx} / 03 · {r.pages}

{r.title}.

{r.lede}

// What we deliver
{r.contents.map((t) =>
+ {t}
)}
Download PDF
)}
// Need a tailored brief or a deck for your board? Email and we’ll send one over.
Request a tailored brief →
); }; const ContactC = () =>
// direct
RESPONSE SLA · 1 BUSINESS DAY
; // ContactFormC — POSTs to /send.php (SendGrid bridge). In the static preview // there's no PHP runtime, so a non-200 falls back to a friendly note rather // than throwing. Loading + success + error states are inline so the user // never leaves the page. const ContactFormC = () => { const [state, setState] = React.useState({ status: 'idle', error: '' }); const onSubmit = async (e) => { e.preventDefault(); if (state.status === 'sending') return; const form = e.currentTarget; const fd = new FormData(form); const payload = Object.fromEntries(fd.entries()); setState({ status: 'sending', error: '' }); try { const r = await fetch('assets/send.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); const j = await r.json().catch(() => ({})); if (r.ok && j.ok) { setState({ status: 'sent', error: '' }); form.reset(); } else { setState({ status: 'error', error: j.error || 'Could not send. Please email hello@tjb.llc.' }); } } catch (_) { setState({ status: 'error', error: 'Network error. Please email hello@tjb.llc.' }); } }; if (state.status === 'sent') { return (
// received

Brief request received.

We'll reply within one business day with questions and a proposed time. If it's urgent, call +1 (806) 583-5001.

); } return (
{/* Honeypot — kept off-screen, bots fill it, humans don't see it. */}
{state.status === 'error' ? `// ${state.error}` : '// encrypted in transit'}
); }; const ContactRowC = ({ k, v }) =>
{k}
{v}
; const FieldC = ({ label, placeholder, type = "text", textarea, name, required }) =>