Major Upgrades Roadmap: Node 24, Svelte 5, and Infrastructure Planning#1339
Draft
dgrebb wants to merge 12 commits into
Draft
Major Upgrades Roadmap: Node 24, Svelte 5, and Infrastructure Planning#1339dgrebb wants to merge 12 commits into
dgrebb wants to merge 12 commits into
Conversation
- Add .nvmrc for Node 24 - Create pnpm-workspace.yaml with security overrides - Update engine constraints in all package.json files - Add packageManager field for pnpm 11.10.0 - Update GitHub Actions workflows to use Node 24 - Update install-cache-deps action for pnpm 11 - Update back.Dockerfile to use node:24-alpine Closes #1334, #1337 Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
- Update Svelte to v5.56.4, SvelteKit to v2.69.1
- Update @sveltejs/vite-plugin-svelte to v5.0.3
- Update svelte-check to v4.2.1
Migration changes:
- Convert all 'export let' to '$props()' rune
- Convert '$:' reactive statements to '$derived' and '$effect'
- Convert '<slot />' to '{@render children?.()}'
- Convert named slots to snippet props
- Update event handlers from 'on:' to callback syntax (onclick, etc)
- Update '$state()' for component-level reactive variables
Components migrated (51 files):
- All route files (+layout, +page, +error)
- All CV components (Award, Certification, Experience, etc)
- All general components (Image, Links, Meta, PageNav, etc)
- All posts components (Post, Code, Footnotes, etc)
- Layout components (Header, Footer, NavBar, etc)
Closes #1335
Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
CMS Evaluation (docs/CMS_EVALUATION.md): - Compare Strapi 5 SQLite vs Git-based CMS options - Evaluate TinaCMS, Keystatic, Payload CMS, Directus - Recommend export-at-build architecture for cost reduction - Include cost analysis: current (0-150/mo) vs proposed (-15/mo) Terraform Outline (docs/TERRAFORM_OUTLINE.md): - Document current architecture (RDS + ECS + ALB) - Map module dependencies - Outline PostgreSQL 16 upgrade path - Document safe resource removal order - NO actual terraform changes - documentation only Closes #1336, #1338 Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
- Replace deprecated onlyBuiltDependencies with allowBuilds map - Add comprehensive allowBuilds entries for native modules - Use --frozen-lockfile in CI install action - Remove deprecated enable-pre-post-scripts from .npmrc - Rename pnpmOverrides to overrides (pnpm 11 syntax) The allowBuilds map explicitly approves native module builds, eliminating the need for interactive approve-builds in CI. Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
- Run pnpm install to generate pnpm-lock.yaml - Approve build scripts for @strapi/strapi, core-js, core-js-pure, puppeteer - Updates allowBuilds in pnpm-workspace.yaml automatically Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
…lity @sveltejs/vite-plugin-svelte v5.x requires Vite 6 due to imports like 'defaultClientConditions' that only exist in Vite 6. This fixes the CI build error: SyntaxError: The requested module 'vite' does not provide an export named 'defaultClientConditions' Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
Major version upgrades: - vite: ^5.4.2 → ^8.1.0 - @sveltejs/vite-plugin-svelte: ^5.0.3 → ^7.2.0 - @sveltejs/kit: ^2.69.1 → ^2.69.2 - eslint: ^9.9.1 → ^10.6.0 - eslint-plugin-svelte: ^2.43.0 → ^3.20.0 - prettier-plugin-svelte: ^3.2.6 → ^4.1.0 - vitest: ^2.0.5 → ^4.1.0 - marked: ^13.0.3 → ^15.0.0 - unplugin-icons: ^0.19.2 → ^23.0.0 - postcss-nested: ^6.2.0 → ^7.0.0 Minor/patch upgrades: - @playwright/test: ^1.46.1 → ^1.61.0 - @sveltejs/adapter-static: ^3.0.8 → ^3.0.10 - svelte-check: ^4.2.1 → ^4.7.0 - prettier: ^3.3.3 → ^3.9.0 - typescript: ^5.5.4 → ^5.9.0 - All @iconify-json packages updated to ^1.2.0 Removed: - vite-plugin-progress (incompatible with Vite 8) Updated vite.local.config.js to remove vite-plugin-progress. Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
Ran prettier --write to fix code style issues introduced by upgrading prettier-plugin-svelte to v4.1.0. Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
- Add globals and @eslint/js packages required by ESLint 10 - Disable strict new rules from eslint-plugin-svelte v3: - svelte/no-navigation-without-resolve (new rule) - svelte/valid-prop-names-in-kit-pages (new rule) - Set to warn for: - svelte/require-each-key - no-useless-assignment - Remove unused svelte-ignore comment in Project.svelte - Update svelte-ignore format from dashes to underscores Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
- Fix invalid &::hover -> &:hover in Code.css scrollbar styles - Remove invalid :before:hover selectors in cv.css (pseudo-elements can't be followed by pseudo-classes) - Remove redundant role='navigation' from NavBar.svelte (nav element already has implicit navigation role) Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
Identifies hardcoded values and improvement opportunities: - Database module: 8+ hardcoded values to extract - Containers module: 7+ hardcoded values - CDN module: 5+ hardcoded values - Scaling module: 2+ hardcoded values Proposes: - Variable extraction with defaults - Environment configuration module - for_each patterns for CDN/storage - Common tags module - Security policy consolidation Includes phased action items checklist. Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
The modularization doc was pointless - we're tearing down ECS/RDS/ALB anyway. New SSG migration plan includes: - Target architecture (single S3 + CloudFront) - Content export workflow - Local build pipeline with Docker + SQLite - Beta infrastructure Terraform (beta.dgrebb.com) - GitHub Actions deploy workflow - Validation checklist and cutover steps - Cost comparison: ~$47-83/mo → ~$3-6/mo Key decisions documented: - Same bucket for assets + SSG (simpler, atomic deploys) - Keep CloudFront (HTTPS + headers + caching) - One distribution instead of two Co-authored-by: Dan Grebb <dgrebb@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Major Upgrades Roadmap
This PR includes comprehensive upgrades to the project's infrastructure and dependencies:
Node.js & Package Manager
pnpm-workspace.yamlwithallowBuildsconfiguration for native modulesnode:24-alpineSvelte 5 Migration
$props()rune instead ofexport let$derivedand$state()instead of$:reactive statements{@render children?.()}snippets instead of<slot />onclickinstead ofon:click)Vite 8 Upgrade
vite-plugin-progressESLint 10 + Tooling
Other Dependency Updates
@iconify-json/*packages updated to ^1.2.0Documentation
docs/SSG_MIGRATION_PLAN.md- Step-by-step plan to go fully static:beta.dgrebb.comdocs/CMS_EVALUATION.md- CMS alternatives analysisdocs/TERRAFORM_OUTLINE.md- Current infrastructure referenceCI Status
Closes #1334, #1335, #1337