Implementation Plan
Eight tasks from scaffolding to deploy, each dispatched to a fresh AI subagent with curated context.
nickcarter.ai Implementation Plan
> For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.
Goal: Ship a professional hiring interface at nickcarter.ai with artifact portfolio and professional summary.
Architecture: Next.js 15 static export with App Router, Tailwind CSS 4, deployed to Cloudflare Pages. Two pages: landing (/) and portfolio (/portfolio). Content lives in component files — no CMS, no markdown pipeline. Design quality is critical — use frontend-design skill.
Tech Stack: Next.js 16 (matching lorehaven-web), React 19, TypeScript, Tailwind CSS 4, Cloudflare Pages
Spec: docs/superpowers/specs/2026-03-27-nickcarter-ai-design.md
Reference project: ../lorehaven-web/ — same stack, same deployment target, same config patterns.
File Structure
nickcarter-web/
├── app/
│ ├── layout.tsx # Root layout: fonts, metadata, nav, footer
│ ├── page.tsx # Landing page: hero + summary + artifact highlights
│ ├── portfolio/
│ │ └── page.tsx # Portfolio page: full artifact details + external links
│ ├── globals.css # Tailwind imports + custom styles
│ └── components/
│ ├── Nav.tsx # Top navigation (simple: name + portfolio link)
│ ├── Footer.tsx # Footer: links, contact
│ ├── Hero.tsx # Hero section: name, positioning, engagement cards
│ ├── Summary.tsx # Professional summary: 3 paragraphs
│ ├── ArtifactCard.tsx # Reusable card for landing page artifact highlights
│ ├── ArtifactDetail.tsx # Reusable expandable detail for portfolio page
│ └── SectionHeader.tsx # Reusable section header ("How I Build" / "How I Create")
├── lib/
│ └── artifacts.ts # Artifact data: titles, descriptions, skills, detail content
├── public/
│ └── favicon.ico # Favicon
├── next.config.ts # Static export config
├── postcss.config.mjs # Tailwind PostCSS plugin
├── tsconfig.json # TypeScript config
├── eslint.config.mjs # ESLint config
├── package.json # Dependencies and scripts
├── CLAUDE.md # Project context for AI assistants
└── .gitignore # Node, Next.js ignores
Task 1: Project Scaffolding
Files:
- Create:
package.json,next.config.ts,postcss.config.mjs,tsconfig.json,eslint.config.mjs,.gitignore,CLAUDE.md - Create:
app/layout.tsx,app/page.tsx,app/globals.css
- [ ] Step 1: Initialize Next.js project
Run from /Users/ncarter/gits/nickcarter-web/:
npx create-next-app@latest . --typescript --tailwind --eslint --app --no-src-dir --import-alias "@/*" --use-npm
Select defaults. This scaffolds the project matching lorehaven-web patterns.
- [ ] Step 2: Configure static export
Update next.config.ts:
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "export",
images: {
unoptimized: true,
},
};
export default nextConfig;
- [ ] Step 3: Set dev port to avoid conflicts
Update package.json scripts:
"dev": "next dev --port 3003"
(lorehaven-web uses 3002)
- [ ] Step 4: Verify it runs
npm run dev
Expected: Dev server starts on http://localhost:3003, default Next.js page renders.
- [ ] Step 5: Verify static build
npm run build
Expected: Build succeeds, out/ directory created with static files.
- [ ] Step 6: Write CLAUDE.md
Create CLAUDE.md with project context:
# nickcarter.ai
Personal professional site for Nick Carter. Hiring-manager-facing artifact portfolio.
## Stack
- Next.js 16, React 19, TypeScript, Tailwind CSS 4
- Static export (`output: "export"`) deployed to Cloudflare Pages
- Domain: nickcarter.ai
## Structure
- `/` — Landing page: hero, professional summary, artifact highlights
- `/portfolio` — Full artifact details with anchor links, external links
## Design
- Design quality is critical — the site itself is a portfolio piece
- No generic AI aesthetic. Distinctive, polished, professional.
- Mobile-first responsive design
## Commands
- `npm run dev` — dev server on port 3003
- `npm run build` — static export to `out/`
- `npm run lint` — ESLint
## Spec
See `../ai-career/docs/superpowers/specs/2026-03-27-nickcarter-ai-design.md`
- [ ] Step 7: Commit
git add -A
git commit -m "feat: scaffold Next.js project with static export config"
Task 2: Artifact Data
Files:
- Create:
lib/artifacts.ts
All artifact content in one file. Each artifact has: id (for anchor links), title, oneLiner, skills array, section ("build" or "create"), detail (the expanded story), and optional links.
- [ ] Step 1: Create artifact data file
Create lib/artifacts.ts with the full artifact data structure and content for all artifacts. Source content from:
- LoreHaven MCP:
../lorehaven-client/repo structure,../lorehaven-specs/decisions - IEC 62304:
../ai-career/resumes/RESUME_AUDIT.mdand Nick's BD accomplishments - Dexcom Platform: same resume files — 99.9% uptime, 1.7B events/day, 60 microservices, 22% cloud spend reduction
- CLAUDE.md Systems:
../ai-career/.claude/and../chapworks/.claude/for examples - Ship With Intent:
../chapworks/ShipWithIntent/specs and POV - Agentic Novel:
../ai-career/content/books/agentic/— the drafting skill, bible, style guide - Until The Day Is Over: placeholder detail, marked as "coming soon" with short description
- nickcarter.ai: omit from MVP data (post-launch artifact)
Type definition:
export interface Artifact {
id: string; // anchor link target: "lorehaven-mcp"
title: string;
oneLiner: string;
skills: string[];
section: "build" | "create";
detail: string; // the real story — multiple paragraphs, markdown-ish
links?: { label: string; url: string }[];
}
- [ ] Step 2: Populate all artifact content
Write the real expanded content for each artifact. This is the most important content on the site — it's the "View AI Context" that proves depth. Each detail section should be 2-4 paragraphs of specific, concrete content. Not resume bullet points. The real story.
Read the source files listed above to write accurate, specific content.
- [ ] Step 3: Commit
git add lib/artifacts.ts
git commit -m "feat: add artifact data with expanded detail content"
Task 3: Shared Components
Files:
- Create:
app/components/Nav.tsx,app/components/Footer.tsx,app/components/SectionHeader.tsx - Modify:
app/layout.tsx,app/globals.css
- [ ] Step 1: Clean out default styles and layout
Replace app/globals.css with Tailwind imports and any custom base styles. Remove all default Next.js styling.
Replace app/layout.tsx with root layout: HTML metadata for nickcarter.ai, font choices (use a clean sans-serif — Inter or similar via next/font), body wrapper.
- [ ] Step 2: Build Nav component
Simple top nav: "Nick Carter" on the left (links to /), "Portfolio" on the right (links to /portfolio). Clean, minimal. Mobile-responsive.
- [ ] Step 3: Build Footer component
Links to: Substack, YouTube, LinkedIn, email (nick.carter@hey.com). Copyright line. Minimal.
- [ ] Step 4: Build SectionHeader component
Reusable section divider with title and optional subtitle. Used for "How I Build with AI" and "How I Create with AI" sections on both pages.
- [ ] Step 5: Wire Nav and Footer into layout
Add Nav and Footer to app/layout.tsx so they appear on every page.
- [ ] Step 6: Verify dev server shows clean layout
npm run dev
Expected: Clean page with nav and footer, no default Next.js content.
- [ ] Step 7: Commit
git add app/
git commit -m "feat: add nav, footer, section header, clean layout"
Task 4: Landing Page — Hero and Summary
Files:
- Create:
app/components/Hero.tsx,app/components/Summary.tsx - Modify:
app/page.tsx
- [ ] Step 1: Build Hero component
Name: Nick Carter Positioning line: "Engineering leader who builds AI systems — and teaches teams to build them too"
Three engagement cards below: 1. "See What I Build" — anchor link to #artifacts section below 2. "Ask AI About Me" — grayed out, "Coming soon" label 3. "Check Fit" — grayed out, "Coming soon" label
Design should be distinctive and polished. Not a generic hero with gradient background. Think: clean, confident, professional but with personality. The site's first impression.
- [ ] Step 2: Build Summary component
Three paragraphs of professional summary. Human voice, not resume-speak. Content from the spec:
1. Who I am now — 18 years, regulated medical devices (BD, Dexcom), Director-level but hands-on with AI. 2. What I'm looking for — hands-on AI implementing Director, would rather be IC at AI-forward company than leader at one that doesn't adopt. 3. What makes me different — regulated-industry + AI intersection. Audit-ready AND fast.
- [ ] Step 3: Wire Hero and Summary into landing page
Update app/page.tsx to render Hero and Summary.
- [ ] Step 4: Verify rendering
npm run dev
Expected: Hero with name, positioning, three cards. Summary below. Clean and polished.
- [ ] Step 5: Commit
git add app/
git commit -m "feat: add hero and professional summary to landing page"
Task 5: Landing Page — Artifact Cards
Files:
- Create:
app/components/ArtifactCard.tsx - Modify:
app/page.tsx
- [ ] Step 1: Build ArtifactCard component
A card showing: title, one-liner description, skill tags (small, subtle), and a "View Details" link that points to /portfolio#artifact-id.
Should look like a portfolio piece — clean, with enough visual weight to invite clicking but not cluttered. Cards should work in a responsive grid (2-3 columns on desktop, 1 on mobile).
- [ ] Step 2: Wire artifact cards into landing page
Import artifacts from lib/artifacts.ts. Render two sections on the landing page:
- "How I Build with AI" — filter artifacts where
section === "build" - "How I Create with AI" — filter artifacts where
section === "create"
Use SectionHeader for each. Use id="artifacts" on the container for the hero scroll link.
- [ ] Step 3: Verify all cards render with correct content
npm run dev
Expected: Two sections with artifact cards. All titles, one-liners, and skill tags populated. "View Details" links point to /portfolio#id.
- [ ] Step 4: Commit
git add app/
git commit -m "feat: add artifact cards to landing page"
Task 6: Portfolio Page
Files:
- Create:
app/portfolio/page.tsx,app/components/ArtifactDetail.tsx
- [ ] Step 1: Build ArtifactDetail component
Full artifact presentation with anchor id for deep linking. Shows: title, one-liner, skill tags, full expanded detail content, and any links. The detail content is the real story — rendered as formatted text (paragraphs, not a wall of text).
- [ ] Step 2: Build portfolio page
Two sections (same as landing): "How I Build with AI" and "How I Create with AI". Each renders ArtifactDetail components for all artifacts in that section.
Below the artifacts, an External Links section:
- Ship With Intent (Substack) — link
- Ship With Intent (YouTube) — link
- LinkedIn — link (yes-nick-carter, with note about pending handle update)
- Email — nick.carter@hey.com
- [ ] Step 3: Verify portfolio page and anchor links
npm run dev
Navigate to /portfolio. Verify all artifacts render with full detail. Test anchor links from landing page cards (/portfolio#lorehaven-mcp etc.) — they should scroll to the correct artifact.
- [ ] Step 4: Commit
git add app/
git commit -m "feat: add portfolio page with full artifact details and external links"
Task 7: Design Polish
Files:
- Modify: all component files,
globals.css
This task is where the site goes from functional to distinctive. Use the frontend-design skill.
- [ ] Step 1: Apply design system
Invoke frontend-design skill to review and polish the entire site. The brief:
- Professional but with personality. Not corporate, not startup-casual.
- The site is a portfolio piece — its quality demonstrates what Nick brings to products.
- No generic AI aesthetic (dark gradients, neon accents, "futuristic" vibes).
- Clean typography. Good whitespace. Cards that invite interaction.
- Mobile-first. Must look great on phone.
- Color palette should feel confident and distinctive without being loud.
- [ ] Step 2: Verify mobile layout
Check on iPhone-width viewport (375px) and tablet (768px). All content readable, no overflow, cards stack properly.
- [ ] Step 3: Verify static build
npm run build
Expected: Clean build, no errors, out/ directory with all pages.
- [ ] Step 4: Commit
git add -A
git commit -m "feat: apply design polish — typography, colors, spacing, mobile"
Task 8: Deploy to Cloudflare Pages
Files:
- No file changes — deployment configuration
- [ ] Step 1: Push repo to GitHub
git remote add origin git@github.com:gesheftigg/nickcarter-web.git
git push -u origin main
(Adjust remote URL if the repo name or org differs.)
- [ ] Step 2: Create Cloudflare Pages project
In Cloudflare dashboard:
- Connect to GitHub repo
nickcarter-web - Build command:
npm run build - Build output directory:
out - Node version: 20 (or match what lorehaven-web uses)
- [ ] Step 3: Point domain
In Cloudflare DNS, add nickcarter.ai as a custom domain for the Pages project. Cloudflare handles SSL.
- [ ] Step 4: Verify live site
Navigate to https://nickcarter.ai. Verify:
- Landing page renders correctly
- Portfolio page renders correctly
- Anchor links from landing → portfolio work
- External links (Substack, YouTube, LinkedIn) are valid
- Mobile layout works
- HTTPS active
- [ ] Step 5: Run launch checklist from spec
Verify all items from the spec's launch checklist:
- [ ] Site deploys without errors
- [ ] All artifact cards have populated content
- [ ] All artifact detail sections have real content
- [ ] All external links valid and working
- [ ] Mobile layout correct on two breakpoints
- [ ] Lighthouse performance score above 90
- [ ]
nickcarter.airesolves correctly
- [ ] Step 6: Commit any fixes
git add -A
git commit -m "fix: post-deploy adjustments"
git push
Execution Notes
- Task 2 (artifact data) is the most time-consuming — writing the real expanded content for 7 artifacts requires reading source files across multiple repos. Budget extra time here.
- Task 7 (design polish) is where quality lives. Don't rush it. The site is an artifact.
- Tasks 1-6 can be done by subagents. Task 7 should involve Nick for design review. Task 8 requires Nick for Cloudflare dashboard access.
- Total estimated tasks for subagent execution: 6 implementation tasks + 1 design + 1 deploy = 8 tasks.