Skip to content

Feat/monthly project generator - #160

Open
alternative-dl wants to merge 43 commits into
tbakerx:mainfrom
alternative-dl:feat/monthly-project-generator
Open

Feat/monthly project generator#160
alternative-dl wants to merge 43 commits into
tbakerx:mainfrom
alternative-dl:feat/monthly-project-generator

Conversation

@alternative-dl

Copy link
Copy Markdown

No description provided.

alternative-dl and others added 30 commits June 13, 2024 10:42
Signed-off-by: Didrik Liu <94482439+alternative-dl@users.noreply.github.com>
10:12  Error: There should be no space after '{'.  object-curly-spacing
10:33  Error: There should be no space before '}'.  object-curly-spacing
Content: sync site with current CV — new roles (CommodIQ CTO, Pricer
Data Scientist & AI Engineer, ARIFY), combined KTH degree, updated
skills, and add the master's thesis to the portfolio.

Design: restyle the whole site in a digital-brutalism aesthetic —
thick ink borders, hard offset shadows, loud color-blocked sections
(acid/sky/lime/flare), and Space Grotesk + Space Mono type.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Undoes commit a825102, which had a leftover git editor template as its
message and reverted the entire brutalist redesign from 1ad4e8f. This
re-applies that redesign to main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Revert the visual theme to the neo-brutalism design (flat paper, black
structure, single #ff4d00 signal accent, var(--font-display)/mono) that
was on main at a825102, undoing the digital-brutalism (yellow/green,
Space Grotesk) look restored via PR #1.

Theme files only — data.tsx and the in-progress monthly-project generator
work are intentionally left uncommitted in the working tree.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A self-contained generator (scripts/generate-project) that monthly:
picks a project idea and writes a static web app with Claude, deploys it
to Cloud Run on leebot-dev, screenshots it with Playwright, and appends a
PortfolioItem. A GitHub Actions cron runs it and opens a PR for review;
nothing publishes to the live resume automatically.

- Isolated mini-package (own package.json) — untouched by the Next app deps
- data.tsx spreads generatedProjects (auto-generated module) into portfolioItems
- Guardrails: static-only apps, fixed human-owned Dockerfile, PR review gate
- setup-gcp.sh wires Workload Identity Federation (no SA keys in GitHub)
- Verified end-to-end via --dry-run (real screenshot) + app typecheck passes

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Image imports (../images/...) must precede the ./dataDef import, else the
monthly PR's Vercel build fails lint. Verified: a populated module now
passes eslint.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
alternative-dl and others added 13 commits July 20, 2026 17:36
…cp.sh

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rework the generator to run headless `claude -p --output-format json`
authenticated with a Max-subscription token (CLAUDE_CODE_OAUTH_TOKEN from
`claude setup-token`) instead of calling the Anthropic Messages API with a
paid ANTHROPIC_API_KEY — so monthly generation draws from the Max plan.

- Replace anthropic.ts (SDK) with claude.ts: shells out to the `claude` CLI,
  disables all tools, parses the `.result` envelope, extracts JSON (handles
  fenced blocks) with validation. Verified the real -p json envelope shape.
- Drop the @anthropic-ai/sdk dependency.
- Workflow: install the Claude Code CLI, pass CLAUDE_CODE_OAUTH_TOKEN (no
  ANTHROPIC_API_KEY, which would override the token and bill per-token).
- Update README, setup-gcp.sh output, and config env vars accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tool

A shadowing ANTHROPIC_API_KEY (even empty) in the environment made the
headless `claude` call fail auth instead of using the subscription login.
Strip it (and ANTHROPIC_AUTH_TOKEN) from the child env. Also remove
'MultiEdit' from the disallowed-tools list — not a known tool name.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Inaugural output of the monthly pipeline (generated via Claude Code on the
Max plan, deployed to Cloud Run): an interactive Monte Carlo price-path
simulator. Live at demo-price-paths in leebot-dev.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Publish Price Path Explorer + switch generator to Max subscription
execFileSync swallowed the child's stderr, leaving only a useless
'Command failed' with no reason. Catch and include stderr/stdout/exit
status (plus a missing-token hint) so CI failures are diagnosable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Each generated project now carries a sourceUrl (its committed
  generated-projects/<slug>/ folder on GitHub); the portfolio card shows a
  "Code" link alongside the live-demo link.
- Deploy generated demos with a cost-bounded Cloud Run config
  (128Mi / 0.5 vCPU, scale-to-zero, max 1 instance) — an idle demo costs nothing.
- Replace the one-line styling instruction with a full digital-brutalism design
  brief so Opus produces polished, on-brand demos (palette, borders, hard
  shadows, type scale, tactile controls, craft checklist, striking first paint).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Backfill the sourceUrl for the second generated project so every portfolio
demo exposes its committed source, consistent with price-paths.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant