Skip to content

Backlog completion (WIP): planned/ docs task sweep#291

Open
Marve10s wants to merge 9 commits into
Developmentfrom
ibrahim/backlog-completion
Open

Backlog completion (WIP): planned/ docs task sweep#291
Marve10s wants to merge 9 commits into
Developmentfrom
ibrahim/backlog-completion

Conversation

@Marve10s

@Marve10s Marve10s commented Jul 4, 2026

Copy link
Copy Markdown
Owner

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

@vercel

vercel Bot commented Jul 4, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
better-fullstack-web Ready Ready Preview, Comment Jul 5, 2026 10:49am

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 effective changed lines (test files excluded in mixed PRs). labels Jul 4, 2026
@github-actions github-actions Bot added size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). and removed size:XL 500-999 effective changed lines (test files excluded in mixed PRs). labels Jul 4, 2026
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from 4570f81 to da95d29 Compare July 4, 2026 13:17
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from da95d29 to 64d0846 Compare July 4, 2026 13:33
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from 4980dc4 to 123350c Compare July 4, 2026 14:39
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from 123350c to 6cce0ba Compare July 4, 2026 16:32
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from 6cce0ba to 5d26298 Compare July 4, 2026 16:58
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from 5d26298 to 1da9fc9 Compare July 4, 2026 17:19
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from 1da9fc9 to e7351bc Compare July 4, 2026 17:37
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from e7351bc to eef4567 Compare July 4, 2026 18:01
@Marve10s Marve10s force-pushed the ibrahim/backlog-completion branch from eef4567 to 4958a6b Compare July 4, 2026 18:28
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.
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.
@Marve10s Marve10s marked this pull request as ready for review July 5, 2026 10:14

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

Copy link
Copy Markdown

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: 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".

Comment on lines +42 to +45
const isNext = frontend[0] === "next";
const deps: AvailableDependencies[] = isNext
? ["intlayer", "next-intlayer"]
: ["intlayer", "react-intlayer", "vite-intlayer"];

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 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 👍 / 👎.

Comment on lines +38 to +40
def get_search_client() -> Elasticsearch:
url = os.getenv("ELASTICSEARCH_URL", "http://localhost:9200")
api_key = os.getenv("ELASTICSEARCH_API_KEY")

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 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).
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