# StacksFree Product Roadmap

**Date:** 2026-07-31
**Author:** Solo Builder
**Current State:** Static Astro directory on Cloudflare Pages, 97 tools / 16 categories, 15 blog guides, 17 arena matches. No interactivity, accounts, or newsletter.

---

## The Arc: From Static Directory → Free-Tier Discovery Platform

StacksFree starts as a hand-built static directory. The roadmap transforms it into the **leading free-tier SaaS discovery platform** by solving the three trust killers of free-tier directories: **staleness**, **lack of comparison**, and **no community signal**.

- **Phase 1** makes the existing directory *trustworthy* (freshness, coverage, SEO).
- **Phase 2** makes it *useful* (comparison, filtering, calculators).
- **Phase 3** makes it *alive* (verification, community, alerts).
- **Phase 4** makes it *a platform* (accounts, monetization, API, AI).

Every phase stays within the Astro + Cloudflare free-tier stack. No paid backend services unless strictly justified.

**Effort scale used throughout:** S = <1 week, M = 1–2 weeks, L = 2–4 weeks of solo work (all phases assume one builder, ~10–15 h/wk).

---

## Phase 1 — Directory Foundation (Weeks 1–6)

**Goal:** Make the existing 97-tool directory credible, complete, and discoverable. Fix the #1 trust killer: staleness.

### Features

| Feature | Priority | Effort | Status |
|---|---|---|---|
| **Freshness Sweep System** — Monthly cron job (existing Hermes infra) checks all 97 URLs via lychee link-checker; flags dead/redirected tools; generates a review queue | P0 | M | Not started |
| **Last-Verified Field** — Add `lastVerified: YYYY-MM-DD` to every tool entry; display on detail pages | P0 | S | Not started |
| **Structured Free-Tier Limits** — Add `limits: {storage: "10GB", requests: "100k/mo", ...}` to data model for future comparison/filtering | P0 | M | Not started |
| **Missing Tools Coverage** — Target 50 additional tools in under-represented categories (AI & ML APIs: 4→10, Developer Utilities: 2→8, Maps: 2→6) | P0 | L | Not started |
| **Roadmap Page** — Public `roadmap.astro` page (this document) | P1 | S | Not started |
| **SEO Overhaul** — Per-category landing pages (`/category/web-hosting`), meta descriptions, Open Graph images, XML sitemap | P1 | M | Not started |
| **JSON-LD Structured Data** — Tool schema (SoftwareApplication, offers, category) on all detail pages | P1 | M | Not started |
| **Dead Tool Removal Protocol** — Documented process: 2 failed checks → warning badge → removal after 30 days | P1 | S | Not started |

### Tech Approach

- **Lychee** (Rust link checker) run in the existing Hermes cron job; output JSON diff → commit to repo → Cloudflare Pages rebuild.
- **Astro content collections** for tools.json to get TypeScript validation on new fields.
- **No new infrastructure.** Everything lives in the repo + Pages build.

### Success Criteria

- **Tool count:** 97 → 140+ (all 16 categories ≥ 4 tools)
- **Freshness:** 100% of tools have `lastVerified` ≤ 30 days old
- **SEO:** 50+ indexed pages (up from ~30), top-10 ranking for "free [category] tools" for 5 categories
- **Pageviews:** 2,000/mo → 8,000/mo
- **Dead tools:** 0 tools older than 60 days without verification

---

## Phase 2 — Interactive Tools v1 (Weeks 7–14)

**Goal:** Turn static data into interactive decision tools. Comparison is the killer feature.

### Features

| Feature | Priority | Effort | Status |
|---|---|---|---|
| **Side-by-Side Comparison** — Select 2–4 tools → table comparing freeTier, pros/cons, dimensions scores, limits | P0 | M | Not started |
| **Advanced Filters** — Category × tags × score (≥7.0) × limit types (has storage, has API, has auth) | P0 | M | Not started |
| **Free-Tier Savings Calculator** — Input your usage (requests/mo, storage GB) → shows which tools fit + estimated cost if paid | P1 | L | Not started |
| **"Build a Free Stack" Picker** — Choose one tool per category → generates a shareable stack URL (e.g. `/stack/hosting:cloudflare-pages,cms:astro,db:turso`) | P1 | M | Not started |
| **Sortable Category Tables** — Replace category filter results with sortable columns (score, lastVerified, storage limit) | P1 | S | Not started |
| **Tag-Based Discovery** — Clickable tag chips on tool pages → filtered list of similar tools | P2 | S | Not started |

