Files
davidaragon-portfolio/IMPLEMENTATION-ROADMAP.md
T

9.1 KiB

Personal Portfolio Implementation Roadmap

Project: davidaragon.impresion3d.pro
Goal: Professional portfolio + dev blog for indie builder
Timeline: 4 weeks (3 weeks implementation + 1 week content/polish)
Methodology: Atomic task decomposition → Parallel implementation → Sequential deployment


Task Dependency Graph

Foundation (Week 1)
====================
t_28db7e16: [#29-impl-1] Initialize Astro + Tailwind + TypeScript
    └── t_0078b4b3: [#29-impl-2] Content collections (blog + projects schemas)
        ├── t_0ec36bde: [#29-impl-3] Base layout (Header, Footer, Nav)
        │   ├── t_6e85e022: [#29-impl-4] About page ║
        │   ├── t_7aa42f76: [#29-impl-5] Homepage (hero + featured) ║
        │   ├── t_b7d940a1: [#29-impl-6] Blog pages + RSS ║
        │   └── t_26ed02cc: [#29-impl-7] Projects pages ║
        └── (All above) ──→ t_66684b8f: [#29-impl-8] Docker deployment

Content & Polish (Week 3-4)
============================
t_c4e23cc8: [#29-impl-9] Blog content (5 posts) ║
t_637198bd: [#29-impl-10] Project case studies (3 projects) ║
t_8f00b91a: [#29-impl-11] SEO optimization (structured data, OG, analytics)

Legend:
  ║ = Can run in parallel
  └── = Must wait for parent

Phase Breakdown

Phase 1: Foundation (Week 1)

Priority: P1 (all tasks blocking)

Task ID Title Assignee Est. Time Blocks
t_28db7e16 Initialize Astro + Tailwind wh-implementer 2-3h ALL
t_0078b4b3 Content collections wh-implementer 3-4h Layouts + Pages
t_0ec36bde Base layout wh-implementer 3-4h All pages
t_6e85e022 About page wh-implementer 2-3h -
t_7aa42f76 Homepage hero wh-implementer 3-4h -

Parallelization opportunity: After #29-impl-3 completes, tasks #29-impl-4, #29-impl-5, #29-impl-6, #29-impl-7 can ALL run simultaneously (4 parallel tracks).


Phase 2: Pages & Features (Week 2)

Priority: P1-P2

Task ID Title Assignee Est. Time Parallel?
t_b7d940a1 Blog pages + RSS wh-implementer 4-5h YES ║
t_26ed02cc Projects pages wh-implementer 3-4h YES ║

Can run in parallel with #29-impl-4 and #29-impl-5.


Phase 3: Deployment (Week 2-3)

Priority: P1 (blocks launch)

Task ID Title Assignee Est. Time Depends on
t_66684b8f Docker + Nginx + Portainer wh-implementer 4-5h ALL pages (impl-1 through impl-7)

Must wait for all page implementation tasks to complete (can't deploy empty site).


Phase 4: Content Creation (Week 3-4)

Priority: P2 (nice-to-have for MVP, critical for launch)

Task ID Title Assignee Est. Time Parallel?
t_c4e23cc8 Blog posts (5 articles) wh-writer 6-8h YES ║
t_637198bd Project case studies (3 projects) wh-writer 4-5h YES ║

Can run in parallel (different content types, no dependencies).


Phase 5: SEO & Polish (Week 4)

Priority: P3 (launch enhancement)

Task ID Title Assignee Est. Time Depends on
t_8f00b91a SEO optimization wh-implementer 2-3h ALL pages

Critical Path Analysis

Longest sequential path (critical path):

impl-1 (3h) → impl-2 (4h) → impl-3 (4h) → impl-8 (5h) = 16 hours

With parallelization:

Week 1: impl-1 (3h) → impl-2 (4h) → impl-3 (4h) = 11h
Week 2: impl-4, impl-5, impl-6, impl-7 in parallel (max 5h)
Week 2: impl-8 (5h)
Week 3-4: impl-9, impl-10 in parallel (max 8h)
Week 4: impl-11 (3h)

Total calendar time: 3-4 weeks
Total sequential hours: 16h (foundation) + 5h (pages) + 5h (deploy) + 8h (content) + 3h (SEO) = 37 hours
With parallelization: ~27 hours of actual work

Assignee Profiles

Profile Responsibilities Skills Tasks
wh-implementer Code implementation Astro, React, Docker, FastAPI impl-1 through impl-8, impl-11
wh-writer Content creation Spanish writing, technical writing, SEO impl-9, impl-10
wh-leader Orchestration Planning, Gitea issues, monitoring This task (t_22a3d7db)

Kanban Board States

All tasks created in todo state.

Transition rules:

  • todoready: When all parent tasks in done
  • readyrunning: Dispatcher assigns to available worker
  • runningdone: Worker calls kanban_complete(...)
  • runningblocked: Worker needs human input

Acceptance Gates

Gate 1: Foundation Complete (Week 1)

  • Tasks impl-1, impl-2, impl-3 in done
  • npm run dev starts without errors
  • Tailwind CSS working (test with colored elements)
  • Content collections validated (no schema errors)
  • Header, Footer, Navigation visible

Gate 2: Pages Complete (Week 2)

  • Tasks impl-4, impl-5, impl-6, impl-7 in done
  • All pages accessible (/, /about, /blog, /projects)
  • No TypeScript errors
  • No broken links
  • Responsive design works (mobile, tablet, desktop)

Gate 3: Deployment Ready (Week 2-3)

  • Task impl-8 in done
  • Docker image builds successfully
  • Final image size <50MB
  • Health check passes
  • Site accessible at http://localhost:3010
  • Nginx serves static files with gzip compression

Gate 4: Content Published (Week 3-4)

  • Tasks impl-9, impl-10 in done
  • At least 3 blog posts published
  • At least 2 project case studies published
  • All content validates against schemas
  • No typos or grammar errors

Gate 5: SEO Optimized (Week 4)

  • Task impl-11 in done
  • Sitemap generated and accessible
  • robots.txt present
  • Structured data validates (Google Rich Results Test)
  • OG preview looks correct (opengraph.xyz)
  • Analytics configured (if using)

Gate 6: Production Launch

  • All 11 implementation tasks in done
  • All 6 acceptance gates passed
  • Portainer stack deployed to 192.168.1.30:3010
  • HTTPS working via Traefik (davidaragon.impresion3d.pro)
  • DNS pointing to correct server
  • Health check passing
  • Site accessible publicly

Gitea Issue Mapping

All tasks map to Gitea Issue #29: "Build personal portfolio with blog and projects showcase"

Task naming convention: [#29-impl-N] Description

This allows tracking all work back to the single strategic Gitea issue while maintaining atomic Kanban tasks for execution.


Known Blockers & Mitigations

Blocker 1: Git Push Authentication

Status: BLOCKED
Impact: Cannot push commits to GitLab
Mitigation:

  • Commits created locally (all changes staged)
  • Push manually after SSH key configured
  • Or: use personal access token with HTTPS

Resolution needed: SSH key or GitLab personal access token

Blocker 2: Real Images (OG, Favicon, Avatar)

Status: LOW PRIORITY
Impact: Site uses placeholders for images
Mitigation:

  • Create placeholders in implementation tasks
  • Replace with real images before launch
  • Can launch with placeholders if needed (not blocking)

Resolution: Create professional OG image (1200x630), favicon set, avatar photo

Blocker 3: Analytics Configuration

Status: OPTIONAL
Impact: No traffic analytics initially
Mitigation:

  • Launch without analytics (privacy-first)
  • Or: set up self-hosted Plausible later
  • Not blocking for MVP

Resolution: Optional - configure Plausible after launch


Success Metrics

Development Metrics

  • 11 tasks completed in 4 weeks
  • Zero P1 bugs at launch
  • <50MB Docker image size
  • >80% test coverage (if tests added)
  • 100% TypeScript strict compliance

Product Metrics (post-launch)

  • Lighthouse Score: >90 (all categories)
  • Core Web Vitals: Pass (LCP <2.5s, FID <100ms, CLS <0.1)
  • Uptime: >99% (monitor with UptimeRobot)
  • Page load: <2s (first contentful paint)

Content Metrics (Month 1)

  • 3-5 blog posts published
  • 2-3 project case studies published
  • RSS subscribers: goal 50+
  • Organic traffic: goal 100+ visitors/month

Post-Launch Roadmap

Month 1-2: Content Cadence

  • Publish 2 blog posts per week
  • Update project case studies with metrics
  • Add 1-2 more projects (Garage61 API, etc.)

Month 3-4: Features

  • Newsletter signup backend (ConvertKit/Mailchimp)
  • Comments system (Giscus/Utterances)
  • Search functionality
  • Dark/light mode toggle

Month 5-6: Growth

  • Guest posts on Spanish indie blogs
  • X (Twitter) thread automation from blog posts
  • SEO optimization (internal linking, backlinks)
  • Analytics dashboard (public metrics page)

Contact & Support

Project Owner: David Aragón (caleidos)
Primary Agent: wh-leader (orchestrator)
Repository: https://gitlab.impresion3d.pro/root/davidaragon-portfolio
Deployment: 192.168.1.30:3010 → davidaragon.impresion3d.pro

Blockers? Comment on Kanban task or create Gitea issue.


Generated: 2026-05-08
Last Updated: 2026-05-08
Status: Ready for execution