The Core Concept: "Subscribe to the Stream"

We need to redefine "Subscription" for the user. It isn't just "get an email when I write." It is "syncing with the publisher's data pipeline."

The 3 Promises of a DataHub Subscription:

  1. New Analysis (Context): "I’ll tell you when I find a new insight." (The Substack model)
  2. New Assets (Inventory): "I’ll tell you when I upload a completely new dataset." (The Repo model)
  3. Data Freshness (Continuity): "I’ll tell you when inflation_rates.csv has new rows for last month." (The SaaS model).

Updated Spec: The ./subscribe Page

We need to write the copy and visual cues on the subscription page so the user understands they are subscribing to a Data Service, not just a blog.

"Subscribe to [Publication Name]. Get access to evolving datasets, live dashboards, and analysis. Never miss a data update."


I. Job Stories

Story 1: The "Free" Value Exchange (Reader)

When I decide to subscribe to a data publication, I want to clearly see that the "Free" plan gives me access to posts and public datasets, So that I know exactly what I am getting before I hand over my email address.

Story 2: The Future Upgrade (Publisher)

When I eventually enable paid subscriptions, I want the subscription page to automatically show the new tiers (Monthly/Yearly) alongside the Free option, So that I don’t have to redesign my entire signup flow when I decide to monetize.

Story 3: Frictionless Entry (Logged Out User)

When I click "Subscribe" but I don't have an account yet, I want the ./subscribe page to double as a sign-up form, So that I don't have to go through a separate "Create Account" flow before I can subscribe.

II. The User Flow

The flow logic needs to handle two distinct states: Logged In vs. Logged Out.

  1. Trigger: User clicks "Subscribe" on the Navbar or Footer.
  2. Action: Redirect to [Publication_URL]/subscribe.
  3. State Check:
  • If Logged Out: Display the "Enter Email" field above the plan selection.

  • Logic: Creating the account and creating the subscription happen in one click ("Continue").

  • If Logged In: Display the current user's avatar/email at the top ("Subscribing as [email protected]") and show the Plan Selection cards immediately below.

**III. Page Layout: ./subscribe**

This page should be distraction-free. No navbar, no footer links—just the value proposition and the choice.

1. Header (Minimal)

  • Logo: Publication Logo (Centered, Medium size ~64px).
  • Headline: "Subscribe to [Publication Name]".
  • Sub-headline: "Stay up to date with new datasets, SQL queries, and analysis." (Customizable by Publisher).

2. Input Area (Conditional)

  • Only visible if user is NOT logged in.
  • Email Field: Large, centered input.
  • Label: "Enter your email to continue."

3. Plan Selection Area (The "Tier" Grid)

Even if we only have one plan now, we build the grid structure so adding paid plans later is just a database switch.

Current State (Free Only):

  • Layout: Single Card, centered.

  • Card Styling: Clean border, slightly elevated shadow.

  • Content:

  • Title: "Free".

  • Price: "$0" / "Forever".

  • Checklist (Benefits):

  • ✓ Public Posts

  • ✓ Public Datasets

  • ✓ Weekly Newsletter

  • CTA Button: "Subscribe for Free" (or "Continue" if email was just entered).

Future State (Multi-Plan Ready):

  • Layout: Three columns (Free | Monthly | Yearly).
  • Highlight: The "Yearly" plan usually gets a "Best Value" ribbon.
  • Selection Logic: Clicking a card selects that radio option; the main CTA at the bottom updates to "Subscribe ($X/mo)".
  • "No spam, unsubscribe anytime."
  • "Powered by DataHub."

IV. Technical "Gotchas" to Watch For

  1. The "Already Subscribed" Loop:
  • If a user is already subscribed and goes to ./subscribe, do not show them the plan picker.
  • Show: "You are already subscribed to the Free plan."
  • Action: Provide a link to "Manage Subscription" or "Return to Home".
  1. Redirects:
  • After a successful subscription, where do they go?
  • Standard: Redirect back to the Referer (the post they were reading).
  • Fallback: Redirect to the Publication Index (Home).