v2.0
What's Changed
Summary
- migration from react router v7 to TanStack Start
- blog and newsletter app
- form handling package
- support for static content
- support for multiple databases
- simpler deployment to Cloudflare
Details
- chore(deps): bump react-router from 7.14.0 to 7.15.0 by @dependabot[bot] in #292
- refactor: migrate from react router v7 to tanstack start by @pawelgalazka in #293
- chore(deps): upgrade to Vite 8 and resolve peer dependency warnings by @pawelgalazka in #294
- ci: separate wrangler types generation from type check by @pawelgalazka in #295
- refactor: organize server functions into rpc and hooks directories by @pawelgalazka in #296
- refactor(auth): merge user module into auth by @pawelgalazka in #297
- feat(blog): add MDX-powered blog with index and post routes by @pawelgalazka in #298
- feat(content): add badge and medium background to Section by @pawelgalazka in #299
- refactor(brand): rename content module to brand by @pawelgalazka in #300
- test(e2e): use single worker to avoid overloading dev server by @pawelgalazka in #301
- feat(brand): add ProseArticle layout for read-based pages by @pawelgalazka in #302
- feat(brand): migrate legal pages to MDX content files by @pawelgalazka in #303
- refactor(mdx): extract shared MDX frontmatter utilities by @pawelgalazka in #304
- refactor(blog,brand): colocate MDX modules and schemas in content by @pawelgalazka in #305
- refactor(cloudflare): extract turnstile into shared package by @pawelgalazka in #306
- perf(turnstile): lazy-render widget when in viewport by @pawelgalazka in #307
- refactor(email): replace resend sdk with rest api by @pawelgalazka in #308
- refactor(crypto,email): simplify signing and restore resend sdk by @pawelgalazka in #309
- feat(newsletter): add double opt-in newsletter signup by @pawelgalazka in #310
- refactor(date): extract shared date utilities by @pawelgalazka in #312
- style(ui): align typography table styles with website by @pawelgalazka in #313
- chore(newsletter): remove newsletter signup storybook story by @pawelgalazka in #311
- refactor(form): reorder useFormAction and parseFormData arguments by @pawelgalazka in #314
- fix(form): persist useFormAction data and error across resubmits by @pawelgalazka in #315
- fix(core): remove duplicate RootDocument from error and not-found pages by @pawelgalazka in #316
- refactor(db): streamline database setup and multi-db layout by @pawelgalazka in #317
- fix(auth): validate required auth secrets on login page by @pawelgalazka in #318
- fix(auth): await auth configuration guard and restore error document shell by @pawelgalazka in #319
- feat(core): scaffold prerender and sitemap config in vite by @pawelgalazka in #320
- feat(config): add setup:wrangler script to reset wrangler.json by @pawelgalazka in #321
- chore: add generate:secret script for random key generation by @pawelgalazka in #322
- fix(db): validate D1 database ID and format wrangler after reset by @pawelgalazka in #323
- chore: remove generate package in favor of create-component skill by @pawelgalazka in #324
- chore: upgrade dev dependencies and remove unused isbot by @pawelgalazka in #325
- fix(newsletter): return not found for invalid confirm params by @pawelgalazka in #326
- chore(storybook): migrate from react-vite to tanstack-react by @pawelgalazka in #327
Full Changelog: v1.0...v2.0