Our public board

AaronShipsIt.com

Changelog

What's new on AaronShipsIt.com — the latest updates we've shipped.

Shipped — newest first

RSS
  1. Social cards — generated OG images

    Generated OpenGraph/Twitter cards: a site-wide brand lockup card plus a per-post title card, rendered at build time from the design tokens. No photos, no faces, readable at thumbnail size.

    Analytics was originally bundled into this item and is deliberately out of it now: the site promises no tracking of any kind, and that promise stays true until a consent-gated approach earns its way in as its own separate decision.

    Acceptance: og:image and twitter:card render for every page, a distinct card per post title, and the pages make zero third-party requests — none at all, not even ours.

    Shipped

  2. Domain, TLS, and the deploy rail

    Point aaronshipsit.com at docker04 through the off-host nginx (Nginx Proxy Manager). Follow ops/nginx-handoff.conf; ports bind the host LAN address, not localhost (see the amended boundary in ps-integration AGENTS.md).

    Acceptance: https://aaronshipsit.com serves the app with valid TLS; deploy.sh production runs clean end to end; health checks green.

    Shipped

  3. Persona brand system: Aaron Ships It

    A visual identity DISTINCT from FeatureJet's — this is the maker persona, not the product. Define palette, type pairing, and a mark. Warm, personal, built-for-joy per docs/brand-ethos.md and docs/aaronshipsit-brand.md.

    HARD RULE: the @aaronshipsit persona only. Never the real full identity, never LinkedIn.

    Acceptance: tokens in code, a rendered style page, both light and dark.

    Shipped

  4. Home page: who I am and what I'm shipping

    Above the fold: the persona bio (approved copy is in docs/aaronshipsit-brand.md), what I'm building right now, and links to the products. Warm teacher voice, no hype, lead with why.

    Acceptance: responsive to 390px, keyboard-navigable, no invented claims or metrics.

    Shipped

  5. Blog engine: MDX, RSS, llms.txt

    File-based MDX posts with frontmatter (title, date, slug, summary, tags). Generate an index, an RSS feed, and an llms.txt describing the site for AI engines.

    Lesson from FeatureJet: llms.txt must never outlive its accuracy — add a test asserting it matches the real feature set.

    Acceptance: a sample post renders, RSS validates, llms.txt served.

    Shipped

  6. Product pages — one per product, updated over time

    A dedicated page per product (FeatureJet, VowAdvisor, and whatever follows), not just a card. Each carries: ship date, current status, description, and LEARNINGS — what worked, what did not, what I would do differently. These are living pages, updated as each product evolves; the learnings are the part readers actually come for.

    Content model must make updating trivial (file-based per product, no CMS). Status should be able to come from real data later rather than being hand-typed — see item #92 (live numbers). Design so a product with no revenue and a product with revenue both look honest; never imply traction that does not exist.

    Acceptance: adding a product or updating a status is a one-file edit; every page renders with an honest empty state for fields not yet filled; no fabricated metrics anywhere.

    Shipped

  7. SEO + AI visibility pass

    Route-specific metadata, OG/Twitter cards, JSON-LD (Article for posts, Person/Organization for the persona), sitemap, robots. Reuse the patterns just shipped on FeatureJet.

    Acceptance: every route has unique title/description/OG image; JSON-LD parses; no aggregateRating or invented review data.

    Shipped

  8. Publish the first three posts

    Write and publish the first three posts from the content engine's idea bank (docs/featurejet-content-engine.md). Real story beats only — the honest engineering journey, the agent-workforce operating model, why flat pricing.

    HARD RULE: zero fabricated metrics; every number is real or omitted. @aaronshipsit voice per the brand book.

    Acceptance: three posts live with RSS entries, each passing the dignity test.

    Shipped

  9. Scaffold aaronshipsit.com via the app factory

    Run create-product to generate the site repo so it inherits boatlift (auth, email, measurement, billing) and the platform deploy rail from day one. BLOCKED until the trusted-tool HOME fix lands (uv cannot init its cache under HOME=/dev/null).

    Acceptance: repo generated, registers as a platform product, CI/gates green, nothing deployed yet.

    Shipped