Backlog completion (WIP): planned/ docs task sweep#291
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
4570f81 to
da95d29
Compare
da95d29 to
64d0846
Compare
4980dc4 to
123350c
Compare
123350c to
6cce0ba
Compare
6cce0ba to
5d26298
Compare
5d26298 to
1da9fc9
Compare
1da9fc9 to
e7351bc
Compare
e7351bc to
eef4567
Compare
eef4567 to
4958a6b
Compare
Adds capabilities across payments, TypeScript integrations, and the Go/Rust/
Java/Python ecosystems, plus docs and a runtime fix. Each item below was
individually verified (compile/typecheck/generation tests + CI gates) before
squashing into this clean commit.
Payments & SaaS billing:
- Creem, Autumn, Commet providers (+ Creem Better Auth server/client plugin)
- Fix: generated env zod schema was missing creem/autumn/commet vars -> strict
tsc failure in the server libs; added the guarded blocks
- SaaS Starter preset (--template saas)
TypeScript integrations:
- Supabase Storage (file storage), PostHog (analytics), Intlayer (i18n)
- Self-hosted Redis caching via ioredis (TS-gated; distinct from upstash-redis)
Ecosystems:
- Go: net/http stdlib web framework, Bun (uptrace) ORM, Bleve embedded search
- Rust: Poem + Loco web frameworks
- Java: Micronaut framework, Log4j2 logging, OpenAPI Generator API
* Fix: Log4j2 pulled Logback transitively via non-webmvc Spring Boot starters,
failing the generated project's tests at runtime (dual SLF4J binding); now
excludes spring-boot-starter-logging globally (gradle configurations.all,
maven per-starter exclusions)
- Python: Elasticsearch search
Docs: synced the option reference (payments, caching/search, Go/Rust/Java pages)
Tests: web + CLI TECH_OPTIONS contract assertions updated for the new options
Verified: full `turbo test` (6/6), test:release, lint, cli-builder-sync green;
go build / cargo check / mvn + gradle test / py_compile on generated projects.
7b463ba to
503b634
Compare
Adds a java-spring-log4j2 preset (spring-boot + gradle + log4j2 + actuator + jooq, junit5-only) to the pr-broad strict-smoke group so the Log4j2/Logback dual-binding regression is deterministically checked on every PR, not just when SHA-sampled. junit5 (no Testcontainers) verifies the Spring context / Log4j2 init at runtime without a Docker daemon. Advances generated-project CI quality (#21).
The Go-Bleve and Python-Elasticsearch search options were wired into the schema, prompts, and templates, but two validation layers still hard-limited non-TypeScript search to Meilisearch: the CLI preflight (config-validation.ts) and the stack-graph shared non-TS rule. So --search bleve / --search elasticsearch were rejected at scaffold time (createVirtual-based unit tests bypassed the preflight, hiding it). Both now allow the native engine per ecosystem (go+bleve, python+elasticsearch) while keeping every other non-TS ecosystem on Meilisearch. Also adds a go-stdlib-bun-bleve strict-smoke preset (pr-broad) exercising all three Go additions (stdlib + Bun ORM + Bleve) end-to-end — which is what surfaced the bug. Verified: scaffold + go build/vet pass; full turbo test + test:release + lint green.
Adds python-elasticsearch (fastapi + pydantic + ruff + elasticsearch search) to the pr-broad strict-smoke group so this branch's Python Elasticsearch option is deterministically build-tested (it was CLI-blocked before the non-TS search allowlist fix). Verified locally: scaffold + uv install + compile-check + lint all pass.
Adds 'create-better-fullstack recommend --brief "..."' that runs the natural-language -> stack engine (recommendStackFromBrief, now exported from mcp.ts where it was MCP-only) and prints the suggested config, the rationale, and the nearest preset (--json for machine output). Surfaces the prompt-to-stack capability on the CLI and makes the engine reusable — a step toward wiring it into the web builder (#15). Verified: manual run + recommend-stack.test.ts (4 pass); full turbo test + test:release + lint green.
The Encore backend's server tsconfig lacked "jsx" and only included **/*.ts, so react-email/resend .tsx email templates failed to typecheck (TS6142: '--jsx' is not set) — surfaced by the SHA-sampled smoke on a react-router+encore+ react-email combo. Mirrors the base server tsconfig (jsx: react-jsx) and adds **/*.tsx to include. Verified: the emails now typecheck (original TS6142 gone; the remaining encore.dev SDK node-type errors seen locally are a @types/node install-hoisting artifact that CI's full install resolves). template-snapshots 95/0 + test:release + lint green.
Adds the recommend command to the CLI reference commands table so users can discover prompt-to-stack from the CLI (--brief / --ecosystem / --json).
Adds a "Describe your app" input to the presets panel that scores a natural-language brief against the current ecosystem's presets and applies the closest one — a deterministic keyword scorer (word/tech overlap + intent signals like mobile/postgres/auth/ai), no model call. New recommend-preset.ts engine (6 unit tests) wired into presets-panel through the existing applyPreset path, so applying a suggestion is identical to clicking a preset card. Completes the web-builder half of the prompt-to-stack task (the CLI 'recommend' command shipped earlier). Verified: tsc --noEmit + oxlint + vite build + full web test suite (270 pass) all green.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 88252ed97c
ℹ️ 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".
| const isNext = frontend[0] === "next"; | ||
| const deps: AvailableDependencies[] = isNext | ||
| ? ["intlayer", "next-intlayer"] | ||
| : ["intlayer", "react-intlayer", "vite-intlayer"]; |
There was a problem hiding this comment.
Gate Intlayer to React-compatible frontends
When --i18n intlayer is supplied outside the interactive prompt (or selected in the web builder), there is no compatibility/validation rule limiting it to React/Next/Vite React frontends. This branch treats every non-Next frontend as React by installing react-intlayer/vite-intlayer and also emits React .tsx provider/switcher templates, so Svelte/Nuxt/Solid/Astro projects can be generated with incompatible React-only files and deps. Add a compatibility guard or branch per supported frontend before installing these deps.
Useful? React with 👍 / 👎.
| def get_search_client() -> Elasticsearch: | ||
| url = os.getenv("ELASTICSEARCH_URL", "http://localhost:9200") | ||
| api_key = os.getenv("ELASTICSEARCH_API_KEY") |
There was a problem hiding this comment.
Read the generated Elasticsearch env variable
For Python projects with search=elasticsearch, the env generator documents/writes ELASTICSEARCH_NODE (plus optional cloud/auth vars), but this new helper reads ELASTICSEARCH_URL instead. Users who fill in the generated .env.example value for a non-local cluster will still connect to the default http://localhost:9200, so the Python Elasticsearch option ignores its own scaffolded configuration.
Useful? React with 👍 / 👎.
…omponent native-unistyles + mobileNavigation=none emitted 'import "expo-router/entry"' in apps/native/index.js, but expo-router is not installed and no app/ dir is generated for the non-expo-router case, so metro iOS bundling failed. App.tsx is already generated for none (base/App.tsx.hbs covers react-navigation OR none), so route none through registerRootComponent(App) like react-navigation; only expo-router keeps the expo-router/entry path. Verified: generated index.js now imports App (0 expo-router refs), App.tsx present, template-snapshots 95/0 + test:release + lint green. Closes the core Mobile/React-Native depth defect (task #8).
Goal
Work through the remaining open tasks in `docs/plans/planned/` in priority order, each as a verified, CI-green vertical slice. Batches land here incrementally; branch is kept rebased on `Development`.
Completed slices (each verified: test:release + lint + cli-builder-sync + tech-icons + tech-links green)
Payments providers (task: Payments & SaaS billing depth)
Creem (`creem@^1.5.3` + `@creem_io/better-auth`), Autumn (`autumn-js@^1.2.34`), Commet (`@commet/node@^7.3.0`) — SDK-verified server libs (in `packages/auth`) + success pages for next/tanstack-router/tanstack-start/react-router/svelte/solid/nuxt, local icons, env vars, prompts, post-install, tests.
Supabase Storage (task: TS categories)
`supabase-storage` in the file-storage category — server-side storage helper (upload/download/delete/signed-url/public-url/list) via `@supabase/supabase-js`.
PostHog analytics (task: TS categories)
`posthog` in the analytics category — `posthog-js` libs for react/svelte/vue/solid (init, capture, identify, reset).
Intlayer i18n (task: TS categories)
`intlayer` in the i18n category — component-level, type-safe i18n via content declarations (`intlayer@^8.12.4` + next-intlayer/react-intlayer/vite-intlayer), config + provider + language-switcher with Next-vs-Vite conditionals.
Notes