### Tech Approach

- **Astro Islands with Preact** (lighter than React) for all interactive components — comparison table, filters, calculator.
- **URL state** via `URLSearchParams` (no router needed) — shareable filters.
- **Client-side only** — all data in tools.json, no API calls. Zero backend cost.
- **Stack picker** encodes selections in URL hash → server-side renders a static OG image via **satori** (the engine behind `@vercel/og`) on Cloudflare Workers (free tier).

### Success Criteria

- **Engagement:** Average session duration 1:30 → 3:00 (comparison pages)
- **Comparison usage:** 30% of visitors use the comparison tool
- **Stack shares:** 200+ shared stacks (tracked via URL hits)
- **Bounce rate:** 55% → 40%

---

## Phase 3 — Data & Community (Weeks 15–26)

**Goal:** Make StacksFree the *authoritative* source by adding verification signals, change alerts, and community input.

### Features

| Feature | Priority | Effort | Status |
|---|---|---|---|
| **Verification Badges** — "✓ Free tier verified 2026-08-15" badge on tool cards + detail pages; green/yellow/red status | P0 | M | Not started |
| **Free-Tier Change Changelog** — Public log of tier changes ("Supabase reduced free storage 500MB→100MB on 2026-07-01") | P0 | M | Not started |
| **Community Reviews** — Lightweight upvote/downvote + 1-line comment per tool; stored in Cloudflare KV | P1 | M | Not started |
| **Community Suggestions** — "Suggest a tool" form → creates GitHub issue via API (no backend needed) | P1 | S | Not started |
| **Newsletter** — Weekly "Free Tier Watch" (3 tools changed, 2 new tools, 1 dead); Buttondown free tier + Cloudflare Worker for signup | P1 | M | Not started |
| **Monthly Freshness Report** — Public blog post: X tools verified, Y removed, Z changed tiers | P1 | S | Not started |
| **Upvote Rankings** — "Top 20 Free Tiers This Month" page based on community upvotes | P2 | S | Not started |

### Tech Approach

- **Cloudflare KV** (free tier, 100k reads/day) for upvotes/comments — fast, no DB setup.
- **Cloudflare Pages Functions** for API endpoints (`POST /api/vote`, `POST /api/suggest`).
- **GitHub Issues API** for suggestions — zero storage, public transparency.
- **Buttondown** (free up to 100 subs) + Worker to handle subscribe POST.
- **Hermes cron** extends to check for tier changes (diff of scraped pricing pages, manual review queue).
- **Upvote growth mechanism:** seed participation by (a) prompting on every tool page ("Was this free tier accurate? Vote"), (b) a CTA in the weekly newsletter, and (c) one "voting week" push per monthly freshness report.

### Success Criteria

- **Verification:** 100% of tools have a status badge; 90% verified within 30 days
- **Community:** 500+ total upvotes, 50+ suggestions submitted, 25 accepted
- **Newsletter:** 100 subscribers by end of Phase 3
- **Change alerts:** 10+ tier changes logged publicly
- **Domain authority:** DR 20+ (from 10)

---

## Phase 4 — Platform (Months 7–12)

**Goal:** Full platform with accounts, monetization, API, and AI-assisted discovery.

### Features

