Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 109 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
version: 2
updates:
# Next.js (starter + app grouped)
- package-ecosystem: 'npm'
directories:
- '/packages/starter-next-js'
- '/packages/app-next-js'
schedule:
interval: 'weekly'
day: 'monday'
allow:
- dependency-name: 'next'
ignore:
- dependency-name: 'next'
update-types: ['version-update:semver-patch']

# Nuxt (starter + app grouped)
- package-ecosystem: 'npm'
directories:
- '/packages/starter-nuxt'
- '/packages/app-nuxt'
schedule:
interval: 'weekly'
day: 'monday'
allow:
- dependency-name: 'nuxt'
ignore:
- dependency-name: 'nuxt'
update-types: ['version-update:semver-patch']

# Astro (starter + app grouped)
- package-ecosystem: 'npm'
directories:
- '/packages/starter-astro'
- '/packages/app-astro'
schedule:
interval: 'weekly'
day: 'monday'
allow:
- dependency-name: 'astro'
ignore:
- dependency-name: 'astro'
update-types: ['version-update:semver-patch']

# SvelteKit (starter + app grouped)
- package-ecosystem: 'npm'
directories:
- '/packages/starter-sveltekit'
- '/packages/app-sveltekit'
schedule:
interval: 'weekly'
day: 'monday'
allow:
- dependency-name: '@sveltejs/kit'
ignore:
- dependency-name: '@sveltejs/kit'
update-types: ['version-update:semver-patch']

# React Router (starter + app grouped)
- package-ecosystem: 'npm'
directories:
- '/packages/starter-react-router'
- '/packages/app-react-router'
schedule:
interval: 'weekly'
day: 'monday'
allow:
- dependency-name: '@react-router/dev'
ignore:
- dependency-name: '@react-router/dev'
update-types: ['version-update:semver-patch']

# TanStack Start (starter + app grouped)
- package-ecosystem: 'npm'
directories:
- '/packages/starter-tanstack-start-react'
- '/packages/app-tanstack-start-react'
schedule:
interval: 'weekly'
day: 'monday'
allow:
- dependency-name: '@tanstack/react-start'
ignore:
- dependency-name: '@tanstack/react-start'
update-types: ['version-update:semver-patch']

# SolidStart (starter + app grouped)
- package-ecosystem: 'npm'
directories:
- '/packages/starter-solid-start'
- '/packages/app-solid-start'
schedule:
interval: 'weekly'
day: 'monday'
allow:
- dependency-name: '@solidjs/start'
ignore:
- dependency-name: '@solidjs/start'
update-types: ['version-update:semver-patch']

