Skip to content

feat: multi-ecosystem stack graph + builder redesign#209

Open
Marve10s wants to merge 16 commits into
mainfrom
feat/multi-ecosystem-stack-graph
Open

feat: multi-ecosystem stack graph + builder redesign#209
Marve10s wants to merge 16 commits into
mainfrom
feat/multi-ecosystem-stack-graph

Conversation

@Marve10s
Copy link
Copy Markdown
Owner

Summary

Introduces a stack-graph model that lets a project mix languages per role (frontend, backend, database, mobile) instead of a single ecosystem, and redesigns the web stack builder around it.

Changes

Types & core (packages/types)

  • New stack-graph.ts (parts, roles, ecosystem bindings) + tests.
  • Extended schemas, compatibility, stack-translation, types to support graph-shaped stacks alongside the legacy flat config.

CLI (apps/cli)

  • Parse/emit scoped --part flags, validate graph configs, keep reproducible-command output in sync.

Template generator (packages/template-generator)

  • Thread graph parts through the base + per-ecosystem handlers (go, rust, python, java, elixir, database).

Web builder (apps/web) — soft-modern redesign of the multi-ecosystem block

  • Full-width creation-method toggle promoted to a persistent top bar.
  • 5-step wizard: Frontend → Backend → Database → Mobile → Finalize, with step nav moved into the bottom command bar (partial command stays copyable mid-flow; full command + Copy on the final step).
  • Role step cards show the chosen tool + icon; Main Language picker uses icon tiles; rounded surfaces, softer borders, subtle shadows.
  • General settings (package manager, AI docs, version channel, git) become the final Finalize step instead of always-visible sections.

Docs

  • CONTEXT.md domain glossary for the stack-graph language.

Testing

  • apps/web: tsc --noEmit clean, oxlint 0 errors, 232 unit tests pass.
  • Pre-commit lint hook passed across the monorepo.
  • Web UI changes verified by type/lint/unit only (not exercised in a browser).

Notes

  • Branch is based ~3 commits behind origin/main (dependency/release bumps 1.8.1, #204, #205); may want a rebase before merge.

Introduce a stack-graph model that lets a project mix languages per role
(frontend, backend, database, mobile) instead of a single ecosystem, and
redesign the web stack builder around it.

Types & core
- Add packages/types/src/stack-graph.ts (parts, roles, ecosystem bindings)
  with tests; extend schemas, compatibility, stack-translation, and types
  to support graph-shaped stacks alongside the legacy flat config.

CLI
- Parse/emit scoped --part flags, validate graph configs, and keep the
  reproducible-command output in sync with the new model.

Template generator
- Thread graph parts through the base + per-ecosystem template handlers
  (go, rust, python, java, elixir, database).

Web builder (soft-modern redesign, multi-ecosystem block)
- Full-width creation-method toggle promoted to a persistent top bar.
- 5-step wizard: Frontend -> Backend -> Database -> Mobile -> Finalize,
  with step nav moved into the bottom command bar (partial command stays
  copyable mid-flow; full command + Copy on the final step).
- Role step cards show the chosen tool + icon; Main Language picker uses
  icon tiles; rounded surfaces, softer borders, and subtle shadows.
- General settings (package manager, AI docs, version channel, git) become
  the final "Finalize" step instead of always-visible sections.

Docs
- Add CONTEXT.md domain glossary for the stack-graph language.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
better-fullstack-web Ready Ready Preview, Comment Jun 2, 2026 9:06pm

@github-actions github-actions Bot added size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels May 29, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2f5d082c82

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/types/src/stack-translation.ts Outdated
Comment on lines +300 to +305
if (config.stackParts && config.stackParts.length > 0) {
flags = config.stackParts
.filter((part) => part.source !== "provided")
.map((part) => `--part ${formatStackPartSpec(part, config.stackParts ?? [])}`);
appendGraphExtraFlags(flags, config);
appendCommonFlags(flags, config);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve non-graph options in reproducible commands

Because bts.jsonc is now written with stackParts for normal legacy projects too, any saved project with options outside the small graph-extra allowlist (for example email, payments, addons, examples, dbSetup, deploy flags, or shadcn settings) takes this branch and returns a command that drops those selections. Re-running the generated history/repro command will silently scaffold a different project even though the original config still contains those values.

Useful? React with 👍 / 👎.

- stack-builder: use semantic <fieldset> instead of role="group" for the
  creation-mode toggle (oxlint jsx-a11y/prefer-tag-over-role is correctness=error
  on newer oxlint, failing the Lint job)
- stack-graph: only map the generic orm/api/auth config fields for TypeScript and
  React Native ecosystems. For Go (and other non-TS) the generic auth=better-auth
  default collided with the ecosystem-specific goAuth, emitting an invalid + duplicate
  auth part that validateStackParts rejected, breaking the go-auth web command roundtrip
- docs: add living design doc for moving the stack graph to a single source of truth
…em builder

- Move Solo / Multi-Ecosystem toggle into the global header (lime pill),
  bridged from the builder via a shared mode store; hide nav links on /new
- Redesign multi-ecosystem step nav as a horizontal numbered stepper
- Make multi-ecosystem sections match solo: icon+title headers, same tool
  card styling, collapsible with chevron
- Add cursor-pointer to section titles and the theme toggle
…stack-graph

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	apps/cli/test/__snapshots__/template-snapshots.test.ts.snap
#	packages/template-generator/src/post-process/package-configs.ts
The single-source-of-truth design doc still read "Exploring (no code
changes yet)" after the graph foundation, CLI --part round-trip,
generator threading, and multi-ecosystem builder all shipped. Update
the status, mark Phase 1 as landed (graph coexists with the flat
config), and flag Phases 2-4 as the remaining follow-ups.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant