Skip to content

Commit 81cf967

Browse files
taearlsclaude
andauthored
docs: update ROADMAP with current priorities (Dec 13, 2025) (#81)
## Summary Updates ROADMAP.md to reflect the current state of open GitHub issues, including the newly created issue #80 for Flipt GitOps feature flag integration. ## Changes ### New Issue Added - **#80** - Integrate Flipt for GitOps feature flags with build-time tree shaking (🟡 High Priority) ### Sections Updated - **Executive Summary** - Updated issue count (7 → 8) and current focus - **Open Issues Summary** - Added #80 to High Priority section - **Phase Overview** - Created new Phase 8 (Advanced Feature Flag Architecture), renumbered Research to Phase 9 - **Current Sprint** - Updated "Next Up" with #80 as primary target - **Critical Path** - Added Flipt implementation phases visualization - **Issue Status Summary** - Updated counts (8 total, 1 high priority) - **Effort Distribution** - Added #80 to Large effort category - **Changelog** - Comprehensive entry for #80 creation ### Priority Breakdown (8 Open Issues) | Priority | Count | Issues | |----------|-------|--------| | 🔴 Critical | 0 | - | | 🟡 High | 1 | #80 | | 🟢 Medium | 0 | - | | 🔵 Low | 7 | #10, #13, #15, #33, #34, #64, #65 | ### Key Highlights for #80 **Flipt GitOps Integration Benefits:** - GitOps workflow with flags tracked in Git - CLI-native flag management (no Cloudflare Dashboard needed) - Build-time tree shaking eliminates disabled feature code from bundles - Maintains backward compatibility with existing `FeatureFlagWrapper` API **Implementation Phases:** 1. Flipt setup (server + CLI + config) - 2-3h 2. Build-time integration (Vite plugin) - 2-3h 3. Runtime integration (browser SDK) - 2-3h 4. Migration from Cloudflare Worker - 1-2h ## Test Plan - [x] Verify all open issues accounted for (8 total) - [x] Confirm priority order reflects current project state - [x] Check changelog entry added with correct date - [x] Validate critical path visualization is accurate - [x] Ensure markdown formatting is consistent 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent cd5f9da commit 81cf967

File tree

4 files changed

+129
-33
lines changed

4 files changed

+129
-33
lines changed

ROADMAP.md

Lines changed: 126 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
## Executive Summary
44

5-
This roadmap outlines the development plan for Tyler Earls' portfolio website, focusing on performance optimization, modern React tooling, and enhanced user experience. The project has **completed Phase 5 (React Compiler Integration)** and **Phase 6 (CI/CD setup)**, and is now working through **Phase 7 (UI/UX Enhancements)** with 7 open issues.
5+
This roadmap outlines the development plan for Tyler Earls' portfolio website, focusing on performance optimization, modern React tooling, and enhanced user experience. The project has **completed Phase 5 (React Compiler Integration)** and **Phase 6 (CI/CD setup)**, and is now working through **Phase 7 (UI/UX Enhancements)** with 8 open issues.
66

7-
**Current Focus**: Contact form (#14) complete! Feature flag infrastructure (#72) and performance optimization sprint done with #61, #62, #63, #11, and #27. Phase 7 core features complete!
7+
**Current Focus**: Phase 7 core features complete! New issue #80 (Flipt GitOps feature flags with build-time tree shaking) adds exciting capabilities for feature flag management and bundle optimization.
88

99
---
1010

@@ -21,13 +21,19 @@ This roadmap outlines the development plan for Tyler Earls' portfolio website, f
2121

2222
## Open Issues Summary
2323

24-
### Priority Breakdown (7 Total - 7 Completed)
24+
### Priority Breakdown (8 Open Issues)
2525

2626
#### 🔴 Critical Priority (0 issues)
2727

2828
**#61** - Fix Active Navigation Link Contrast (WCAG AA Failure) - **COMPLETED Nov 16, 2025**
2929

30-
#### 🟡 High Priority (0 issues)
30+
#### 🟡 High Priority (1 issue)
31+
32+
- **#80** - Integrate Flipt for GitOps feature flags with build-time tree shaking - _~2-3 weeks_
33+
- **NEW** - Created Dec 13, 2025
34+
- Enables CLI-based flag management without Cloudflare Dashboard
35+
- Build-time tree shaking eliminates disabled feature code from bundles
36+
- GitOps workflow with flag configuration tracked in Git
3137

3238
**Previously Completed:**
3339

@@ -135,7 +141,24 @@ _Successfully migrated to TailwindCSS v4 with modern config_
135141
- #15: Enhanced project filtering/search
136142
- #13: Updated project descriptions
137143

138-
### Phase 8: Research & Experimentation 🔬 (Ongoing)
144+
### Phase 8: Advanced Feature Flag Architecture 🚀 (Planned - Q1 2026)
145+
146+
**Goal**: Upgrade feature flag system to Flipt with GitOps workflow and build-time tree shaking.
147+
148+
**Timeline**: 2-3 weeks
149+
150+
**Key Benefits**:
151+
152+
- GitOps workflow - flags managed via Git commits and CLI
153+
- Build-time tree shaking - disabled features excluded from bundles
154+
- Reduced bundle size for disabled features
155+
- CLI-native flag management without Cloudflare Dashboard
156+
157+
**Tasks**:
158+
159+
- #80: Integrate Flipt for GitOps feature flags with build-time tree shaking
160+
161+
### Phase 9: Research & Experimentation 🔬 (Ongoing)
139162

140163
**Goal**: Evaluate new tools and workflows.
141164

@@ -271,19 +294,24 @@ _Successfully migrated to TailwindCSS v4 with modern config_
271294

272295
**Next Up**:
273296

274-
1. 🎯 **#72** - Implement Feature Flag Infrastructure with Cloudflare Workers + KV
275-
- Effort: ~8-12 hours
276-
- Impact: Runtime feature toggling without redeployment
277-
- Phase: 7 (UI/UX Enhancements)
297+
1. 🎯 **#80** - Integrate Flipt for GitOps Feature Flags with Build-time Tree Shaking
298+
- Effort: ~2-3 weeks
299+
- Impact: GitOps workflow, CLI flag management, bundle size reduction
300+
- Phase: 8 (Advanced Feature Flag Architecture)
278301
- Status: Ready to start
279-
- Blocks: #14
280-
281-
2. 🎯 **#14** - Add Working Email Contact Form
282-
- Effort: ~1-2 days
283-
- Impact: User engagement
284-
- Phase: 7 (UI/UX Enhancements)
285-
- Status: Blocked by #72
286-
- Requires: Feature flag infrastructure
302+
- **NEW** - Created Dec 13, 2025
303+
- Key features:
304+
- Flipt server setup (self-hosted or cloud)
305+
- Vite plugin for build-time flag resolution
306+
- Tree shaking of disabled feature code
307+
- Migration from current Cloudflare Worker approach
308+
309+
2. 🔵 **Low Priority Features** (As time permits)
310+
- #10: Add Resume Page (~4-6 hours)
311+
- #13: Update Web Projects - Descriptions (~1-2 hours)
312+
- #15: Update Web Projects - Tags and Search (~1-2 days)
313+
- #64: WCAG AAA Contrast Enhancement (~2-4 hours)
314+
- #65: Font Size Readability (~1-2 hours)
287315

288316
---
289317

@@ -319,14 +347,23 @@ Phase 7: Performance & UX ✅ CORE COMPLETE
319347
├── ✅ #72 Feature Flags (8-12h) - COMPLETED - Runtime toggling infrastructure
320348
└── ✅ #14 Contact Form (1-2 days) - COMPLETED - Postmark + Turnstile + spam protection
321349
322-
Phase 8: Research (Anytime)
350+
Phase 8: Advanced Feature Flag Architecture 🎯 NEXT
351+
└── #80 Flipt GitOps Integration (2-3 weeks)
352+
├── Phase 1: Flipt setup (2-3h)
353+
├── Phase 2: Build-time integration (2-3h)
354+
├── Phase 3: Runtime integration (2-3h)
355+
└── Phase 4: Migration from Cloudflare Worker (1-2h)
356+
357+
Phase 9: Research (Anytime)
323358
├── #33 Graphite spike (1-2h)
324359
└── #34 CodeRabbit spike (1-2h)
325360
326361
Phase 7: Low Priority (As time permits)
327362
├── #10 Resume page (4-6h)
328363
├── #13 Project descriptions (1-2h)
329-
└── #15 Project filtering (1-2 days)
364+
├── #15 Project filtering (1-2 days)
365+
├── #64 WCAG AAA contrast (2-4h)
366+
└── #65 Font size readability (1-2h)
330367
```
331368

332369
### Implementation Strategy
@@ -390,30 +427,30 @@ _None - All prerequisites for #43 are complete. Ready to implement._
390427
| Priority | Open | In Progress | Closed (This Sprint) | Total Open |
391428
| ----------- | ----- | ----------- | -------------------- | ---------- |
392429
| 🔴 Critical | 0 | 0 | 1 | 0 |
393-
| 🟡 High | 0 | 0 | 10 | 0 |
430+
| 🟡 High | 1 | 0 | 10 | 1 |
394431
| 🟢 Medium | 0 | 0 | 5 | 0 |
395432
| 🔵 Low | 7 | 0 | 0 | 7 |
396-
| **TOTAL** | **7** | **0** | **16** | **7** |
433+
| **TOTAL** | **8** | **0** | **16** | **8** |
397434

398435
### Issues by Category
399436

400437
**React Compiler** (0 open, 5 closed): Closed: #38 (epic), #39, #40, #41, #42, #43, #44
401438
**Bugs** (0 open, 1 closed): Closed: #51 (navigation header overflow)
402-
**Infrastructure** (0 open, 1 closed): Closed: #72 (feature flags)
439+
**Infrastructure** (1 open, 1 closed): Open: #80 (Flipt GitOps feature flags) | Closed: #72 (Cloudflare feature flags)
403440
**CI/CD** (0 open, 2 closed): Closed: #18 (GitHub Actions pipeline), #72 (feature flags)
404441
**Accessibility** (2 open, 3 closed): Open: #64, #65 | Closed: #61 (navigation contrast), #62 (touch targets), #63 (CLS mobile)
405442
**UI/UX** (3 open, 6 closed): Open: #10, #13, #15 | Closed: #58 (left-align text), #28 (React 19 Meta), #11 (SVG preload), #27 (lazy routes), #72 (feature flags), #14 (contact form)
406443
**Research** (2 open): #33, #34
407444

408445
### Effort Distribution (Open Issues Only)
409446

410-
| Effort Level | Count | Issues |
411-
| ------------- | ----- | ------------------ |
412-
| Small (< 2h) | 4 | #13, #33, #34, #65 |
413-
| Medium (2-8h) | 2 | #64, #10 |
414-
| Large (> 8h) | 1 | #15 (1-2 days) |
447+
| Effort Level | Count | Issues |
448+
| ------------- | ----- | ------------------------------- |
449+
| Small (< 2h) | 4 | #13, #33, #34, #65 |
450+
| Medium (2-8h) | 2 | #64, #10 |
451+
| Large (> 8h) | 2 | #15 (1-2 days), #80 (2-3 weeks) |
415452

416-
**Note**: All medium and high priority issues complete. Only low priority and enhancements remain.
453+
**Note**: New high-priority issue #80 (Flipt GitOps integration) added. Low priority and accessibility enhancements remain from Phase 7.
417454

418455
---
419456

@@ -478,6 +515,66 @@ _None - All prerequisites for #43 are complete. Ready to implement._
478515

479516
## Changelog
480517

518+
### 2025-12-13 - Issue #80 Created: Flipt GitOps Feature Flags with Build-time Tree Shaking
519+
520+
- **Created**: #80 - Integrate Flipt for GitOps feature flags with build-time tree shaking
521+
- **Priority**: 🟡 HIGH
522+
- **Status**: Open, ready to implement
523+
- **Effort**: ~2-3 weeks (phased implementation)
524+
- **Impact**: GitOps workflow, CLI flag management, bundle size optimization
525+
526+
**Why This Issue Matters**:
527+
528+
The current Cloudflare Worker + KV feature flag system works well for runtime toggling, but has limitations:
529+
530+
- Flag management requires Cloudflare Dashboard or manual wrangler CLI commands
531+
- No GitOps workflow (flags not tracked in Git)
532+
- Runtime-only evaluation means disabled feature code is still bundled
533+
534+
**Flipt Integration Benefits**:
535+
536+
1. **GitOps Workflow**: Feature flag configuration stored in Git (e.g., `flipt.yaml`)
537+
- Flag changes tracked in version control
538+
- Pull request review for flag changes
539+
- Audit trail via Git history
540+
541+
2. **CLI-Native Management**: Simple commands like `flipt flag enable contactForm`
542+
- No more manual Cloudflare Dashboard navigation
543+
- Scriptable flag toggles for CI/CD
544+
545+
3. **Build-time Tree Shaking**: The game-changer!
546+
- Flags resolved at build time via Vite plugin
547+
- Disabled feature code completely eliminated from bundles
548+
- `import.meta.env.FEATURE_*` pattern enables Rollup dead-code elimination
549+
- Significant bundle size reduction for disabled features
550+
551+
**Technical Architecture**:
552+
553+
```
554+
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
555+
│ flipt.yaml │────▶│ Build Process │────▶│ Static Flags │
556+
│ (Git-tracked) │ │ (Vite plugin) │ │ (tree-shaken) │
557+
└─────────────────┘ └──────────────────┘ └─────────────────┘
558+
```
559+
560+
**Implementation Phases**:
561+
562+
- Phase 1: Flipt setup (server + CLI + config file) - 2-3h
563+
- Phase 2: Build-time integration (Vite plugin, `import.meta.env`) - 2-3h
564+
- Phase 3: Runtime integration (Flipt browser SDK) - 2-3h
565+
- Phase 4: Migration from Cloudflare Worker approach - 1-2h
566+
567+
**Roadmap Impact**:
568+
569+
- Created new Phase 8: Advanced Feature Flag Architecture
570+
- Adds significant infrastructure capability for feature management
571+
- Opens path for A/B testing, gradual rollouts in future
572+
- Maintains backward compatibility with `FeatureFlagWrapper` API
573+
574+
**Next Actions**: Begin implementation when ready with `/implement-issue 80`
575+
576+
---
577+
481578
### 2025-12-13 - Issue #77 Completed: Update React to Latest Version (19.2.3)
482579

483580
- **Completed**: #77 - Update React to latest version (19.2.3)
@@ -1266,6 +1363,6 @@ All high-priority accessibility issues (#61, #62, #63) have been resolved. Mediu
12661363

12671364
---
12681365

1269-
**Last Updated**: December 13, 2025 (Issue #14 Complete - Contact Form with Postmark + Turnstile)
1366+
**Last Updated**: December 13, 2025 (Issue #80 Created - Flipt GitOps Feature Flags with Build-time Tree Shaking)
12701367
**Maintained By**: Tyler Earls
12711368
**Generated With**: Claude Code

packages/feature-flags/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"private": true,
55
"main": "src/index.ts",
66
"scripts": {
7-
"dev": "wrangler dev",
8-
"deploy": "wrangler deploy",
7+
"dev": "wrangler dev --config ../../wrangler.toml",
8+
"deploy": "wrangler deploy --config ../../wrangler.toml",
99
"typecheck": "tsc --noEmit"
1010
},
1111
"dependencies": {

tests/integration/support/support.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ Cypress.Commands.overwrite(
119119
...options,
120120
onBeforeLoad: (win) => {
121121
// Store callback for reset functionality
122-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
123122
let lastCallback: ((token: string) => void) | undefined;
124123

125124
// Inject the Turnstile mock before page scripts run
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name = "portfolio-feature-flags"
2-
main = "src/index.ts"
2+
main = "packages/feature-flags/src/index.ts"
33
compatibility_date = "2024-11-28"
44

55
[[kv_namespaces]]

0 commit comments

Comments
 (0)