# Workspace packages (docs + stats-generator)
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: 'weekly'
day: 'friday'
groups:
workspace-deps:
patterns: ['*']
28 changes: 14 additions & 14 deletions .github/frameworks.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"focusedFramework": true,
"starter": {
"package": "starter-next-js",
"buildScript": "build:next",
"buildScript": "build",
"buildOutputDir": ".next",
"measurements": [
{ "type": "install", "runFrequency": 5 },
Expand All @@ -16,7 +16,7 @@
},
"app": {
"package": "app-next-js",
"buildScript": "build:app-next-js",
"buildScript": "build",
"buildOutputDir": ".next",
"measurements": [{ "type": "ssr" }]
}
Expand All @@ -28,7 +28,7 @@
"focusedFramework": true,
"starter": {
"package": "starter-react-router",
"buildScript": "build:react-router",
"buildScript": "build",
"buildOutputDir": "build",
"measurements": [
{ "type": "install", "runFrequency": 5 },
Expand All @@ -38,7 +38,7 @@
},
"app": {
"package": "app-react-router",
"buildScript": "build:app-react-router",
"buildScript": "build",
"buildOutputDir": "build",
"measurements": [{ "type": "ssr" }]
}
Expand All @@ -50,7 +50,7 @@
"focusedFramework": true,
"starter": {
"package": "starter-tanstack-start-react",
"buildScript": "build:tanstack",
"buildScript": "build",
"buildOutputDir": ".output",
"measurements": [
{ "type": "install", "runFrequency": 5 },
Expand All @@ -60,7 +60,7 @@
},
"app": {
"package": "app-tanstack-start-react",
"buildScript": "build:app-tanstack-start-react",
"buildScript": "build",
"buildOutputDir": ".output",
"measurements": [{ "type": "ssr" }]
}
Expand All @@ -72,7 +72,7 @@
"focusedFramework": true,
"starter": {
"package": "starter-nuxt",
"buildScript": "build:nuxt",
"buildScript": "build",
"buildOutputDir": ".output",
"measurements": [
{ "type": "install", "runFrequency": 5 },
Expand All @@ -82,7 +82,7 @@
},
"app": {
"package": "app-nuxt",
"buildScript": "build:app-nuxt",
"buildScript": "build",
"buildOutputDir": ".output",
"measurements": [{ "type": "ssr" }]
}
Expand All @@ -94,7 +94,7 @@
"focusedFramework": true,
"starter": {
"package": "starter-sveltekit",
"buildScript": "build:sveltekit",
"buildScript": "build",
"buildOutputDir": "build",
"measurements": [
{ "type": "install", "runFrequency": 5 },
Expand All @@ -104,7 +104,7 @@
},
"app": {
"package": "app-sveltekit",
"buildScript": "build:app-sveltekit",
"buildScript": "build",
"buildOutputDir": "build",
"measurements": [{ "type": "ssr" }]
}
Expand All @@ -116,7 +116,7 @@
"focusedFramework": true,
"starter": {
"package": "starter-astro",
"buildScript": "build:astro",
"buildScript": "build",
"buildOutputDir": "dist",
"measurements": [
{ "type": "install", "runFrequency": 5 },
Expand All @@ -126,7 +126,7 @@
},
"app": {
"package": "app-astro",
"buildScript": "build:app-astro",
"buildScript": "build",
"buildOutputDir": "dist",
"measurements": [{ "type": "ssr" }]
}
Expand Down Expand Up @@ -154,7 +154,7 @@
"focusedFramework": true,
"starter": {
"package": "starter-solid-start",
"buildScript": "build:solid-start",
"buildScript": "build",
"buildOutputDir": ".output",
"measurements": [
{ "type": "install", "runFrequency": 5 },
Expand All @@ -164,7 +164,7 @@
},
"app": {
"package": "app-solid-start",
"buildScript": "build:app-solid-start",
"buildScript": "build",
"buildOutputDir": ".output",
"measurements": [{ "type": "ssr" }]
}
Expand Down
5 changes: 5 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Checklist

- [ ] If updating UI/UX components ensure you have added screenshots or a gif or video of the changes to the PR description
- [ ] If this is a dependabot PR that bumps a metaframework version, ensure that all package versions in the package match the versions installed by the metaframework version being bumped
- [ ] If this is a dependabot PR that bumps a metaframework version in a `starter-*` package, ensure that the deps, and file content matches the output of the metaframeworks recommended starter/default project
15 changes: 12 additions & 3 deletions .github/workflows/generate-stats.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,13 @@ jobs:
node-version: '24'
cache: 'pnpm'

- name: Install dependencies
- name: Install workspace dependencies
run: pnpm install --frozen-lockfile

- name: Install package dependencies
working-directory: ./packages/${{ matrix.framework.package }}
run: pnpm install --frozen-lockfile --ignore-workspace

- name: Run build benchmark
run: |
RUN_FREQUENCY=$(echo '${{ toJson(matrix.framework) }}' | jq -r '.measurements[] | select(.type == "build") | .runFrequency')
Expand Down Expand Up @@ -130,11 +134,16 @@ jobs:
node-version: '24'
cache: 'pnpm'

- name: Install dependencies
- name: Install workspace dependencies
run: pnpm install --frozen-lockfile

- name: Install package dependencies
working-directory: ./packages/${{ matrix.framework.package }}
run: pnpm install --frozen-lockfile --ignore-workspace

- name: Build app
run: pnpm ${{ matrix.framework.buildScript }}
working-directory: ./packages/${{ matrix.framework.package }}
run: pnpm build

- name: Run SSR benchmark
run: pnpm --filter @framework-tracker/stats-generator run:ssr ${{ matrix.framework.package }}
Expand Down
12 changes: 3 additions & 9 deletions .github/workflows/lint-and-type-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,8 @@ jobs:
node-version: '24'
cache: 'pnpm'

- name: Install dependencies
- name: Install workspace dependencies
run: pnpm install --frozen-lockfile

- name: Format check
run: pnpm format:check

- name: Lint
run: pnpm lint

- name: Type check
run: pnpm type-check
- name: Run all checks
run: pnpm check:all:ci
2 changes: 0 additions & 2 deletions .github/workflows/sync-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ on:
jobs:
check-versions:
runs-on: ubuntu-latest
# Skip PR events from bots to avoid loops; always run for workflow_dispatch
if: github.event_name != 'pull_request' || github.event.pull_request.user.type != 'Bot'
steps:
- name: Checkout code
uses: actions/checkout@v4
Expand Down
13 changes: 10 additions & 3 deletions .github/workflows/validate-stats.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,17 @@ jobs:
node-version: '24'
cache: 'pnpm'

- name: Install dependencies
- name: Install workspace dependencies
run: pnpm install --frozen-lockfile

- name: Install all package dependencies
run: |
FRAMEWORKS=$(cat .github/frameworks.json)
for PKG in $(echo "$FRAMEWORKS" | jq -r '.[].starter.package // empty, .[].app.package // empty'); do
echo "Installing $PKG..."
(cd packages/$PKG && pnpm install --frozen-lockfile --ignore-workspace)
done

- name: Run all benchmarks and validate
run: |
set -e
Expand All @@ -37,9 +45,8 @@ jobs:
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.app)' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.app.package')
BUILD_SCRIPT=$(echo "$framework" | jq -r '.app.buildScript')
echo "Building $PKG..."
pnpm $BUILD_SCRIPT
(cd packages/$PKG && pnpm build)
echo "Running SSR benchmark for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:ssr $PKG
done
Expand Down
31 changes: 7 additions & 24 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,18 @@
"dev:docs": "pnpm --filter @framework-tracker/docs dev",
"build:docs": "pnpm --filter @framework-tracker/docs build",
"preview:docs": "pnpm --filter @framework-tracker/docs preview",
"dev:next": "pnpm --filter starter-next-js dev",
"build:next": "pnpm --filter starter-next-js build",
"dev:react-router": "pnpm --filter starter-react-router dev",
"build:react-router": "pnpm --filter starter-react-router build",
"dev:tanstack": "pnpm --filter starter-tanstack-start-react dev",
"build:tanstack": "pnpm --filter starter-tanstack-start-react build",
"dev:nuxt": "pnpm --filter starter-nuxt dev",
"build:nuxt": "pnpm --filter starter-nuxt build",
"dev:sveltekit": "pnpm --filter starter-sveltekit dev",
"build:sveltekit": "pnpm --filter starter-sveltekit build",
"dev:astro": "pnpm --filter starter-astro dev",
"build:astro": "pnpm --filter starter-astro build",
"dev:mastro": "pnpm --filter starter-mastro dev",
"build:mastro": "pnpm --filter starter-mastro build",
"dev:solid-start": "pnpm --filter starter-solid-start dev",
"build:solid-start": "pnpm --filter starter-solid-start build",
"build:app-astro": "pnpm --filter app-astro build",
"build:app-nuxt": "pnpm --filter app-nuxt build",
"build:app-sveltekit": "pnpm --filter app-sveltekit build",
"build:app-next-js": "pnpm --filter app-next-js build",
"build:app-react-router": "pnpm --filter app-react-router build",
"build:app-solid-start": "pnpm --filter app-solid-start build",
"build:app-tanstack-start-react": "pnpm --filter app-tanstack-start-react build",
"collect:stats": "pnpm --filter @framework-tracker/stats-generator collect",
"lint": "pnpm -r --parallel lint",
"lint:fix": "pnpm -r --parallel lint:fix",
"lint:all": "pnpm lint && for dir in packages/starter-* packages/app-*; do if [ -f \"$dir/eslint.config.js\" ] || [ -f \"$dir/eslint.config.mjs\" ]; then echo \"Linting $dir...\" && (cd \"$dir\" && npx eslint .); fi; done",
"format": "prettier --write .",
"format:check": "prettier --check .",
"type-check": "pnpm -r --parallel type-check"
"type-check": "pnpm -r --parallel type-check",
"type-check:all": "pnpm type-check && for pkg in packages/starter-* packages/app-*; do (cd \"$pkg\" && pnpm run --if-present type-check); done",
"install:all": "for pkg in packages/starter-* packages/app-*; do (cd \"$pkg\" && pnpm install --ignore-workspace); done",
"install:all:frozen": "for pkg in packages/starter-* packages/app-*; do (cd \"$pkg\" && pnpm install --frozen-lockfile --ignore-workspace); done",
"check:all": "pnpm install:all && pnpm format:check && pnpm lint:all && pnpm type-check:all",
"check:all:ci": "pnpm install:all:frozen && pnpm format:check && pnpm lint:all && pnpm type-check:all"
},
"devDependencies": {
"@eslint/js": "^9.39.2",
Expand Down
9 changes: 6 additions & 3 deletions packages/app-astro/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@
"type-check": "astro check"
},
"dependencies": {
"astro": "^5.16.15",
"@astrojs/node": "^9.2.2",
"@framework-tracker/testdata": "workspace:*"
"@astrojs/node": "9.5.2",
"astro": "5.16.15"
},
"devDependencies": {
"@astrojs/check": "^0.9.6",
"typescript": "^5.9.3"
}
}
Loading
Loading