bstein-dev-home/frontend/src/data/homepageContent.js
2026-08-01 03:24:51 -03:00

852 lines
34 KiB
JavaScript

const focusMode = (import.meta.env?.VITE_HOMEPAGE_FOCUS || "sdet").trim().toLowerCase();
const focusProfiles = {
devops: {
eyebrow: "AVAILABLE FOR REMOTE DEVOPS AUTOMATION AND PLATFORM WORK",
role: "DevOps Automation Engineer / Senior SDET",
shortRole: "DevOps Automation / Platform",
summary:
"I build custom software, tooling, and infrastructure that make development and test workflows easier, safer, and more repeatable: platform tools, CI/CD, Docker, Kubernetes, Linux systems, Python automation, observability, and release gates.",
experienceLine:
"Engineering experience across Boeing, IBM, deployment automation, infrastructure tooling, system testing, and production-minded platform operations.",
techStack: [
"Kubernetes",
"Docker",
"Linux",
"Terraform",
"Ansible",
"Flux",
"Helm",
"Jenkins",
"Harbor",
"Keycloak",
"Vault",
"Grafana",
"Prometheus",
"Python",
"Bash",
"Pytest",
"Selenium",
"Playwright",
],
capabilityOrder: [
"CI/CD & Release Flow",
"Docker & Kubernetes",
"Python & Operational Automation",
"Observability & Reliability",
"Platform Tooling & GitOps",
"Test Automation & SDET",
],
serviceOrder: [
"Platform bring-up and GitOps operating model",
"AWS and dedicated-host Kubernetes buildouts",
"Cluster recovery, bootstrap, and outage drills",
"CI/CD quality gates and release machinery",
"Storage, backup, and restore operations",
"Operational tools for real infrastructure",
],
capabilitySection: {
kicker: "Capabilities",
heading: "Where I Add Platform Value",
description:
"Delivery automation, infrastructure operations, and platform troubleshooting across the full path from commit to running service.",
},
serviceSection: {
kicker: "Platform problem solving",
heading: "From 0 to 100",
description:
"Beyond ticket-sized fixes, I build the operating machinery around delivery: cloud or dedicated-host Kubernetes, source-of-truth repositories, CI/CD gates, GitOps, recovery automation, backups, observability, and operator tools.",
},
workSection: {
kicker: "Projects & Experience",
heading: "Platform Showcase",
description:
"Inspectable repos, live services, and professional work samples that show how I approach real infrastructure.",
},
selectedWorkOrder: ["Titan Lab + titan-iac", "Atlas operator tools", "IBM", "Boeing", "Cassandra"],
engagementOrder: [
"Fixed-Scope Technical Rescue",
"Short-Term Remote Contract",
"Ongoing Engineering Support",
"Senior Remote Engineering Role",
],
contactSection: {
heading: "Have a Platform, Pipeline, Deployment, or Automation Problem?",
description:
"Send the problem, technical stack, expected outcome, and timeline. I will respond with whether it is a fit, what information is needed, and the most practical next step.",
},
cassandra: {
description:
"Homegrown AI playtester for Magic: The Gathering deck construction, deployed for the community on Atlas with backend orchestration and disposable simulation workers.",
points: ["community AI service", "Kubernetes deployment", "worker orchestration", "job cleanup"],
},
about: {
role: "DevOps Automation Engineer / Senior SDET",
focusLine: "Platform Engineering · CI/CD · Reliability",
summary: [
"DevOps Automation Engineer and Senior SDET with experience across CI/CD pipelines, Kubernetes, Docker, Linux infrastructure, Python automation, observability, release gates, and system testing.",
"I build deployment workflows, infrastructure utilities, dashboards, operator tools, and test automation that make complex delivery environments easier to run and safer to change.",
"My projects and dashboards run on Atlas, the live bstein.dev platform.",
],
skillGroups: [
{
label: "Platform / Cloud",
items: ["AWS", "GCP", "Kubernetes", "Helm", "Docker Compose", "Harbor", "Artifactory", "IronBank", "Keycloak", "Vault"],
},
{
label: "CI/CD & GitOps",
items: ["Jenkins", "Flux CD", "Argo CD", "GitHub Actions", "Drone", "Terraform", "Ansible"],
},
{
label: "Observability / Data",
items: ["Grafana", "Prometheus", "OpenSearch", "Zabbix", "LogDNA", "ELK", "PostgreSQL", "MySQL", "Redis", "Kafka"],
},
{
label: "Automation",
items: ["Python", "Bash", "Go", "Groovy", "SQL", "Rust"],
},
{
label: "Testing",
items: ["Pytest", "Selenium", "Playwright", "Jest", "API", "E2E", "System", "Chaos", "Load", "Performance", "Contract"],
},
{
label: "Web & AI",
items: ["Vue", "React", "Django", "Flask", "Tailwind", "JQuery", "Codex", "Cursor", "Claude Code"],
},
],
},
},
sdet: {
eyebrow: "AVAILABLE FOR REMOTE SDET AND QA AUTOMATION WORK",
role: "Senior SDET / DevOps Automation Engineer",
shortRole: "SDET / QA Automation",
summary:
"I diagnose, automate, and stabilize the systems between code and production: test automation, CI/CD, Docker and Kubernetes, Linux infrastructure, Python tooling, and observability.",
experienceLine:
"Engineering experience across Boeing, IBM, system and end-to-end testing, deployment automation, infrastructure tooling, and production-minded platform operations.",
techStack: [
"Python",
"Pytest",
"Selenium",
"Playwright",
"API Testing",
"E2E Testing",
"CI/CD",
"Jenkins",
"Docker",
"Kubernetes",
"Linux",
"Grafana",
"Prometheus",
],
capabilityOrder: [
"Test Automation & SDET",
"CI/CD & Release Flow",
"Docker & Kubernetes",
"Python & Operational Automation",
"Observability & Reliability",
"Platform Tooling & GitOps",
],
serviceOrder: [
"CI/CD quality gates and release machinery",
"Platform bring-up and GitOps operating model",
"AWS and dedicated-host Kubernetes buildouts",
"Cluster recovery, bootstrap, and outage drills",
"Operational tools for real infrastructure",
"Storage, backup, and restore operations",
],
capabilitySection: {
kicker: "Capabilities",
heading: "Where I Add Quality Value",
description:
"Test engineering, delivery automation, and release confidence across the full path from code to operating system.",
},
serviceSection: {
kicker: "Delivery confidence",
heading: "Quality Systems I Can Take From Zero to Reliable",
description:
"I build the checks, diagnostics, release gates, and automation that help teams know whether a system is actually ready to ship.",
},
workSection: {
kicker: "Projects & Experience",
heading: "Testing, Automation, and Platform Work",
description:
"Engineering work across system testing, cloud validation, delivery gates, and live platform operations.",
},
selectedWorkOrder: ["Boeing", "IBM", "Titan Lab + titan-iac", "Atlas operator tools", "Cassandra"],
engagementOrder: [
"Short-Term Remote Contract",
"Fixed-Scope Technical Rescue",
"Ongoing Engineering Support",
"Senior Remote Engineering Role",
],
contactSection: {
heading: "Have a Test, Release, or Automation Problem?",
description:
"Send the problem, technical stack, expected outcome, and timeline. I will respond with whether it is a fit, what information is needed, and the most practical next step.",
},
cassandra: {
description:
"Homegrown AI playtester with simulation flows, backend service boundaries, and useful surfaces for API, worker, regression, and result-quality testing.",
points: ["simulation flows", "API coverage", "regression surfaces", "result checks"],
},
about: {
role: "Senior SDET / DevOps Automation Engineer",
focusLine: "Test Automation · Release Quality · CI/CD",
summary: [
"Senior SDET and DevOps Automation Engineer with experience across Python automation, system and end-to-end testing, chaos testing, CI/CD pipelines, Kubernetes, Docker, Linux infrastructure, and observability.",
"I build test frameworks, API and browser automation, release gates, diagnostics, dashboards, and delivery workflows that help teams understand whether a system is ready to ship.",
"My projects and dashboards run on Atlas, the live bstein.dev platform.",
],
skillGroups: [
{
label: "Testing",
items: ["Selenium", "Pytest", "Playwright", "Jest", "SonarQube", "Postman", "API", "E2E", "System", "Chaos", "Load", "Performance", "Stress", "Contract"],
},
{
label: "Automation",
items: ["Python", "Go", "Bash", "Groovy", "SQL", "JavaScript", "TypeScript"],
},
{
label: "CI/CD & GitOps",
items: ["Jenkins", "Drone", "Flux CD", "Argo CD", "GitHub Actions", "Terraform", "Ansible"],
},
{
label: "Platform / Cloud",
items: ["AWS", "GCP", "Kubernetes", "Helm", "Docker Compose", "Harbor", "Artifactory", "IronBank", "Keycloak", "Vault"],
},
{
label: "Observability / Data",
items: ["Grafana", "Prometheus", "OpenSearch", "Zabbix", "LogDNA", "ELK", "PostgreSQL", "MySQL", "Redis", "Kafka"],
},
{
label: "Web & AI",
items: ["Vue", "React", "Django", "Flask", "Tailwind", "JQuery", "Codex", "Cursor", "Claude Code"],
},
],
},
},
developer: {
eyebrow: "AVAILABLE FOR REMOTE PRODUCT, PLATFORM, AND AI SERVICE WORK",
role: "Full-Stack Platform Engineer / Senior SDET",
shortRole: "Product / Platform Engineering",
summary:
"I build useful software on real infrastructure: Vue frontends, Python services, AI integrations, CI/CD, Kubernetes, observability, and testable delivery paths.",
experienceLine:
"Engineering experience across live product delivery, Boeing, IBM, AI services, infrastructure tooling, and production-minded platform operations.",
techStack: [
"Vue",
"Python",
"Flask",
"API Design",
"PostgreSQL",
"Redis",
"Workers",
"AI Integration",
"Docker",
"Kubernetes",
"CI/CD",
"Pytest",
"Selenium",
"Playwright",
],
capabilityOrder: [
"Python & Operational Automation",
"Docker & Kubernetes",
"Platform Tooling & GitOps",
"CI/CD & Release Flow",
"Test Automation & SDET",
"Observability & Reliability",
],
serviceOrder: [
"Operational tools for real infrastructure",
"Platform bring-up and GitOps operating model",
"CI/CD quality gates and release machinery",
"AWS and dedicated-host Kubernetes buildouts",
"Cluster recovery, bootstrap, and outage drills",
"Storage, backup, and restore operations",
],
capabilitySection: {
kicker: "Capabilities",
heading: "Where I Add Product and Platform Value",
description:
"Application engineering, AI service integration, infrastructure automation, and release quality across the full path from idea to running service.",
},
serviceSection: {
kicker: "Product-to-platform delivery",
heading: "From 0 to 100",
description:
"I can help turn a useful idea into a running service: application workflow, API boundaries, background jobs, CI/CD, Kubernetes deployment, observability, and test coverage.",
},
workSection: {
kicker: "Projects & Experience",
heading: "Product and Platform Showcase",
description:
"Inspectable repos, live services, and professional work samples that show product engineering backed by real operations.",
},
selectedWorkOrder: ["Cassandra", "Titan Lab + titan-iac", "Atlas operator tools", "IBM", "Boeing"],
engagementOrder: [
"Short-Term Remote Contract",
"Fixed-Scope Technical Rescue",
"Ongoing Engineering Support",
"Senior Remote Engineering Role",
],
contactSection: {
heading: "Have a Product, AI Service, Platform, or Automation Problem?",
description:
"Send the idea or problem, technical stack, expected outcome, and timeline. I will respond with whether it is a fit, what information is needed, and the most practical next step.",
},
cassandra: {
description:
"Homegrown AI service for Magic: The Gathering deck construction, with product workflow, AI integration, backend orchestration, content seeding, and disposable simulation jobs.",
points: ["AI integration", "product workflow", "service boundaries", "simulation workers"],
},
about: {
role: "Full-Stack Platform Engineer / Senior SDET",
focusLine: "AI Services · Vue · Python · Kubernetes",
summary: [
"Full-stack platform engineer with experience across Vue frontends, Python services, AI integration, CI/CD, Kubernetes, Docker, Linux infrastructure, observability, and testable delivery paths.",
"I build product workflows, APIs, dashboards, background jobs, deployment automation, and test surfaces that turn useful ideas into systems people can actually run.",
"My projects and dashboards run on Atlas, the live bstein.dev platform.",
],
skillGroups: [
{
label: "Product / Web",
items: ["Vue", "Quasar", "React", "Tailwind", "JavaScript", "TypeScript", "JQuery", "FusionCharts"],
},
{
label: "Backend / AI",
items: ["Python", "Django", "Flask", "API design", "AI integration", "workers", "PostgreSQL", "Redis"],
},
{
label: "Platform",
items: ["Kubernetes", "Docker Compose", "Helm", "Flux CD", "Jenkins", "Harbor", "Keycloak", "Vault"],
},
{
label: "Testing",
items: ["Pytest", "Selenium", "Playwright", "Jest", "API", "E2E", "Regression", "Contract"],
},
{
label: "Observability",
items: ["Grafana", "Prometheus", "OpenSearch", "Zabbix", "ELK", "LogDNA"],
},
{
label: "Tools",
items: ["GitHub Actions", "Terraform", "Ansible", "Go", "Bash", "Codex", "Cursor", "Claude Code"],
},
],
},
},
};
export const homepageModes = [
{ id: "sdet", label: "SDET", path: "/" },
{ id: "devops", label: "DevOps", path: "/devops" },
{ id: "developer", label: "Developer", path: "/developer" },
];
const focusAliases = {
dev: "developer",
development: "developer",
qa: "sdet",
test: "sdet",
testing: "sdet",
};
export function normalizeHomepageFocus(mode = "") {
const normalized = String(mode || "").trim().toLowerCase();
const aliased = focusAliases[normalized] || normalized;
return focusProfiles[aliased] ? aliased : "sdet";
}
export const homepageFocus = normalizeHomepageFocus(focusMode);
export function homepagePathForMode(mode = homepageFocus) {
return homepageModes.find((item) => item.id === normalizeHomepageFocus(mode))?.path || "/";
}
export function homepageAboutPathForMode(mode = homepageFocus) {
const focus = normalizeHomepageFocus(mode);
return focus === "sdet" ? "/about" : `/${focus}/about`;
}
export function homepageModeFromRoute(route) {
return normalizeHomepageFocus(route?.params?.focus || route?.meta?.homepageFocus || route?.query?.focus || homepageFocus);
}
const capabilities = [
{
icon: "TA",
title: "Test Automation & SDET",
description:
"System, end-to-end, API, browser, and release-gate testing using Python, Pytest, Selenium, Playwright, and related tooling. Includes test architecture, coverage strategy, flaky-test diagnosis, and CI integration.",
},
{
icon: "CI",
title: "CI/CD & Release Flow",
description:
"Jenkins pipelines, build and test stages, promotion workflows, GitOps delivery, artifact handling, deployment gates, and failure diagnosis.",
},
{
icon: "K8",
title: "Docker & Kubernetes",
description:
"Docker and Docker Compose troubleshooting, Kubernetes workloads, Helm deployments, Flux or Argo CD workflows, service routing, configuration, storage, and deployment debugging.",
},
{
icon: "PY",
title: "Python & Operational Automation",
description:
"Python and Bash tools that replace repetitive work, connect APIs, validate systems, manage configuration, and make operational processes more reliable.",
},
{
icon: "OB",
title: "Observability & Reliability",
description:
"Metrics, dashboards, logs, alerting, and root-cause investigation using Grafana, Prometheus, Zabbix, OpenSearch, ELK, and related systems.",
},
{
icon: "GT",
title: "Platform Tooling & GitOps",
description:
"Internal tools, infrastructure utilities, configuration-drift prevention, environment management, GitOps workflows, and production-minded platform operations.",
},
];
const services = [
{
title: "Platform bring-up and GitOps operating model",
investigation:
"Turn ad hoc services into a source-controlled platform: Kubernetes layout, Kustomize or Flux structure, environments, ingress, identity, storage, secrets, and validation workflow.",
outcome:
"A platform that can be changed through reviewable commits, reconciled by automation, and recovered without mystery manual edits.",
},
{
title: "Cluster recovery, bootstrap, and outage drills",
investigation:
"Encode startup and shutdown order, node reachability, Flux health, workload convergence, ingress checks, service checklists, critical endpoints, and stability soaks.",
outcome:
"Repeatable recovery runs with status reports and gaps converted into automation instead of tribal knowledge.",
},
{
title: "AWS and dedicated-host Kubernetes buildouts",
investigation:
"Design and stand up Kubernetes where the work actually lives: AWS VPCs, subnets, IAM, security groups, EKS or k3s on EC2, plus dedicated-host clusters with ingress, storage, identity, observability, and Terraform-backed repeatability.",
outcome:
"A documented cluster path from empty account or bare host to running services, with the foundations needed for CI/CD, GitOps, monitoring, and future handoff.",
},
{
title: "CI/CD quality gates and release machinery",
investigation:
"Build Jenkins pipelines, container/image promotion, coverage floors, lint and security gates, artifact publishing, branch-aware metrics, and failure reporting.",
outcome:
"A delivery path that tells teams what failed, blocks unsafe changes, and produces evidence for every release.",
},
{
title: "Storage, backup, and restore operations",
investigation:
"Map stateful workloads, PVCs, Longhorn volumes, policy backups, namespace restore flows, auth boundaries, and backup freshness metrics.",
outcome:
"Recoverable data paths, visible backup health, safer restore testing, and fewer surprise gaps around stateful services.",
},
{
title: "Operational tools for real infrastructure",
investigation:
"Build CLIs, web UIs, diagnostics, logs, Prometheus metrics, remote-control surfaces, and admin workflows around the parts operators actually touch.",
outcome:
"A platform that is easier to operate under pressure because the important actions and evidence are available in one place.",
},
];
function orderedBy(items, order) {
const rank = new Map(order.map((title, index) => [title, index]));
return [...items].sort((a, b) => (rank.get(a.title) ?? 99) - (rank.get(b.title) ?? 99));
}
const workDetailsByFocus = {
devops: {
titan: {
kind: "Live platform",
description:
"Public IaC for bstein.dev: k3s, Flux, CI/CD, identity, ingress, Longhorn, observability, hosted services, recovery paths, and member onboarding.",
points: [
"IaC repo",
"Kubernetes",
"GitOps",
"CI/CD",
"identity",
"registry",
"storage",
"observability",
"backups",
"recovery",
],
},
operators: {
kind: "Public tooling",
description:
"Public tools for real Atlas operations: remote control, job reporting, backups, recovery image creation, sentinels, and UPS orchestration.",
points: ["remote control", "job reporting", "backup status", "recovery images", "sentinels", "UPS orchestration"],
},
ibm: {
description:
"IBM Cloud automation across infrastructure validation, GPU environments, Terraform workflows, API health, and operational monitoring.",
points: ["Terraform", "cloud validation", "RHEL/SUSE", "GPU environments", "Zabbix", "API health", "autoscaling"],
},
boeing: {
description:
"DevSecOps-adjacent automation, Flux-controlled environments, Jenkins promotion gates, Docker Compose drift protection, and infrastructure diagnosis.",
points: ["Flux envs", "Jenkins gates", "Docker Compose", "drift protection", "infra diagnosis", "Lanterna", "Python tools"],
},
},
sdet: {
titan: {
kind: "Live platform",
description:
"A running member platform with authentication, onboarding, dashboards, service boundaries, metrics, health checks, and failure modes that can be tested end to end.",
points: ["auth flows", "onboarding", "service checks", "dashboard smoke", "metrics", "failure fallback", "release gates"],
},
operators: {
kind: "Automation tooling",
description:
"Operational tools with repeatable checks, job status, failure reporting, and validation surfaces useful for system-level testing.",
points: ["state checks", "job reports", "failure diagnosis", "repeatable jobs", "validation flows", "safe actions"],
},
ibm: {
description:
"IBM Cloud test automation across system validation, GPU environments, API workflows, Go and Terraform tests, and operational health checks.",
points: ["Python E2E", "Go tests", "Terraform tests", "GPU validation", "API workflows", "data-center validation", "Zabbix"],
},
boeing: {
description:
"System and end-to-end testing, Python and Selenium automation, microservice and web UI validation, release gates, and failure diagnostics.",
points: ["Python", "Selenium", "system E2E", "microservices", "web UI", "quality gates", "test architecture"],
},
},
developer: {
titan: {
kind: "Live platform",
description:
"A productized platform surface with member accounts, service catalog, OAuth, dashboards, hosted applications, AI workloads, and delivery automation.",
points: ["Vue frontend", "member system", "service catalog", "OAuth", "AI workloads", "CI/CD", "observability"],
},
operators: {
kind: "Operator products",
description:
"Small internal products for real operations: admin workflows, job surfaces, status reporting, remote actions, and automation APIs.",
points: ["admin workflows", "job surfaces", "status reports", "remote actions", "automation APIs", "operator UX"],
},
ibm: {
description:
"IBM Cloud engineering across Python, Go, Terraform, API workflows, platform health dashboards, feature demos, and knowledge transfer.",
points: ["Python", "Go", "Terraform", "API workflows", "health dashboards", "feature demos", "knowledge transfer"],
},
boeing: {
description:
"Engineering automation around system workflows, Python tools, release visualization, environment state, and complex integration surfaces.",
points: ["Python tools", "Lanterna", "workflow visibility", "system integration", "environment state", "automation"],
},
},
};
export function homepageContentForMode(mode = homepageFocus) {
const focus = normalizeHomepageFocus(mode);
const selectedFocus = focusProfiles[focus];
const workDetails = workDetailsByFocus[focus] || workDetailsByFocus.devops;
return {
professionalName: "Brad Stein",
role: selectedFocus.role,
shortRole: selectedFocus.shortRole,
focus,
eyebrow: selectedFocus.eyebrow,
title: "Brad Stein | SDET, DevOps Automation & Platform Engineering",
description:
"Senior SDET and DevOps Automation Engineer helping teams improve test automation, CI/CD, Docker and Kubernetes reliability, Python tooling, Linux systems, and observability. Available for remote project and contract work.",
summary: selectedFocus.summary,
experienceLine: selectedFocus.experienceLine,
availability: {
visible: true,
label: "Available for remote project, contract, and engineering opportunities",
timeZone: "Remote, US-friendly time zones",
updatedAt: "2026-06-19",
},
primaryContact: {
email: "brad@bstein.dev",
subject: "Project, contract, or engineering inquiry from bstein.dev",
},
resumeUrl: homepageAboutPathForMode(focus),
resumePdfUrl: "",
linkedInUrl: "https://www.linkedin.com/in/steinbradley/",
sourceUrl: "https://scm.bstein.dev/bstein",
platformMetricsUrl: "https://metrics.bstein.dev",
techStack: selectedFocus.techStack,
credibility: [
"Professional experience: Boeing",
"Professional experience: IBM",
"Python automation",
"Kubernetes and CI/CD",
"Remote availability",
],
capabilitySection: selectedFocus.capabilitySection,
capabilities: orderedBy(capabilities, selectedFocus.capabilityOrder),
serviceSection: selectedFocus.serviceSection,
services: orderedBy(services, selectedFocus.serviceOrder),
workSection: selectedFocus.workSection,
contactSection: selectedFocus.contactSection,
about: selectedFocus.about,
selectedWork: [
{
icon: "IaC",
kind: workDetails.titan.kind,
title: "Titan Lab + titan-iac",
description: workDetails.titan.description,
points: workDetails.titan.points,
links: [
{
label: "IaC repo",
href: "https://scm.bstein.dev/bstein/titan-iac",
},
],
},
{
icon: "OPS",
kind: workDetails.operators.kind,
title: "Atlas operator tools",
description: workDetails.operators.description,
points: workDetails.operators.points,
links: [
{ label: "lesavka", href: "https://scm.bstein.dev/bstein/lesavka" },
{ label: "ariadne", href: "https://scm.bstein.dev/bstein/ariadne" },
{ label: "soteria", href: "https://scm.bstein.dev/bstein/soteria" },
{ label: "metis", href: "https://scm.bstein.dev/bstein/metis" },
{ label: "ananke", href: "https://scm.bstein.dev/bstein/ananke" },
],
},
{
icon: "IBM",
kind: "Professional experience",
title: "IBM",
description: workDetails.ibm.description,
points: workDetails.ibm.points,
},
{
icon: "BA",
kind: "Professional experience",
title: "Boeing",
description: workDetails.boeing.description,
points: workDetails.boeing.points,
},
{
icon: "AI",
kind: "Community AI service",
title: "Cassandra",
description: selectedFocus.cassandra.description,
points: selectedFocus.cassandra.points,
weight: "minor",
links: [
{
label: "Live app",
href: "https://cassandra.bstein.dev/",
},
{
label: "Content seed",
href: "https://scm.bstein.dev/bstein/cassandra-content",
},
],
},
].sort((a, b) => {
const rank = new Map(selectedFocus.selectedWorkOrder.map((title, index) => [title, index]));
return (rank.get(a.title) ?? 99) - (rank.get(b.title) ?? 99);
}),
engagementTypes: [
{
title: "Fixed-Scope Technical Rescue",
duration: "Several hours to several days.",
description:
"A bounded diagnosis or repair for a failing pipeline, deployment, automation workflow, test suite, or infrastructure problem.",
},
{
title: "Short-Term Remote Contract",
duration: "Several weeks to several months.",
description:
"Focused engineering capacity for test automation, CI/CD, infrastructure tooling, platform quality, release flow, or technical backlog reduction.",
},
{
title: "Ongoing Engineering Support",
duration: "Recurring support based on the operating need.",
description:
"Recurring help with automation, quality engineering, operational tooling, release systems, and platform reliability.",
},
{
title: "Senior Remote Engineering Role",
duration: "Full-time remote roles where the fit is strong.",
description:
focus === "devops"
? "I am open to well-aligned remote DevOps Automation, platform engineering, CI/CD, infrastructure automation, Kubernetes, Linux, or systems reliability roles. SDET and test automation depth comes with it."
: focus === "developer"
? "I am open to well-aligned remote developer, full-stack, platform product, AI service, Python, Vue, automation, or internal tooling roles. SDET and DevOps depth comes with it."
: "I am open to well-aligned remote SDET, QA Automation, systems testing, release quality, CI/CD, or DevOps Automation roles. Platform engineering depth comes with it.",
},
].sort((a, b) => {
const rank = new Map(selectedFocus.engagementOrder.map((title, index) => [title, index]));
return (rank.get(a.title) ?? 99) - (rank.get(b.title) ?? 99);
}),
processSteps: [
{
title: "Share the Problem",
description:
"Send a concise description, relevant stack, desired outcome, timeline, and any safe logs, screenshots, or links.",
},
{
title: "Confirm Fit and Scope",
description:
"Review the problem, identify missing information, and determine whether it fits a fixed-scope diagnostic, project, or contract engagement.",
},
{
title: "Diagnose and Implement",
description:
"Work proceeds through a written scope, bounded investigation, implementation, testing, and documented findings.",
},
{
title: "Handoff",
description:
"Receive the fix or deliverable, root-cause notes, operational guidance, and a concise handoff appropriate to the project.",
},
],
memberAccessCopy: {
heading: "Titan Lab Member Access",
description:
"Titan Lab member accounts are for family, friends, and the lucky few with an invite: register for access or sign in here.",
authenticated:
"Use the existing member tools for dashboards, account management, onboarding, and approved service access.",
restricted:
"If access is pending or restricted, use the existing request-access status and onboarding flow. No platform permissions are bypassed here.",
},
memberServices: [
{
name: "Keycloak",
icon: "🔐",
href: "https://sso.bstein.dev",
description: "Use one account to sign in across bstein.dev.",
},
{
name: "Nextcloud",
icon: "☁️",
href: "https://cloud.bstein.dev",
description: "Keep files, photos, office docs, and personal cloud data in sync.",
},
{
name: "Mailu",
icon: "✉️",
href: "https://mail.bstein.dev",
description: "Use your bstein.dev mailbox and webmail.",
},
{
name: "Element",
icon: "💬",
href: "https://live.bstein.dev",
description: "Chat in private rooms and join voice or video calls.",
},
{
name: "Vaultwarden",
icon: "🔑",
href: "https://vault.bstein.dev",
description: "Store passwords, secure notes, and shared secrets privately.",
},
{
name: "Outline",
icon: "📝",
href: "https://notes.bstein.dev",
description: "Read and write shared notes, guides, and docs.",
},
{
name: "Planka",
icon: "🧭",
href: "https://tasks.bstein.dev",
description: "Track shared projects and personal task boards.",
},
{
name: "Jellyfin",
icon: "🎬",
href: "https://stream.bstein.dev",
description: "Stream the family media library from your devices.",
},
{
name: "Pegasus",
icon: "📤",
href: "https://pegasus.bstein.dev",
description: "Upload media into the shared streaming library.",
},
{
name: "Wger",
icon: "🏋️",
href: "https://health.bstein.dev",
description: "Track workouts, routines, and nutrition.",
},
{
name: "Actual Budget",
icon: "💸",
href: "https://budget.bstein.dev",
description: "Plan budgets with private, local-first finance tracking.",
},
{
name: "Firefly III",
icon: "💵",
href: "https://money.bstein.dev",
description: "Review accounts, spending, and personal finance history.",
},
{
name: "Gitea",
icon: "🍵",
href: "https://scm.bstein.dev",
description: "Host Git repos and collaborate on code projects.",
},
{
name: "Jenkins",
icon: "🏗️",
href: "https://ci.bstein.dev",
description: "Run builds and automation for lab projects.",
},
{
name: "Harbor",
icon: "⚓",
href: "https://registry.bstein.dev",
description: "Publish and pull container images for projects.",
},
{
name: "Grafana",
icon: "📈",
href: "https://metrics.bstein.dev",
description: "Check dashboards for lab and service health.",
},
{
name: "AI Chat",
icon: "🤖",
href: "https://bstein.dev/ai/chat",
description: "Ask the Titan Lab AI assistant for help.",
},
{
name: "Cassandra",
icon: "🃏",
href: "https://cassandra.bstein.dev/",
description: "Test Magic: The Gathering deck ideas with AI playtesting.",
},
{
name: "Monero",
icon: "🪙",
href: "https://bstein.dev/monero",
description: "Use the private RPC endpoint through the Monero guide.",
},
],
};
}
export const homepageContent = homepageContentForMode(homepageFocus);
export function contactMailto(content = homepageContent) {
const email = content.primaryContact.email;
const subject = encodeURIComponent(content.primaryContact.subject);
return `mailto:${email}?subject=${subject}`;
}