Authentication
Email, passwordless, OAuth, confirmation, recovery, and protected-route foundations.
A reusable foundation for identity, billing, profiles, localisation, and the tooling required to extend your product.
These are implemented routes, policies, database contracts, and components. They are not roadmap placeholders.
View the full feature setEmail, passwordless, OAuth, confirmation, recovery, and protected-route foundations.
Shared profile contracts, onboarding policies, private media, and organisation-ready services.
Subscription state, entitlements, checkout flows, and configurable paywall boundaries.
Application-owned locale policy, catalogues, persistence, and language handoff support.
Responsive navigation, metadata, crawler discovery, themes, and accessible presentation components.
Typed contracts, database migrations, verification suites, upgrade metadata, and repository guidance.
The starter separates CLI-managed implementation from application-owned branding, policy, translations, styles, and demo presentation.
Shared authentication, profile, route, database, billing, and compatibility code can be upgraded as one protected foundation.
src/supacharger/ src/app/(supacharger)/ src/lib/supabase/supacharger/Product configuration, locale policy, catalogues, project styles, and demo components remain under application control.
src/supacharger.config.ts messages/ src/styles/project.css src/components/sc_demo/ src/components/sc_widgets/Supabase migrations, private app tables, public API RPCs, trusted service RPCs, Stripe routes, and image processing are included.
supabase/migrations/ supabase/functions/ docs/bruno/supacharger-rpc/The page reads exact dependency versions from package.json. Shared runtime packages are pinned for reproducible CLI updates.
This is the repository's current file, rendered directly from source so every script, dependency, development tool, and override is visible.
{
"name": "supacharger",
"version": "0.0.1",
"private": true,
"packageManager": "npm@11.13.0",
"engines": {
"node": ">=22"
},
"scripts": {
"dev": "NODE_OPTIONS='--trace-deprecation --max-http-header-size=32768' next dev --port 3400",
"build": "next build",
"start": "next start",
"lint": "eslint .",
"typecheck": "tsc --noEmit",
"stripe:listen": "stripe listen --forward-to=localhost:3000/api/webhooks --project-name=default",
"generate-types": "supabase gen types typescript --db-url postgresql://postgres:postgres@127.0.0.1:54322/postgres --schema public,api,api_edge,app > src/lib/supabase/types.ts",
"supabase:link": "supabase link",
"migration:new": "supabase migration new",
"db:reset": "supabase db reset",
"db:lint": "supabase db lint --local",
"db:push:dry-run": "supabase db push --linked --dry-run",
"db:push:linked": "supabase db push --linked"
},
"dependencies": {
"@next/third-parties": "16.3.0",
"@radix-ui/react-accordion": "1.2.20",
"@radix-ui/react-alert-dialog": "1.1.23",
"@radix-ui/react-aspect-ratio": "1.1.15",
"@radix-ui/react-avatar": "1.2.6",
"@radix-ui/react-checkbox": "1.3.11",
"@radix-ui/react-collapsible": "1.1.20",
"@radix-ui/react-context-menu": "2.3.7",
"@radix-ui/react-dialog": "1.1.23",
"@radix-ui/react-dropdown-menu": "2.1.24",
"@radix-ui/react-hover-card": "1.1.23",
"@radix-ui/react-label": "2.1.15",
"@radix-ui/react-menubar": "1.1.24",
"@radix-ui/react-navigation-menu": "1.2.22",
"@radix-ui/react-one-time-password-field": "0.1.16",
"@radix-ui/react-popover": "1.1.23",
"@radix-ui/react-progress": "1.1.16",
"@radix-ui/react-radio-group": "1.4.7",
"@radix-ui/react-scroll-area": "1.2.18",
"@radix-ui/react-select": "2.3.7",
"@radix-ui/react-separator": "1.1.15",
"@radix-ui/react-slider": "1.4.7",
"@radix-ui/react-slot": "1.3.3",
"@radix-ui/react-switch": "1.3.7",
"@radix-ui/react-tabs": "1.1.21",
"@radix-ui/react-toggle": "1.1.18",
"@radix-ui/react-toggle-group": "1.1.19",
"@radix-ui/react-tooltip": "1.2.16",
"@supabase/ssr": "0.12.4",
"@supabase/supabase-js": "2.112.3",
"@vercel/analytics": "1.6.1",
"class-variance-authority": "0.7.1",
"clsx": "2.1.1",
"cmdk": "1.1.1",
"email-validator": "2.0.4",
"embla-carousel-react": "8.6.0",
"input-otp": "1.4.2",
"lucide-react": "1.31.0",
"motion": "13.1.0",
"next": "16.3.2",
"next-intl": "4.13.6",
"next-themes": "0.4.6",
"react": "19.2.8",
"react-animate-height": "^3.2.4",
"react-day-picker": "9.14.0",
"react-dom": "19.2.8",
"react-hook-form": "7.85.0",
"react-resizable-panels": "3.0.6",
"react-toastify": "11.1.0",
"recharts": "2.15.4",
"server-only": "0.0.1",
"sonner": "2.0.8",
"stripe": "22.5.0",
"tailwind-merge": "3.6.0",
"tailwindcss": "4.3.3",
"typewriter-effect": "^2.22.0",
"vaul": "1.1.2",
"zod": "4.4.3"
},
"devDependencies": {
"@svgr/webpack": "8.1.0",
"@tailwindcss/postcss": "4.3.3",
"@types/node": "22.20.1",
"@types/react": "19.2.18",
"@types/react-dom": "19.2.4",
"env-cmd": "10.1.0",
"eslint": "9.39.4",
"eslint-config-next": "16.3.0",
"eslint-plugin-simple-import-sort": "13.0.0",
"postcss": "8.5.26",
"prettier": "3.9.6",
"prettier-plugin-tailwindcss": "0.8.1",
"supabase": "2.115.0",
"tw-animate-css": "1.4.0",
"typescript": "5.9.3"
},
"overrides": {
"@babel/plugin-transform-modules-systemjs": "7.29.8",
"@types/react": "19.2.18",
"@types/react-dom": "19.2.4",
"micromatch": {
"picomatch": "2.3.2"
},
"svgo": "3.3.4",
"whatwg-url": "^14.1.0"
}
}