| Feature | Priority | Effort | Status |
|---|---|---|---|
| **User Accounts** — Email/password auth via Cloudflare Access or Auth.js + D1; profile with saved stacks, watchlists | P0 | L | Not started |
| **Watchlists** — Users follow tools → email alert when free tier changes (Worker checks changelog → sends via Buttondown/Resend free tier) | P0 | M | Not started |
| **Public API** — `GET /api/tools.json` (versioned), `GET /api/tools/{slug}`, `GET /api/categories`; rate-limited via Cloudflare | P0 | M | Not started |
| **Premium Listings** — Featured placement (top of category, badge) for paid tools; manual invoicing via Stripe payment link | P1 | M | Not started |
| **Affiliate Links** — `rel="sponsored"` links in tool pages (e.g. Vercel, Supabase affiliate programs); disclosed clearly | P1 | S | Not started |
| **Advanced Search** — Natural-language limit queries: "free postgres with 10GB+ storage" via Workers AI or simple keyword parser | P1 | L | Not started |
| **AI Recommendation Quiz** — 5-question quiz (stack type, scale, preferences) → top 3 tool stacks; Workers AI (free tier) | P2 | L | Not started |
| **API Rate Limiting** — Per-key limits via Workers + KV (1000 req/day free) | P2 | S | Not started |

### Tech Approach

- **Cloudflare D1** (free 5GB) for user accounts, watchlists, API keys.
- **Auth.js** with D1 adapter — no external auth service. **De-risking note:** accounts are the riskiest solo-build item; ship watchlists first as email-only (subscribe → alert, no login), then add full auth once the alert loop is proven. Consider magic-link auth (email-only) before password auth.
- **Cloudflare Workers** for API + AI quiz (free 100k requests/day is ample).
- **Stripe Payment Links** for premium listings — no checkout code needed.
- **Workers AI** (`@cf/meta/llama-3.1-8b-instruct`) for quiz/recommendation — free tier sufficient for low volume.

### Success Criteria

- **Users:** 500 registered accounts
- **Watchlists:** 200 active watchlists; 95% alert delivery rate
- **API:** 50 external consumers; 10k API requests/mo
- **Revenue:** $200/mo from premium listings + affiliates (first monetization)
- **AI quiz:** 100 completions/mo with 70% "useful" feedback
- **Monthly traffic:** 50k pageviews

---

## Tech Notes & Risks

### Cloudflare Free-Tier Constraints (Honest Limits)

| Resource | Free Limit | Our Usage |
|---|---|---|
| Workers requests | 100k/day | Phase 4: <5k/day expected |
| D1 database | 5GB storage, 5M rows read/day | Phase 4: <1GB |
| KV | 100k reads/day, 1k writes/day | Phase 3: <10k reads/day |
| Pages builds | 500/month | Current: ~30/mo; Phase 3 adds ~5/mo |
| Workers AI | 10k neurons/day | Quiz: <100/day |

**All phases fit comfortably within free tiers.**

### Key Risks

| Risk | Mitigation |
|---|---|
| **Manual verification doesn't scale** | Phase 3 community reviews + Phase 4 watchlists distribute the load; lychee automates link checking |
| **Free tiers change faster than we update** | Changelog + newsletter creates *value from change* rather than fighting it |
| **Solo builder burnout** | Every phase has a "reduce manual work" component (automation, community, APIs) |
| **Cloudflare D1 lock-in** | Data model is simple (users, votes, watchlists); exportable to SQLite/Postgres if needed |
| **Affiliate revenue conflicts with trust** | Always disclose; never let sponsors affect scores or verification status |
| **AI quiz quality poor** | Start with rule-based recommendation (tags + score + limits); add AI only if it beats rules |

### Dependencies

- **Phase 3 newsletter** requires Buttondown account (free) — no code dependency.
- **Phase 4 accounts** require D1 — no paid dependency.
- **All phases** depend on the existing Hermes cron infrastructure for automation.

---

## Summary Timeline

| Phase | Duration | Key Deliverable | Metric |
|---|---|---|---|
| 1 | Weeks 1–6 | Trustworthy directory | 100% verified, 140 tools |
| 2 | Weeks 7–14 | Interactive comparison | 30% use comparison tool |
| 3 | Weeks 15–26 | Community + alerts | 100 newsletter subs, 500 votes |
| 4 | Months 7–12 | Platform + monetization | 500 users, $200/mo revenue |

**North Star:** By month 12, StacksFree is the first place developers check when asking "what's the best free tier for X?" — because it's verified, current, and community-driven.
