create-stacksfinder 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +330 -330
- package/dist/index.js +114 -1203
- package/dist/templates/auth/auth0/astro/src/components/auth/AuthButton.tsx +39 -0
- package/dist/templates/auth/auth0/astro/src/components/auth/UserProfile.tsx +103 -0
- package/dist/templates/auth/auth0/astro/src/lib/auth0.ts +84 -0
- package/dist/templates/auth/auth0/astro/src/pages/callback.astro +28 -0
- package/dist/templates/auth/auth0/astro/src/pages/login.astro +15 -0
- package/dist/templates/auth/auth0/nextjs/api/auth/[auth0]/route.ts +11 -0
- package/dist/templates/auth/auth0/nextjs/components/auth-button.tsx +31 -0
- package/dist/templates/auth/auth0/nextjs/components/user-profile.tsx +87 -0
- package/dist/templates/auth/auth0/nextjs/lib/auth0.ts +39 -0
- package/dist/templates/auth/auth0/nextjs/middleware.ts +33 -0
- package/dist/templates/auth/auth0/nuxt/components/AuthButton.vue +17 -0
- package/dist/templates/auth/auth0/nuxt/components/UserProfile.vue +70 -0
- package/dist/templates/auth/auth0/nuxt/composables/useAuth0.ts +40 -0
- package/dist/templates/auth/auth0/nuxt/pages/callback.vue +28 -0
- package/dist/templates/auth/auth0/nuxt/pages/login.vue +42 -0
- package/dist/templates/auth/auth0/nuxt/plugins/auth0.ts +18 -0
- package/dist/templates/auth/auth0/remix/app/components/auth/auth-button.tsx +36 -0
- package/dist/templates/auth/auth0/remix/app/components/auth/user-profile.tsx +104 -0
- package/dist/templates/auth/auth0/remix/app/lib/auth0.ts +95 -0
- package/dist/templates/auth/auth0/remix/app/routes/callback.tsx +29 -0
- package/dist/templates/auth/auth0/remix/app/routes/login.tsx +48 -0
- package/dist/templates/auth/auth0/remix/app/routes/logout.tsx +17 -0
- package/dist/templates/auth/auth0/solidstart/src/components/auth/auth-button.tsx +51 -0
- package/dist/templates/auth/auth0/solidstart/src/components/auth/user-profile.tsx +62 -0
- package/dist/templates/auth/auth0/solidstart/src/lib/auth0.ts +51 -0
- package/dist/templates/auth/auth0/solidstart/src/routes/callback.tsx +30 -0
- package/dist/templates/auth/auth0/solidstart/src/routes/login.tsx +21 -0
- package/dist/templates/auth/auth0/sveltekit/components/AuthButton.svelte +12 -0
- package/dist/templates/auth/auth0/sveltekit/components/UserProfile.svelte +74 -0
- package/dist/templates/auth/auth0/sveltekit/hooks.client.ts +4 -0
- package/dist/templates/auth/auth0/sveltekit/lib/auth0.ts +131 -0
- package/dist/templates/auth/auth0/sveltekit/routes/(auth)/callback/+page.svelte +17 -0
- package/dist/templates/auth/auth0/sveltekit/routes/(auth)/login/+page.svelte +37 -0
- package/dist/templates/auth/auth0/tanstack-start/app/components/auth/auth-button.tsx +52 -0
- package/dist/templates/auth/auth0/tanstack-start/app/lib/auth0.ts +51 -0
- package/dist/templates/auth/auth0/tanstack-start/app/routes/callback.tsx +33 -0
- package/dist/templates/auth/auth0/tanstack-start/app/routes/login.tsx +22 -0
- package/dist/templates/auth/authjs/astro/auth.config.ts.hbs +55 -0
- package/dist/templates/auth/authjs/astro/src/components/auth/AuthForm.tsx +171 -0
- package/dist/templates/auth/authjs/astro/src/components/auth/UserButton.tsx +108 -0
- package/dist/templates/auth/authjs/astro/src/lib/auth.ts.hbs +32 -0
- package/dist/templates/auth/authjs/astro/src/pages/api/auth/[...auth].ts +7 -0
- package/dist/templates/auth/authjs/astro/src/pages/login.astro +31 -0
- package/dist/templates/auth/authjs/astro/src/pages/register.astro +31 -0
- package/dist/templates/auth/authjs/nextjs/api/auth/[...nextauth]/route.ts +3 -0
- package/dist/templates/auth/authjs/nextjs/app/(auth)/layout.tsx +11 -0
- package/dist/templates/auth/authjs/nextjs/app/(auth)/login/page.tsx +25 -0
- package/dist/templates/auth/authjs/nextjs/app/(auth)/register/page.tsx +25 -0
- package/dist/templates/auth/authjs/nextjs/auth-client.ts +4 -0
- package/dist/templates/auth/authjs/nextjs/auth.ts.hbs +75 -0
- package/dist/templates/auth/authjs/nextjs/components/auth-form.tsx +177 -0
- package/dist/templates/auth/authjs/nextjs/components/user-button.tsx +84 -0
- package/dist/templates/auth/authjs/nextjs/middleware.ts +23 -0
- package/dist/templates/auth/authjs/nuxt/components/AuthForm.vue +144 -0
- package/dist/templates/auth/authjs/nuxt/components/UserButton.vue +80 -0
- package/dist/templates/auth/authjs/nuxt/composables/useAuth.ts +22 -0
- package/dist/templates/auth/authjs/nuxt/pages/login.vue +45 -0
- package/dist/templates/auth/authjs/nuxt/pages/register.vue +45 -0
- package/dist/templates/auth/authjs/nuxt/server/api/auth/[...].ts +61 -0
- package/dist/templates/auth/authjs/remix/app/components/auth/auth-form.tsx +121 -0
- package/dist/templates/auth/authjs/remix/app/components/auth/user-button.tsx +84 -0
- package/dist/templates/auth/authjs/remix/app/lib/auth.server.ts.hbs +49 -0
- package/dist/templates/auth/authjs/remix/app/lib/session.server.ts +16 -0
- package/dist/templates/auth/authjs/remix/app/routes/auth.login.tsx +9 -0
- package/dist/templates/auth/authjs/remix/app/routes/auth.logout.tsx +16 -0
- package/dist/templates/auth/authjs/remix/app/routes/login.tsx +45 -0
- package/dist/templates/auth/authjs/remix/app/routes/register.tsx +36 -0
- package/dist/templates/auth/authjs/sveltekit/auth.ts.hbs +72 -0
- package/dist/templates/auth/authjs/sveltekit/components/AuthForm.svelte +142 -0
- package/dist/templates/auth/authjs/sveltekit/components/UserButton.svelte +85 -0
- package/dist/templates/auth/authjs/sveltekit/hooks.server.ts +26 -0
- package/dist/templates/auth/authjs/sveltekit/routes/(auth)/login/+page.svelte +19 -0
- package/dist/templates/auth/authjs/sveltekit/routes/(auth)/register/+page.svelte +19 -0
- package/dist/templates/auth/better-auth/astro/src/components/auth/AuthForm.tsx +95 -0
- package/dist/templates/auth/better-auth/astro/src/components/auth/UserButton.tsx +90 -0
- package/dist/templates/auth/better-auth/astro/src/lib/auth-client.ts +7 -0
- package/dist/templates/auth/better-auth/astro/src/lib/auth.ts.hbs +29 -0
- package/dist/templates/auth/better-auth/astro/src/pages/api/auth/[...all].ts +6 -0
- package/dist/templates/auth/better-auth/astro/src/pages/login.astro +28 -0
- package/dist/templates/auth/better-auth/astro/src/pages/register.astro +28 -0
- package/dist/templates/auth/better-auth/nextjs/api/auth/[...all]/route.ts +4 -0
- package/dist/templates/auth/better-auth/nextjs/app/(auth)/layout.tsx +15 -0
- package/dist/templates/auth/better-auth/nextjs/app/(auth)/login/page.tsx +95 -0
- package/dist/templates/auth/better-auth/nextjs/app/(auth)/register/page.tsx +106 -0
- package/dist/templates/auth/better-auth/nextjs/auth-client.ts +7 -0
- package/dist/templates/auth/better-auth/nextjs/auth.ts.hbs +27 -0
- package/dist/templates/auth/better-auth/nextjs/components/auth-form.tsx +83 -0
- package/dist/templates/auth/better-auth/nextjs/components/user-button.tsx +97 -0
- package/dist/templates/auth/better-auth/nextjs/middleware.ts +43 -0
- package/dist/templates/auth/better-auth/nuxt/components/AuthForm.vue +57 -0
- package/dist/templates/auth/better-auth/nuxt/components/UserButton.vue +69 -0
- package/dist/templates/auth/better-auth/nuxt/composables/useAuth.ts +43 -0
- package/dist/templates/auth/better-auth/nuxt/middleware/auth.ts +16 -0
- package/dist/templates/auth/better-auth/nuxt/pages/login.vue +71 -0
- package/dist/templates/auth/better-auth/nuxt/pages/register.vue +73 -0
- package/dist/templates/auth/better-auth/nuxt/server/api/auth/[...all].ts +5 -0
- package/dist/templates/auth/better-auth/nuxt/server/utils/auth.ts.hbs +33 -0
- package/dist/templates/auth/better-auth/remix/app/components/auth/auth-form.tsx +81 -0
- package/dist/templates/auth/better-auth/remix/app/components/auth/user-button.tsx +92 -0
- package/dist/templates/auth/better-auth/remix/app/lib/auth.client.ts +28 -0
- package/dist/templates/auth/better-auth/remix/app/lib/auth.server.ts.hbs +29 -0
- package/dist/templates/auth/better-auth/remix/app/routes/api.auth.$.ts +10 -0
- package/dist/templates/auth/better-auth/remix/app/routes/login.tsx +103 -0
- package/dist/templates/auth/better-auth/remix/app/routes/register.tsx +116 -0
- package/dist/templates/auth/better-auth/solidstart/src/components/auth/auth-form.tsx +95 -0
- package/dist/templates/auth/better-auth/solidstart/src/components/auth/user-button.tsx +39 -0
- package/dist/templates/auth/better-auth/solidstart/src/lib/auth.client.ts +7 -0
- package/dist/templates/auth/better-auth/solidstart/src/lib/auth.server.ts.hbs +29 -0
- package/dist/templates/auth/better-auth/solidstart/src/routes/api/auth/[...all].ts +10 -0
- package/dist/templates/auth/better-auth/solidstart/src/routes/login.tsx +86 -0
- package/dist/templates/auth/better-auth/solidstart/src/routes/register.tsx +100 -0
- package/dist/templates/auth/better-auth/sveltekit/auth-client.ts +5 -0
- package/dist/templates/auth/better-auth/sveltekit/auth.ts.hbs +29 -0
- package/dist/templates/auth/better-auth/sveltekit/components/AuthForm.svelte +71 -0
- package/dist/templates/auth/better-auth/sveltekit/components/UserButton.svelte +80 -0
- package/dist/templates/auth/better-auth/sveltekit/routes/(auth)/login/+page.svelte +84 -0
- package/dist/templates/auth/better-auth/sveltekit/routes/(auth)/register/+page.svelte +95 -0
- package/dist/templates/auth/better-auth/tanstack-start/app/components/auth/auth-form.tsx +111 -0
- package/dist/templates/auth/better-auth/tanstack-start/app/components/auth/user-button.tsx +43 -0
- package/dist/templates/auth/better-auth/tanstack-start/app/lib/auth.client.ts +7 -0
- package/dist/templates/auth/better-auth/tanstack-start/app/lib/auth.server.ts.hbs +29 -0
- package/dist/templates/auth/better-auth/tanstack-start/app/routes/api.auth.$.ts +11 -0
- package/dist/templates/auth/better-auth/tanstack-start/app/routes/login.tsx +83 -0
- package/dist/templates/auth/better-auth/tanstack-start/app/routes/register.tsx +96 -0
- package/dist/templates/auth/clerk/nextjs/app/(auth)/sign-in/[[...sign-in]]/page.tsx +17 -0
- package/dist/templates/auth/clerk/nextjs/app/(auth)/sign-up/[[...sign-up]]/page.tsx +17 -0
- package/dist/templates/auth/clerk/nextjs/middleware.ts +24 -0
- package/dist/templates/auth/lucia/nextjs/app/(auth)/layout.tsx +13 -0
- package/dist/templates/auth/lucia/nextjs/app/(auth)/login/page.tsx +25 -0
- package/dist/templates/auth/lucia/nextjs/app/(auth)/register/page.tsx +25 -0
- package/dist/templates/auth/lucia/nextjs/auth-actions.ts +137 -0
- package/dist/templates/auth/lucia/nextjs/auth.ts.hbs +49 -0
- package/dist/templates/auth/lucia/nextjs/components/auth-form.tsx +64 -0
- package/dist/templates/auth/lucia/nextjs/components/user-button.tsx +40 -0
- package/dist/templates/auth/lucia/nextjs/middleware.ts +42 -0
- package/dist/templates/auth/lucia/nextjs/validate-request.ts +42 -0
- package/dist/templates/auth/lucia/sveltekit/app.d.ts +14 -0
- package/dist/templates/auth/lucia/sveltekit/auth.ts.hbs +49 -0
- package/dist/templates/auth/lucia/sveltekit/components/UserButton.svelte +38 -0
- package/dist/templates/auth/lucia/sveltekit/hooks.server.ts +35 -0
- package/dist/templates/auth/lucia/sveltekit/routes/(auth)/login/+page.server.ts +61 -0
- package/dist/templates/auth/lucia/sveltekit/routes/(auth)/login/+page.svelte +67 -0
- package/dist/templates/auth/lucia/sveltekit/routes/(auth)/register/+page.server.ts +71 -0
- package/dist/templates/auth/lucia/sveltekit/routes/(auth)/register/+page.svelte +75 -0
- package/dist/templates/auth/supabase/astro/src/components/auth/AuthForm.tsx +153 -0
- package/dist/templates/auth/supabase/astro/src/components/auth/UserButton.tsx +74 -0
- package/dist/templates/auth/supabase/astro/src/lib/supabase.ts +42 -0
- package/dist/templates/auth/supabase/astro/src/pages/auth/callback.ts +19 -0
- package/dist/templates/auth/supabase/astro/src/pages/login.astro +27 -0
- package/dist/templates/auth/supabase/astro/src/pages/register.astro +27 -0
- package/dist/templates/auth/supabase/nextjs/app/(auth)/layout.tsx +11 -0
- package/dist/templates/auth/supabase/nextjs/app/(auth)/login/page.tsx +13 -0
- package/dist/templates/auth/supabase/nextjs/app/(auth)/register/page.tsx +13 -0
- package/dist/templates/auth/supabase/nextjs/app/auth/callback/route.ts +28 -0
- package/dist/templates/auth/supabase/nextjs/components/auth-form.tsx +177 -0
- package/dist/templates/auth/supabase/nextjs/components/user-button.tsx +79 -0
- package/dist/templates/auth/supabase/nextjs/middleware.ts +69 -0
- package/dist/templates/auth/supabase/nextjs/supabase-client.ts +8 -0
- package/dist/templates/auth/supabase/nextjs/supabase-server.ts +29 -0
- package/dist/templates/auth/supabase/nuxt/components/AuthForm.vue +133 -0
- package/dist/templates/auth/supabase/nuxt/components/UserButton.vue +64 -0
- package/dist/templates/auth/supabase/nuxt/composables/useSupabaseAuth.ts +54 -0
- package/dist/templates/auth/supabase/nuxt/pages/auth/callback.vue +25 -0
- package/dist/templates/auth/supabase/nuxt/pages/login.vue +121 -0
- package/dist/templates/auth/supabase/nuxt/pages/register.vue +121 -0
- package/dist/templates/auth/supabase/remix/app/components/auth/auth-form.tsx +155 -0
- package/dist/templates/auth/supabase/remix/app/components/auth/user-button.tsx +76 -0
- package/dist/templates/auth/supabase/remix/app/lib/supabase.client.ts +18 -0
- package/dist/templates/auth/supabase/remix/app/lib/supabase.server.ts +31 -0
- package/dist/templates/auth/supabase/remix/app/routes/auth.callback.tsx +20 -0
- package/dist/templates/auth/supabase/remix/app/routes/login.tsx +140 -0
- package/dist/templates/auth/supabase/remix/app/routes/register.tsx +143 -0
- package/dist/templates/auth/supabase/sveltekit/components/AuthForm.svelte +158 -0
- package/dist/templates/auth/supabase/sveltekit/components/UserButton.svelte +78 -0
- package/dist/templates/auth/supabase/sveltekit/hooks.server.ts +85 -0
- package/dist/templates/auth/supabase/sveltekit/routes/(auth)/login/+page.svelte +19 -0
- package/dist/templates/auth/supabase/sveltekit/routes/(auth)/register/+page.svelte +19 -0
- package/dist/templates/auth/supabase/sveltekit/routes/auth/callback/+server.ts +16 -0
- package/dist/templates/auth/supabase/sveltekit/supabase-client.ts +19 -0
- package/dist/templates/auth/supabase/sveltekit/supabase-server.ts +21 -0
- package/dist/templates/backend/elysia/src/index.ts.hbs +33 -0
- package/dist/templates/backend/elysia/src/lib/db.ts.hbs +74 -0
- package/dist/templates/backend/elysia/src/lib/env.ts +19 -0
- package/dist/templates/backend/elysia/src/middleware/auth.ts.hbs +56 -0
- package/dist/templates/backend/elysia/src/routes/auth.ts.hbs +77 -0
- package/dist/templates/backend/elysia/src/routes/health.ts +11 -0
- package/dist/templates/backend/elysia/src/routes/index.ts +6 -0
- package/dist/templates/backend/elysia/tsconfig.api.json +18 -0
- package/dist/templates/backend/express/src/index.ts.hbs +44 -0
- package/dist/templates/backend/express/src/lib/db.ts.hbs +61 -0
- package/dist/templates/backend/express/src/lib/env.ts +13 -0
- package/dist/templates/backend/express/src/middleware/auth.ts.hbs +70 -0
- package/dist/templates/backend/express/src/middleware/error.ts +47 -0
- package/dist/templates/backend/express/src/middleware/validate.ts +35 -0
- package/dist/templates/backend/express/src/routes/auth.ts.hbs +87 -0
- package/dist/templates/backend/express/src/routes/health.ts +19 -0
- package/dist/templates/backend/express/src/routes/index.ts +11 -0
- package/dist/templates/backend/express/tsconfig.api.json +19 -0
- package/dist/templates/backend/fastify/src/index.ts.hbs +50 -0
- package/dist/templates/backend/fastify/src/lib/db.ts.hbs +61 -0
- package/dist/templates/backend/fastify/src/lib/env.ts +13 -0
- package/dist/templates/backend/fastify/src/plugins/auth.ts.hbs +77 -0
- package/dist/templates/backend/fastify/src/plugins/cors.ts +24 -0
- package/dist/templates/backend/fastify/src/plugins/swagger.ts +38 -0
- package/dist/templates/backend/fastify/src/routes/auth.ts.hbs +161 -0
- package/dist/templates/backend/fastify/src/routes/health.ts +51 -0
- package/dist/templates/backend/fastify/src/routes/index.ts +14 -0
- package/dist/templates/backend/fastify/src/schemas/common.ts +58 -0
- package/dist/templates/backend/fastify/tsconfig.api.json +19 -0
- package/dist/templates/backend/hono/src/index.ts.hbs +74 -0
- package/dist/templates/backend/hono/src/lib/db.ts.hbs +50 -0
- package/dist/templates/backend/hono/src/lib/env.ts +27 -0
- package/dist/templates/backend/hono/src/middleware/auth.ts.hbs +55 -0
- package/dist/templates/backend/hono/src/middleware/cors.ts +14 -0
- package/dist/templates/backend/hono/src/middleware/logger.ts +19 -0
- package/dist/templates/backend/hono/src/routes/auth.ts.hbs +139 -0
- package/dist/templates/backend/hono/src/routes/health.ts +25 -0
- package/dist/templates/backend/hono/src/routes/index.ts +26 -0
- package/dist/templates/backend/hono/tsconfig.api.json +19 -0
- package/dist/templates/base/README.md.hbs +284 -0
- package/dist/templates/base/env.example.hbs +105 -0
- package/dist/templates/base/gitignore +48 -0
- package/dist/templates/database/drizzle/drizzle.config.ts.hbs +18 -0
- package/dist/templates/database/drizzle/index.ts.hbs +22 -0
- package/dist/templates/database/drizzle/schema.ts.hbs +210 -0
- package/dist/templates/database/kysely/db.ts.hbs +55 -0
- package/dist/templates/database/kysely/kysely.config.ts.hbs +42 -0
- package/dist/templates/database/kysely/migrations/001_initial.ts.hbs +97 -0
- package/dist/templates/database/kysely/types.ts.hbs +66 -0
- package/dist/templates/database/mongoose/connection.ts.hbs +70 -0
- package/dist/templates/database/mongoose/index.ts +8 -0
- package/dist/templates/database/mongoose/models/index.ts +4 -0
- package/dist/templates/database/mongoose/models/user.ts.hbs +55 -0
- package/dist/templates/database/prisma/client.ts +14 -0
- package/dist/templates/database/prisma/schema.prisma.hbs +98 -0
- package/dist/templates/frameworks/astro/astro.config.mjs.hbs +23 -0
- package/dist/templates/frameworks/astro/src/components/Footer.astro +81 -0
- package/dist/templates/frameworks/astro/src/components/Header.astro.hbs +67 -0
- package/dist/templates/frameworks/astro/src/components/Sidebar.astro.hbs +45 -0
- package/dist/templates/frameworks/astro/src/components/ui/Button.tsx +35 -0
- package/dist/templates/frameworks/astro/src/components/ui/Card.tsx +93 -0
- package/dist/templates/frameworks/astro/src/components/ui/Input.tsx +44 -0
- package/dist/templates/frameworks/astro/src/env.d.ts +1 -0
- package/dist/templates/frameworks/astro/src/layouts/DashboardLayout.astro.hbs +36 -0
- package/dist/templates/frameworks/astro/src/layouts/Layout.astro.hbs +36 -0
- package/dist/templates/frameworks/astro/src/lib/utils.ts +6 -0
- package/dist/templates/frameworks/astro/src/pages/dashboard/billing.astro.hbs +86 -0
- package/dist/templates/frameworks/astro/src/pages/dashboard/index.astro.hbs +78 -0
- package/dist/templates/frameworks/astro/src/pages/dashboard/settings.astro +64 -0
- package/dist/templates/frameworks/astro/src/pages/index.astro.hbs +132 -0
- package/dist/templates/frameworks/astro/src/pages/pricing.astro.hbs +145 -0
- package/dist/templates/frameworks/astro/src/styles/global.css +9 -0
- package/dist/templates/frameworks/astro/tailwind.config.ts +34 -0
- package/dist/templates/frameworks/astro/tsconfig.json +11 -0
- package/dist/templates/frameworks/nextjs/app/(dashboard)/billing/page.tsx.hbs +102 -0
- package/dist/templates/frameworks/nextjs/app/(dashboard)/dashboard/page.tsx.hbs +79 -0
- package/dist/templates/frameworks/nextjs/app/(dashboard)/layout.tsx.hbs +81 -0
- package/dist/templates/frameworks/nextjs/app/(dashboard)/settings/page.tsx.hbs +92 -0
- package/dist/templates/frameworks/nextjs/app/(marketing)/layout.tsx +16 -0
- package/dist/templates/frameworks/nextjs/app/(marketing)/pricing/page.tsx.hbs +127 -0
- package/dist/templates/frameworks/nextjs/app/globals.css +3 -0
- package/dist/templates/frameworks/nextjs/app/layout.tsx.hbs +33 -0
- package/dist/templates/frameworks/nextjs/app/page.tsx.hbs +149 -0
- package/dist/templates/frameworks/nextjs/components/footer.tsx +107 -0
- package/dist/templates/frameworks/nextjs/components/header.tsx.hbs +95 -0
- package/dist/templates/frameworks/nextjs/components/sidebar.tsx.hbs +44 -0
- package/dist/templates/frameworks/nextjs/components/ui/button.tsx +35 -0
- package/dist/templates/frameworks/nextjs/components/ui/card.tsx +93 -0
- package/dist/templates/frameworks/nextjs/components/ui/input.tsx +44 -0
- package/dist/templates/frameworks/nextjs/lib/utils.ts +6 -0
- package/dist/templates/frameworks/nextjs/next.config.ts.hbs +26 -0
- package/dist/templates/frameworks/nextjs/postcss.config.js +6 -0
- package/dist/templates/frameworks/nextjs/tailwind.config.ts +38 -0
- package/dist/templates/frameworks/nextjs/tsconfig.json +27 -0
- package/dist/templates/frameworks/nuxt/app.vue.hbs +5 -0
- package/dist/templates/frameworks/nuxt/assets/css/main.css +9 -0
- package/dist/templates/frameworks/nuxt/components/Footer.vue +26 -0
- package/dist/templates/frameworks/nuxt/components/Header.vue.hbs +54 -0
- package/dist/templates/frameworks/nuxt/components/Sidebar.vue.hbs +47 -0
- package/dist/templates/frameworks/nuxt/components/ui/Button.vue +47 -0
- package/dist/templates/frameworks/nuxt/components/ui/Card.vue +17 -0
- package/dist/templates/frameworks/nuxt/components/ui/Input.vue +35 -0
- package/dist/templates/frameworks/nuxt/layouts/dashboard.vue.hbs +21 -0
- package/dist/templates/frameworks/nuxt/layouts/default.vue.hbs +13 -0
- package/dist/templates/frameworks/nuxt/nuxt.config.ts.hbs +42 -0
- package/dist/templates/frameworks/nuxt/pages/dashboard/billing.vue.hbs +88 -0
- package/dist/templates/frameworks/nuxt/pages/dashboard/index.vue.hbs +67 -0
- package/dist/templates/frameworks/nuxt/pages/dashboard/settings.vue +53 -0
- package/dist/templates/frameworks/nuxt/pages/index.vue.hbs +71 -0
- package/dist/templates/frameworks/nuxt/pages/pricing.vue.hbs +107 -0
- package/dist/templates/frameworks/nuxt/tailwind.config.ts +41 -0
- package/dist/templates/frameworks/nuxt/tsconfig.json +3 -0
- package/dist/templates/frameworks/nuxt/utils/cn.ts +6 -0
- package/dist/templates/frameworks/remix/app/components/footer.tsx +107 -0
- package/dist/templates/frameworks/remix/app/components/header.tsx.hbs +70 -0
- package/dist/templates/frameworks/remix/app/components/sidebar.tsx.hbs +48 -0
- package/dist/templates/frameworks/remix/app/components/ui/button.tsx +35 -0
- package/dist/templates/frameworks/remix/app/components/ui/card.tsx +93 -0
- package/dist/templates/frameworks/remix/app/components/ui/input.tsx +44 -0
- package/dist/templates/frameworks/remix/app/entry.client.tsx +12 -0
- package/dist/templates/frameworks/remix/app/entry.server.tsx +125 -0
- package/dist/templates/frameworks/remix/app/lib/utils.ts +6 -0
- package/dist/templates/frameworks/remix/app/root.tsx.hbs +66 -0
- package/dist/templates/frameworks/remix/app/routes/_index.tsx.hbs +148 -0
- package/dist/templates/frameworks/remix/app/routes/dashboard._index.tsx.hbs +85 -0
- package/dist/templates/frameworks/remix/app/routes/dashboard.billing.tsx.hbs +97 -0
- package/dist/templates/frameworks/remix/app/routes/dashboard.settings.tsx +67 -0
- package/dist/templates/frameworks/remix/app/routes/dashboard.tsx.hbs +40 -0
- package/dist/templates/frameworks/remix/app/routes/pricing.tsx.hbs +157 -0
- package/dist/templates/frameworks/remix/app/tailwind.css +1 -0
- package/dist/templates/frameworks/remix/tailwind.config.ts +34 -0
- package/dist/templates/frameworks/remix/tsconfig.json +30 -0
- package/dist/templates/frameworks/remix/vite.config.ts.hbs +26 -0
- package/dist/templates/frameworks/solidstart/app.config.ts +11 -0
- package/dist/templates/frameworks/solidstart/src/app.css +1 -0
- package/dist/templates/frameworks/solidstart/src/app.tsx.hbs +21 -0
- package/dist/templates/frameworks/solidstart/src/components/Footer.tsx +86 -0
- package/dist/templates/frameworks/solidstart/src/components/Header.tsx.hbs +35 -0
- package/dist/templates/frameworks/solidstart/src/components/Sidebar.tsx.hbs +40 -0
- package/dist/templates/frameworks/solidstart/src/components/ui/Button.tsx +41 -0
- package/dist/templates/frameworks/solidstart/src/components/ui/Card.tsx +74 -0
- package/dist/templates/frameworks/solidstart/src/components/ui/Input.tsx +43 -0
- package/dist/templates/frameworks/solidstart/src/entry-client.tsx +4 -0
- package/dist/templates/frameworks/solidstart/src/entry-server.tsx +31 -0
- package/dist/templates/frameworks/solidstart/src/lib/utils.ts +6 -0
- package/dist/templates/frameworks/solidstart/src/routes/dashboard/billing.tsx.hbs +81 -0
- package/dist/templates/frameworks/solidstart/src/routes/dashboard/index.tsx.hbs +67 -0
- package/dist/templates/frameworks/solidstart/src/routes/dashboard/settings.tsx +51 -0
- package/dist/templates/frameworks/solidstart/src/routes/dashboard.tsx.hbs +13 -0
- package/dist/templates/frameworks/solidstart/src/routes/index.tsx.hbs +144 -0
- package/dist/templates/frameworks/solidstart/src/routes/pricing.tsx.hbs +91 -0
- package/dist/templates/frameworks/solidstart/tailwind.config.ts +21 -0
- package/dist/templates/frameworks/solidstart/tsconfig.json +20 -0
- package/dist/templates/frameworks/sveltekit/app.css +1 -0
- package/dist/templates/frameworks/sveltekit/app.d.ts.hbs +20 -0
- package/dist/templates/frameworks/sveltekit/app.html.hbs +13 -0
- package/dist/templates/frameworks/sveltekit/components/Footer.svelte +58 -0
- package/dist/templates/frameworks/sveltekit/components/Header.svelte.hbs +67 -0
- package/dist/templates/frameworks/sveltekit/components/Sidebar.svelte.hbs +30 -0
- package/dist/templates/frameworks/sveltekit/components/ui/Button.svelte +45 -0
- package/dist/templates/frameworks/sveltekit/components/ui/Card.svelte +13 -0
- package/dist/templates/frameworks/sveltekit/components/ui/Input.svelte +65 -0
- package/dist/templates/frameworks/sveltekit/hooks.server.ts.hbs +30 -0
- package/dist/templates/frameworks/sveltekit/lib/utils.ts +6 -0
- package/dist/templates/frameworks/sveltekit/routes/(app)/+layout.server.ts.hbs +17 -0
- package/dist/templates/frameworks/sveltekit/routes/(app)/+layout.svelte.hbs +46 -0
- package/dist/templates/frameworks/sveltekit/routes/(app)/billing/+page.svelte.hbs +89 -0
- package/dist/templates/frameworks/sveltekit/routes/(app)/dashboard/+page.svelte +37 -0
- package/dist/templates/frameworks/sveltekit/routes/(app)/settings/+page.svelte +66 -0
- package/dist/templates/frameworks/sveltekit/routes/(marketing)/pricing/+page.svelte.hbs +113 -0
- package/dist/templates/frameworks/sveltekit/routes/+layout.svelte.hbs +6 -0
- package/dist/templates/frameworks/sveltekit/routes/+page.svelte.hbs +81 -0
- package/dist/templates/frameworks/sveltekit/svelte.config.js +16 -0
- package/dist/templates/frameworks/sveltekit/tsconfig.json +14 -0
- package/dist/templates/frameworks/sveltekit/vite.config.ts.hbs +6 -0
- package/dist/templates/frameworks/tanstack-start/app/client.tsx +8 -0
- package/dist/templates/frameworks/tanstack-start/app/components/footer.tsx +107 -0
- package/dist/templates/frameworks/tanstack-start/app/components/header.tsx.hbs +35 -0
- package/dist/templates/frameworks/tanstack-start/app/components/sidebar.tsx.hbs +41 -0
- package/dist/templates/frameworks/tanstack-start/app/components/ui/button.tsx +35 -0
- package/dist/templates/frameworks/tanstack-start/app/components/ui/card.tsx +93 -0
- package/dist/templates/frameworks/tanstack-start/app/components/ui/input.tsx +45 -0
- package/dist/templates/frameworks/tanstack-start/app/global.css +1 -0
- package/dist/templates/frameworks/tanstack-start/app/lib/utils.ts +6 -0
- package/dist/templates/frameworks/tanstack-start/app/router.tsx +17 -0
- package/dist/templates/frameworks/tanstack-start/app/routes/__root.tsx.hbs +38 -0
- package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.billing.tsx.hbs +82 -0
- package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.index.tsx.hbs +68 -0
- package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.settings.tsx +52 -0
- package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.tsx.hbs +17 -0
- package/dist/templates/frameworks/tanstack-start/app/routes/index.tsx.hbs +144 -0
- package/dist/templates/frameworks/tanstack-start/app/routes/pricing.tsx.hbs +91 -0
- package/dist/templates/frameworks/tanstack-start/app/ssr.tsx +12 -0
- package/dist/templates/frameworks/tanstack-start/app.config.ts +12 -0
- package/dist/templates/frameworks/tanstack-start/tailwind.config.ts +21 -0
- package/dist/templates/frameworks/tanstack-start/tsconfig.json +22 -0
- package/dist/templates/payments/lemonsqueezy/astro/src/components/pricing/LemonSqueezyCheckout.tsx +86 -0
- package/dist/templates/payments/lemonsqueezy/astro/src/lib/lemonsqueezy.ts +74 -0
- package/dist/templates/payments/lemonsqueezy/astro/src/pages/api/webhooks/lemonsqueezy.ts.hbs +110 -0
- package/dist/templates/payments/lemonsqueezy/nextjs/api/webhooks/lemonsqueezy/route.ts.hbs +107 -0
- package/dist/templates/payments/lemonsqueezy/nextjs/components/lemonsqueezy-checkout.tsx +89 -0
- package/dist/templates/payments/lemonsqueezy/nextjs/lib/lemonsqueezy.ts +74 -0
- package/dist/templates/payments/lemonsqueezy/nuxt/components/LemonSqueezyCheckout.vue +34 -0
- package/dist/templates/payments/lemonsqueezy/nuxt/composables/useLemonSqueezy.ts +43 -0
- package/dist/templates/payments/lemonsqueezy/nuxt/server/api/webhooks/lemonsqueezy.post.ts.hbs +110 -0
- package/dist/templates/payments/lemonsqueezy/nuxt/server/utils/lemonsqueezy.ts +74 -0
- package/dist/templates/payments/lemonsqueezy/remix/app/components/pricing/lemonsqueezy-checkout.tsx +86 -0
- package/dist/templates/payments/lemonsqueezy/remix/app/lib/lemonsqueezy.server.ts +74 -0
- package/dist/templates/payments/lemonsqueezy/remix/app/routes/api.webhooks.lemonsqueezy.ts.hbs +96 -0
- package/dist/templates/payments/lemonsqueezy/solidstart/src/components/pricing/lemonsqueezy-checkout.tsx +49 -0
- package/dist/templates/payments/lemonsqueezy/solidstart/src/lib/lemonsqueezy.server.ts +16 -0
- package/dist/templates/payments/lemonsqueezy/solidstart/src/routes/api/webhooks/lemonsqueezy.ts.hbs +46 -0
- package/dist/templates/payments/lemonsqueezy/sveltekit/components/LemonSqueezyCheckout.svelte +71 -0
- package/dist/templates/payments/lemonsqueezy/sveltekit/lib/lemonsqueezy.ts +77 -0
- package/dist/templates/payments/lemonsqueezy/sveltekit/routes/api/webhooks/lemonsqueezy/+server.ts.hbs +95 -0
- package/dist/templates/payments/lemonsqueezy/tanstack-start/app/components/pricing/lemonsqueezy-checkout.tsx +57 -0
- package/dist/templates/payments/lemonsqueezy/tanstack-start/app/lib/lemonsqueezy.server.ts +16 -0
- package/dist/templates/payments/lemonsqueezy/tanstack-start/app/routes/api.webhooks.lemonsqueezy.ts.hbs +58 -0
- package/dist/templates/payments/paddle/astro/src/components/pricing/PaddleCheckout.tsx +67 -0
- package/dist/templates/payments/paddle/astro/src/lib/paddle.ts +13 -0
- package/dist/templates/payments/paddle/astro/src/pages/api/webhooks/paddle.ts.hbs +95 -0
- package/dist/templates/payments/paddle/nextjs/api/webhooks/paddle/route.ts.hbs +137 -0
- package/dist/templates/payments/paddle/nextjs/components/paddle-checkout.tsx +79 -0
- package/dist/templates/payments/paddle/nextjs/lib/paddle.ts +14 -0
- package/dist/templates/payments/paddle/nuxt/components/PaddleCheckout.vue +37 -0
- package/dist/templates/payments/paddle/nuxt/composables/usePaddle.ts +59 -0
- package/dist/templates/payments/paddle/nuxt/server/api/webhooks/paddle.post.ts.hbs +83 -0
- package/dist/templates/payments/paddle/nuxt/server/utils/paddle.ts +16 -0
- package/dist/templates/payments/paddle/paddle.test.ts +638 -0
- package/dist/templates/payments/paddle/remix/app/components/pricing/paddle-checkout.tsx +77 -0
- package/dist/templates/payments/paddle/remix/app/lib/paddle.server.ts +14 -0
- package/dist/templates/payments/paddle/remix/app/routes/api.webhooks.paddle.ts.hbs +78 -0
- package/dist/templates/payments/paddle/solidstart/src/components/pricing/paddle-checkout.tsx +47 -0
- package/dist/templates/payments/paddle/solidstart/src/lib/paddle.server.ts +7 -0
- package/dist/templates/payments/paddle/solidstart/src/routes/api/webhooks/paddle.ts.hbs +30 -0
- package/dist/templates/payments/paddle/sveltekit/components/PaddleCheckout.svelte +70 -0
- package/dist/templates/payments/paddle/sveltekit/lib/paddle.ts +13 -0
- package/dist/templates/payments/paddle/sveltekit/routes/api/webhooks/paddle/+server.ts.hbs +126 -0
- package/dist/templates/payments/paddle/tanstack-start/app/components/pricing/paddle-checkout.tsx +56 -0
- package/dist/templates/payments/paddle/tanstack-start/app/lib/paddle.server.ts +7 -0
- package/dist/templates/payments/paddle/tanstack-start/app/routes/api.webhooks.paddle.ts.hbs +36 -0
- package/dist/templates/payments/polar/astro/src/components/pricing/PolarCheckout.tsx +46 -0
- package/dist/templates/payments/polar/astro/src/lib/polar.ts +44 -0
- package/dist/templates/payments/polar/astro/src/pages/api/webhooks/polar.ts.hbs +55 -0
- package/dist/templates/payments/polar/nextjs/api/webhooks/polar/route.ts.hbs +62 -0
- package/dist/templates/payments/polar/nextjs/components/polar-checkout.tsx +49 -0
- package/dist/templates/payments/polar/nextjs/lib/polar.ts +44 -0
- package/dist/templates/payments/polar/nuxt/components/PolarCheckout.vue +21 -0
- package/dist/templates/payments/polar/nuxt/composables/usePolar.ts +31 -0
- package/dist/templates/payments/polar/nuxt/server/api/webhooks/polar.post.ts.hbs +51 -0
- package/dist/templates/payments/polar/nuxt/server/utils/polar.ts +46 -0
- package/dist/templates/payments/polar/remix/app/components/pricing/polar-checkout.tsx +46 -0
- package/dist/templates/payments/polar/remix/app/lib/polar.server.ts +44 -0
- package/dist/templates/payments/polar/remix/app/routes/api.webhooks.polar.ts.hbs +48 -0
- package/dist/templates/payments/polar/solidstart/src/components/pricing/polar-checkout.tsx +42 -0
- package/dist/templates/payments/polar/solidstart/src/lib/polar.server.ts +44 -0
- package/dist/templates/payments/polar/solidstart/src/routes/api/webhooks/polar.ts.hbs +48 -0
- package/dist/templates/payments/polar/sveltekit/components/PolarCheckout.svelte +41 -0
- package/dist/templates/payments/polar/sveltekit/lib/polar.ts +45 -0
- package/dist/templates/payments/polar/sveltekit/routes/api/webhooks/polar/+server.ts.hbs +58 -0
- package/dist/templates/payments/polar/tanstack-start/app/components/pricing/polar-checkout.tsx +46 -0
- package/dist/templates/payments/polar/tanstack-start/app/lib/polar.server.ts +44 -0
- package/dist/templates/payments/polar/tanstack-start/app/routes/api.webhooks.polar.ts.hbs +57 -0
- package/dist/templates/payments/stripe/astro/src/components/pricing/CheckoutButton.tsx +56 -0
- package/dist/templates/payments/stripe/astro/src/components/pricing/PricingCard.tsx.hbs +60 -0
- package/dist/templates/payments/stripe/astro/src/lib/stripe.ts +10 -0
- package/dist/templates/payments/stripe/astro/src/pages/api/checkout.ts.hbs +58 -0
- package/dist/templates/payments/stripe/astro/src/pages/api/portal.ts +35 -0
- package/dist/templates/payments/stripe/astro/src/pages/api/webhooks/stripe.ts.hbs +82 -0
- package/dist/templates/payments/stripe/nextjs/api/checkout/route.ts.hbs +39 -0
- package/dist/templates/payments/stripe/nextjs/api/portal/route.ts +28 -0
- package/dist/templates/payments/stripe/nextjs/api/webhooks/stripe/route.ts.hbs +133 -0
- package/dist/templates/payments/stripe/nextjs/components/checkout-button.tsx +51 -0
- package/dist/templates/payments/stripe/nextjs/components/pricing-card.tsx.hbs +94 -0
- package/dist/templates/payments/stripe/nextjs/lib/stripe-client.ts +10 -0
- package/dist/templates/payments/stripe/nextjs/lib/stripe.ts +10 -0
- package/dist/templates/payments/stripe/nuxt/components/CheckoutButton.vue +39 -0
- package/dist/templates/payments/stripe/nuxt/components/PricingCard.vue.hbs +59 -0
- package/dist/templates/payments/stripe/nuxt/composables/useStripe.ts +59 -0
- package/dist/templates/payments/stripe/nuxt/server/api/checkout.post.ts.hbs +67 -0
- package/dist/templates/payments/stripe/nuxt/server/api/portal.post.ts +35 -0
- package/dist/templates/payments/stripe/nuxt/server/api/webhooks/stripe.post.ts.hbs +72 -0
- package/dist/templates/payments/stripe/nuxt/server/utils/stripe.ts +12 -0
- package/dist/templates/payments/stripe/remix/app/components/pricing/checkout-button.tsx +56 -0
- package/dist/templates/payments/stripe/remix/app/components/pricing/pricing-card.tsx.hbs +60 -0
- package/dist/templates/payments/stripe/remix/app/lib/stripe.server.ts +10 -0
- package/dist/templates/payments/stripe/remix/app/routes/api.checkout.ts.hbs +47 -0
- package/dist/templates/payments/stripe/remix/app/routes/api.portal.ts +25 -0
- package/dist/templates/payments/stripe/remix/app/routes/api.webhooks.stripe.ts.hbs +71 -0
- package/dist/templates/payments/stripe/solidstart/src/components/pricing/checkout-button.tsx +42 -0
- package/dist/templates/payments/stripe/solidstart/src/components/pricing/pricing-card.tsx.hbs +44 -0
- package/dist/templates/payments/stripe/solidstart/src/lib/stripe.server.ts +10 -0
- package/dist/templates/payments/stripe/solidstart/src/routes/api/checkout.ts +30 -0
- package/dist/templates/payments/stripe/solidstart/src/routes/api/portal.ts +24 -0
- package/dist/templates/payments/stripe/solidstart/src/routes/api/webhooks/stripe.ts.hbs +48 -0
- package/dist/templates/payments/stripe/sveltekit/components/CheckoutButton.svelte +46 -0
- package/dist/templates/payments/stripe/sveltekit/components/PricingCard.svelte.hbs +79 -0
- package/dist/templates/payments/stripe/sveltekit/lib/stripe.ts +11 -0
- package/dist/templates/payments/stripe/sveltekit/routes/api/checkout/+server.ts.hbs +35 -0
- package/dist/templates/payments/stripe/sveltekit/routes/api/portal/+server.ts +24 -0
- package/dist/templates/payments/stripe/sveltekit/routes/api/webhooks/stripe/+server.ts.hbs +113 -0
- package/dist/templates/payments/stripe/tanstack-start/app/components/pricing/checkout-button.tsx +46 -0
- package/dist/templates/payments/stripe/tanstack-start/app/components/pricing/pricing-card.tsx.hbs +69 -0
- package/dist/templates/payments/stripe/tanstack-start/app/lib/stripe.server.ts +10 -0
- package/dist/templates/payments/stripe/tanstack-start/app/routes/api.checkout.ts +39 -0
- package/dist/templates/payments/stripe/tanstack-start/app/routes/api.webhooks.stripe.ts.hbs +52 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,330 +1,330 @@
|
|
|
1
|
-
# create-stacksfinder
|
|
2
|
-
|
|
3
|
-
[](https://www.npmjs.com/package/create-stacksfinder)
|
|
4
|
-
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
|
|
6
|
-
```
|
|
7
|
-
╔═══════════════════════════════════════════════════════╗
|
|
8
|
-
║ ║
|
|
9
|
-
║ ███████╗████████╗ █████╗ ██████╗██╗ ██╗███████╗ ║
|
|
10
|
-
║ ██╔════╝╚══██╔══╝██╔══██╗██╔════╝██║ ██╔╝██╔════╝ ║
|
|
11
|
-
║ ███████╗ ██║ ███████║██║ █████╔╝ ███████╗ ║
|
|
12
|
-
║ ╚════██║ ██║ ██╔══██║██║ ██╔═██╗ ╚════██║ ║
|
|
13
|
-
║ ███████║ ██║ ██║ ██║╚██████╗██║ ██╗███████║ ║
|
|
14
|
-
║ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ║
|
|
15
|
-
║ finder ║
|
|
16
|
-
║ ║
|
|
17
|
-
╚═══════════════════════════════════════════════════════╝
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
**Scaffold optimized tech stacks with deterministic scoring.**
|
|
21
|
-
|
|
22
|
-
CLI tool that recommends and generates production-ready projects based on your requirements. No AI hallucinations — just data-driven recommendations from versioned lookup tables.
|
|
23
|
-
|
|
24
|
-
## Quick Start
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
# With Bun (recommended)
|
|
28
|
-
bun create stacksfinder my-app
|
|
29
|
-
|
|
30
|
-
# With npm
|
|
31
|
-
npx create-stacksfinder@latest my-app
|
|
32
|
-
|
|
33
|
-
# With pnpm
|
|
34
|
-
pnpm create stacksfinder my-app
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Features
|
|
38
|
-
|
|
39
|
-
- **Deterministic Scoring** — Same input = same output, always. 80+ technologies scored across 6 dimensions.
|
|
40
|
-
- **Interactive Prompts** — Choose project type, scale, ecosystem, priorities, and constraints.
|
|
41
|
-
- **Project Generation** — Scaffolds Next.js, SvelteKit, Nuxt, or Remix with your recommended stack.
|
|
42
|
-
- **Offline Mode** — Embedded scoring data, works without internet.
|
|
43
|
-
- **Minimal ASCII Style** — Clean terminal output, no emojis.
|
|
44
|
-
|
|
45
|
-
## Usage
|
|
46
|
-
|
|
47
|
-
### Interactive Mode (default)
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
bun create stacksfinder
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
You'll be prompted for:
|
|
54
|
-
1. **Project Name** — e.g., `my-saas-app`
|
|
55
|
-
2. **Project Type** — `saas`, `web-app`, `marketplace`, `api`, `e-commerce`, `blog`, `portfolio`
|
|
56
|
-
3. **Scale** — `mvp`, `startup`, `growth`, `enterprise`
|
|
57
|
-
4. **Priority** — Your top priority: `speed`, `dx`, `perf`, `cost`, `scale`, `security`
|
|
58
|
-
5. **Constraints** — Optional: configure technical requirements (opt-in)
|
|
59
|
-
|
|
60
|
-
### Quick Mode
|
|
61
|
-
|
|
62
|
-
Skip all prompts with CLI flags:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# Basic quick mode (defaults: saas, mvp, speed)
|
|
66
|
-
bun create stacksfinder my-app --quick
|
|
67
|
-
|
|
68
|
-
# With custom options
|
|
69
|
-
bun create stacksfinder my-app --quick --type saas --scale startup --priority dx
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Quick Mode Flags:**
|
|
73
|
-
- `-q, --quick` — Skip prompts, use defaults
|
|
74
|
-
- `--type <type>` — `saas`, `web-app`, `marketplace`, `api`, `e-commerce`, `blog`, `portfolio`
|
|
75
|
-
- `--scale <scale>` — `mvp`, `startup`, `growth`, `enterprise`
|
|
76
|
-
- `--priority <priority>` — `speed`, `dx`, `perf`, `cost`, `scale`, `security`
|
|
77
|
-
|
|
78
|
-
### Compare Mode
|
|
79
|
-
|
|
80
|
-
Compare two preset configurations side-by-side:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
# Default: mvp vs enterprise
|
|
84
|
-
bun create stacksfinder --compare
|
|
85
|
-
|
|
86
|
-
# Custom presets
|
|
87
|
-
bun create stacksfinder --compare --preset1 startup --preset2 agency
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**Available Presets:** `mvp`, `startup`, `enterprise`, `agency`, `ecommerce`, `api`
|
|
91
|
-
|
|
92
|
-
### Blueprint Mode (Pro)
|
|
93
|
-
|
|
94
|
-
Generate a project from a saved blueprint:
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
bun create stacksfinder my-app --from-blueprint abc123 --api-key sk_...
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Or use the environment variable:
|
|
101
|
-
```bash
|
|
102
|
-
export STACKSFINDER_API_KEY=sk_...
|
|
103
|
-
bun create stacksfinder my-app --from-blueprint abc123
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
> Requires a Pro/Team subscription. Get your API key at [stacksfinder.
|
|
107
|
-
|
|
108
|
-
### Recommend Only
|
|
109
|
-
|
|
110
|
-
Get recommendations without generating a project:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
bun create stacksfinder --recommend-only
|
|
114
|
-
# or
|
|
115
|
-
bun create stacksfinder -r
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### JSON Output
|
|
119
|
-
|
|
120
|
-
Output recommendations as JSON for automation:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
bun create stacksfinder --json
|
|
124
|
-
# or
|
|
125
|
-
bun create stacksfinder -j
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Expert Mode
|
|
129
|
-
|
|
130
|
-
Configure all 27 constraints:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
bun create stacksfinder my-app --expert
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
## Example Output
|
|
137
|
-
|
|
138
|
-
```
|
|
139
|
-
╔═══════════════════════════════════════════════════════╗
|
|
140
|
-
║ ███████╗████████╗ █████╗ ██████╗██╗ ██╗███████╗ ║
|
|
141
|
-
║ ... ║
|
|
142
|
-
╚═══════════════════════════════════════════════════════╝
|
|
143
|
-
|
|
144
|
-
Scaffold optimized tech stacks
|
|
145
|
-
Powered by deterministic scoring
|
|
146
|
-
|
|
147
|
-
STEP 1: Project Configuration
|
|
148
|
-
|
|
149
|
-
Project Name: my-saas-demo
|
|
150
|
-
Project Type: saas
|
|
151
|
-
Scale: mvp
|
|
152
|
-
Ecosystem: javascript
|
|
153
|
-
Priorities: speed, dx, cost
|
|
154
|
-
Constraints: real-time
|
|
155
|
-
|
|
156
|
-
STEP 2: Analyzing 50+ Technologies...
|
|
157
|
-
|
|
158
|
-
> Scoring completed in 2ms
|
|
159
|
-
|
|
160
|
-
STEP 3: Recommended Stack
|
|
161
|
-
|
|
162
|
-
==================================================
|
|
163
|
-
Framework SvelteKit [A] Excellent fit
|
|
164
|
-
Alt: Next.js (A-), Nuxt (B+)
|
|
165
|
-
Database Supabase [A] Excellent fit
|
|
166
|
-
Alt: Neon (A-), PlanetScale (B+)
|
|
167
|
-
ORM Drizzle [A+] Perfect fit
|
|
168
|
-
Alt: Prisma (A), Kysely (B+)
|
|
169
|
-
Auth Better Auth [A] Excellent fit
|
|
170
|
-
Hosting Vercel [A] Excellent fit
|
|
171
|
-
Payments Paddle [A] Excellent fit
|
|
172
|
-
==================================================
|
|
173
|
-
|
|
174
|
-
Stack Score: A (86/100)
|
|
175
|
-
Production-ready stack with excellent balance
|
|
176
|
-
|
|
177
|
-
Confidence: HIGH
|
|
178
|
-
- Clear winner in most categories
|
|
179
|
-
- Strong compatibility between choices
|
|
180
|
-
- Well-tested combination
|
|
181
|
-
|
|
182
|
-
------------------------------------------------
|
|
183
|
-
Fine-tune with 25+ constraints:
|
|
184
|
-
stacksfinder.
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Scoring Dimensions
|
|
188
|
-
|
|
189
|
-
All technologies are scored across 6 dimensions (0-100):
|
|
190
|
-
|
|
191
|
-
| Dimension | Description |
|
|
192
|
-
|-----------|-------------|
|
|
193
|
-
| **Performance** | Runtime speed, bundle size, optimization |
|
|
194
|
-
| **DX** | Learning curve, tooling, documentation |
|
|
195
|
-
| **Ecosystem** | Community size, integrations, job market |
|
|
196
|
-
| **Maintainability** | Long-term code health, upgrade path |
|
|
197
|
-
| **Cost** | Hosting costs, licensing, operational overhead |
|
|
198
|
-
| **Compliance** | Security features, audit readiness |
|
|
199
|
-
|
|
200
|
-
## Generated Project Structure
|
|
201
|
-
|
|
202
|
-
```
|
|
203
|
-
my-app/
|
|
204
|
-
├── package.json # Dependencies for your stack
|
|
205
|
-
├── tsconfig.json # TypeScript configuration
|
|
206
|
-
├── .env.example # Environment variables template
|
|
207
|
-
├── .gitignore
|
|
208
|
-
├── README.md # Getting started guide
|
|
209
|
-
├── src/ # Framework-specific structure
|
|
210
|
-
│ └── ...
|
|
211
|
-
├── drizzle.config.ts # If using Drizzle ORM
|
|
212
|
-
└── prisma/ # If using Prisma ORM
|
|
213
|
-
└── schema.prisma
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
## Supported Technologies
|
|
217
|
-
|
|
218
|
-
### Meta-Frameworks
|
|
219
|
-
Next.js, SvelteKit, Nuxt, Remix, Astro, SolidStart
|
|
220
|
-
|
|
221
|
-
### Databases
|
|
222
|
-
PostgreSQL, Supabase, Neon, PlanetScale, Turso, MongoDB, SQLite
|
|
223
|
-
|
|
224
|
-
### ORMs
|
|
225
|
-
Drizzle, Prisma, Kysely, TypeORM, Sequelize
|
|
226
|
-
|
|
227
|
-
### Auth
|
|
228
|
-
Better Auth, Lucia, Auth.js, Clerk, Supabase Auth
|
|
229
|
-
|
|
230
|
-
### Hosting
|
|
231
|
-
Vercel, Netlify, Railway, Fly.io, Cloudflare, AWS
|
|
232
|
-
|
|
233
|
-
### Payments
|
|
234
|
-
Stripe, Paddle, LemonSqueezy
|
|
235
|
-
|
|
236
|
-
## Options
|
|
237
|
-
|
|
238
|
-
### Quick Mode
|
|
239
|
-
| Flag | Alias | Description |
|
|
240
|
-
|------|-------|-------------|
|
|
241
|
-
| `--quick` | `-q` | Skip prompts, use defaults |
|
|
242
|
-
| `--type <type>` | | Project type (saas, web-app, etc.) |
|
|
243
|
-
| `--scale <scale>` | | Scale (mvp, startup, growth, enterprise) |
|
|
244
|
-
| `--priority <priority>` | | Top priority (speed, dx, perf, cost, scale, security) |
|
|
245
|
-
|
|
246
|
-
### Advanced
|
|
247
|
-
| Flag | Description |
|
|
248
|
-
|------|-------------|
|
|
249
|
-
| `--from-blueprint <id>` | Generate from saved blueprint (requires API key) |
|
|
250
|
-
| `--api-key <key>` | API key (or use STACKSFINDER_API_KEY env) |
|
|
251
|
-
| `--compare` | Compare two preset stacks side-by-side |
|
|
252
|
-
| `--preset1 <name>` | First preset (mvp, startup, enterprise, agency, ecommerce, api) |
|
|
253
|
-
| `--preset2 <name>` | Second preset (default: enterprise) |
|
|
254
|
-
|
|
255
|
-
### Other
|
|
256
|
-
| Flag | Alias | Description |
|
|
257
|
-
|------|-------|-------------|
|
|
258
|
-
| `--expert` | `-e` | Configure all 27 constraints |
|
|
259
|
-
| `--recommend-only` | `-r` | Only show recommendations, skip generation |
|
|
260
|
-
| `--json` | `-j` | Output as JSON |
|
|
261
|
-
| `--version` | `-v` | Show version and data versions |
|
|
262
|
-
| `--help` | `-h` | Show help |
|
|
263
|
-
|
|
264
|
-
## Programmatic Usage
|
|
265
|
-
|
|
266
|
-
```typescript
|
|
267
|
-
import { scoreStack } from 'create-stacksfinder/scoring';
|
|
268
|
-
|
|
269
|
-
const context = {
|
|
270
|
-
projectName: 'my-app',
|
|
271
|
-
projectType: 'saas',
|
|
272
|
-
scale: 'mvp',
|
|
273
|
-
ecosystem: 'typescript',
|
|
274
|
-
priorities: ['speed', 'dx', 'cost'],
|
|
275
|
-
constraints: ['real-time'],
|
|
276
|
-
};
|
|
277
|
-
|
|
278
|
-
const stack = scoreStack(context);
|
|
279
|
-
console.log(stack.categories); // Recommended technologies
|
|
280
|
-
console.log(stack.stackScore); // Overall grade
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
## Pro Features
|
|
284
|
-
|
|
285
|
-
Want more control? Visit [stacksfinder.
|
|
286
|
-
|
|
287
|
-
- **25+ Constraints** — Fine-tune recommendations with advanced filters
|
|
288
|
-
- **AI Narratives** — Get detailed explanations for each choice
|
|
289
|
-
- **Blueprints** — Save and share your stack configurations
|
|
290
|
-
- **Audits** — Analyze existing projects for technical debt
|
|
291
|
-
- **MCP Server** — Use in Claude, Cursor, Windsurf, VS Code
|
|
292
|
-
|
|
293
|
-
## Telemetry
|
|
294
|
-
|
|
295
|
-
This CLI collects **anonymous** usage data to help us improve the product. We track:
|
|
296
|
-
|
|
297
|
-
- CLI version
|
|
298
|
-
- Action type (recommend/generate)
|
|
299
|
-
- Project type, scale, ecosystem (no project names)
|
|
300
|
-
- Priority and constraint counts
|
|
301
|
-
- OS platform
|
|
302
|
-
|
|
303
|
-
We **never** collect: IP addresses, machine IDs, project names, file paths, or any personally identifiable information.
|
|
304
|
-
|
|
305
|
-
### Opt-out
|
|
306
|
-
|
|
307
|
-
Set any of these environment variables to disable telemetry:
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
# Option 1: StacksFinder-specific
|
|
311
|
-
export STACKSFINDER_TELEMETRY_DISABLED=1
|
|
312
|
-
|
|
313
|
-
# Option 2: Standard Do Not Track
|
|
314
|
-
export DO_NOT_TRACK=1
|
|
315
|
-
|
|
316
|
-
# Option 3: CI environments (auto-disabled)
|
|
317
|
-
export CI=true
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
The telemetry code is [open source](https://github.com/hoklims/stacksfinder/blob/main/packages/create-stacksfinder/src/telemetry.ts) — inspect it yourself.
|
|
321
|
-
|
|
322
|
-
## Related
|
|
323
|
-
|
|
324
|
-
- **Website**: [stacksfinder.
|
|
325
|
-
- **MCP Server**: [@stacksfinder/mcp-server](https://www.npmjs.com/package/@stacksfinder/mcp-server)
|
|
326
|
-
- **GitHub**: [github.com/hoklims/stacksfinder](https://github.com/hoklims/stacksfinder)
|
|
327
|
-
|
|
328
|
-
## License
|
|
329
|
-
|
|
330
|
-
MIT
|
|
1
|
+
# create-stacksfinder
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/create-stacksfinder)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
╔═══════════════════════════════════════════════════════╗
|
|
8
|
+
║ ║
|
|
9
|
+
║ ███████╗████████╗ █████╗ ██████╗██╗ ██╗███████╗ ║
|
|
10
|
+
║ ██╔════╝╚══██╔══╝██╔══██╗██╔════╝██║ ██╔╝██╔════╝ ║
|
|
11
|
+
║ ███████╗ ██║ ███████║██║ █████╔╝ ███████╗ ║
|
|
12
|
+
║ ╚════██║ ██║ ██╔══██║██║ ██╔═██╗ ╚════██║ ║
|
|
13
|
+
║ ███████║ ██║ ██║ ██║╚██████╗██║ ██╗███████║ ║
|
|
14
|
+
║ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ║
|
|
15
|
+
║ finder ║
|
|
16
|
+
║ ║
|
|
17
|
+
╚═══════════════════════════════════════════════════════╝
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Scaffold optimized tech stacks with deterministic scoring.**
|
|
21
|
+
|
|
22
|
+
CLI tool that recommends and generates production-ready projects based on your requirements. No AI hallucinations — just data-driven recommendations from versioned lookup tables.
|
|
23
|
+
|
|
24
|
+
## Quick Start
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# With Bun (recommended)
|
|
28
|
+
bun create stacksfinder my-app
|
|
29
|
+
|
|
30
|
+
# With npm
|
|
31
|
+
npx create-stacksfinder@latest my-app
|
|
32
|
+
|
|
33
|
+
# With pnpm
|
|
34
|
+
pnpm create stacksfinder my-app
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Features
|
|
38
|
+
|
|
39
|
+
- **Deterministic Scoring** — Same input = same output, always. 80+ technologies scored across 6 dimensions.
|
|
40
|
+
- **Interactive Prompts** — Choose project type, scale, ecosystem, priorities, and constraints.
|
|
41
|
+
- **Project Generation** — Scaffolds Next.js, SvelteKit, Nuxt, or Remix with your recommended stack.
|
|
42
|
+
- **Offline Mode** — Embedded scoring data, works without internet.
|
|
43
|
+
- **Minimal ASCII Style** — Clean terminal output, no emojis.
|
|
44
|
+
|
|
45
|
+
## Usage
|
|
46
|
+
|
|
47
|
+
### Interactive Mode (default)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
bun create stacksfinder
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
You'll be prompted for:
|
|
54
|
+
1. **Project Name** — e.g., `my-saas-app`
|
|
55
|
+
2. **Project Type** — `saas`, `web-app`, `marketplace`, `api`, `e-commerce`, `blog`, `portfolio`
|
|
56
|
+
3. **Scale** — `mvp`, `startup`, `growth`, `enterprise`
|
|
57
|
+
4. **Priority** — Your top priority: `speed`, `dx`, `perf`, `cost`, `scale`, `security`
|
|
58
|
+
5. **Constraints** — Optional: configure technical requirements (opt-in)
|
|
59
|
+
|
|
60
|
+
### Quick Mode
|
|
61
|
+
|
|
62
|
+
Skip all prompts with CLI flags:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Basic quick mode (defaults: saas, mvp, speed)
|
|
66
|
+
bun create stacksfinder my-app --quick
|
|
67
|
+
|
|
68
|
+
# With custom options
|
|
69
|
+
bun create stacksfinder my-app --quick --type saas --scale startup --priority dx
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Quick Mode Flags:**
|
|
73
|
+
- `-q, --quick` — Skip prompts, use defaults
|
|
74
|
+
- `--type <type>` — `saas`, `web-app`, `marketplace`, `api`, `e-commerce`, `blog`, `portfolio`
|
|
75
|
+
- `--scale <scale>` — `mvp`, `startup`, `growth`, `enterprise`
|
|
76
|
+
- `--priority <priority>` — `speed`, `dx`, `perf`, `cost`, `scale`, `security`
|
|
77
|
+
|
|
78
|
+
### Compare Mode
|
|
79
|
+
|
|
80
|
+
Compare two preset configurations side-by-side:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Default: mvp vs enterprise
|
|
84
|
+
bun create stacksfinder --compare
|
|
85
|
+
|
|
86
|
+
# Custom presets
|
|
87
|
+
bun create stacksfinder --compare --preset1 startup --preset2 agency
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Available Presets:** `mvp`, `startup`, `enterprise`, `agency`, `ecommerce`, `api`
|
|
91
|
+
|
|
92
|
+
### Blueprint Mode (Pro)
|
|
93
|
+
|
|
94
|
+
Generate a project from a saved blueprint:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
bun create stacksfinder my-app --from-blueprint abc123 --api-key sk_...
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Or use the environment variable:
|
|
101
|
+
```bash
|
|
102
|
+
export STACKSFINDER_API_KEY=sk_...
|
|
103
|
+
bun create stacksfinder my-app --from-blueprint abc123
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
> Requires a Pro/Team subscription. Get your API key at [stacksfinder.com/settings/api-keys](https://stacksfinder.com/settings/api-keys)
|
|
107
|
+
|
|
108
|
+
### Recommend Only
|
|
109
|
+
|
|
110
|
+
Get recommendations without generating a project:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
bun create stacksfinder --recommend-only
|
|
114
|
+
# or
|
|
115
|
+
bun create stacksfinder -r
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### JSON Output
|
|
119
|
+
|
|
120
|
+
Output recommendations as JSON for automation:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
bun create stacksfinder --json
|
|
124
|
+
# or
|
|
125
|
+
bun create stacksfinder -j
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Expert Mode
|
|
129
|
+
|
|
130
|
+
Configure all 27 constraints:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
bun create stacksfinder my-app --expert
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Example Output
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
╔═══════════════════════════════════════════════════════╗
|
|
140
|
+
║ ███████╗████████╗ █████╗ ██████╗██╗ ██╗███████╗ ║
|
|
141
|
+
║ ... ║
|
|
142
|
+
╚═══════════════════════════════════════════════════════╝
|
|
143
|
+
|
|
144
|
+
Scaffold optimized tech stacks
|
|
145
|
+
Powered by deterministic scoring
|
|
146
|
+
|
|
147
|
+
STEP 1: Project Configuration
|
|
148
|
+
|
|
149
|
+
Project Name: my-saas-demo
|
|
150
|
+
Project Type: saas
|
|
151
|
+
Scale: mvp
|
|
152
|
+
Ecosystem: javascript
|
|
153
|
+
Priorities: speed, dx, cost
|
|
154
|
+
Constraints: real-time
|
|
155
|
+
|
|
156
|
+
STEP 2: Analyzing 50+ Technologies...
|
|
157
|
+
|
|
158
|
+
> Scoring completed in 2ms
|
|
159
|
+
|
|
160
|
+
STEP 3: Recommended Stack
|
|
161
|
+
|
|
162
|
+
==================================================
|
|
163
|
+
Framework SvelteKit [A] Excellent fit
|
|
164
|
+
Alt: Next.js (A-), Nuxt (B+)
|
|
165
|
+
Database Supabase [A] Excellent fit
|
|
166
|
+
Alt: Neon (A-), PlanetScale (B+)
|
|
167
|
+
ORM Drizzle [A+] Perfect fit
|
|
168
|
+
Alt: Prisma (A), Kysely (B+)
|
|
169
|
+
Auth Better Auth [A] Excellent fit
|
|
170
|
+
Hosting Vercel [A] Excellent fit
|
|
171
|
+
Payments Paddle [A] Excellent fit
|
|
172
|
+
==================================================
|
|
173
|
+
|
|
174
|
+
Stack Score: A (86/100)
|
|
175
|
+
Production-ready stack with excellent balance
|
|
176
|
+
|
|
177
|
+
Confidence: HIGH
|
|
178
|
+
- Clear winner in most categories
|
|
179
|
+
- Strong compatibility between choices
|
|
180
|
+
- Well-tested combination
|
|
181
|
+
|
|
182
|
+
------------------------------------------------
|
|
183
|
+
Fine-tune with 25+ constraints:
|
|
184
|
+
stacksfinder.com/builder
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Scoring Dimensions
|
|
188
|
+
|
|
189
|
+
All technologies are scored across 6 dimensions (0-100):
|
|
190
|
+
|
|
191
|
+
| Dimension | Description |
|
|
192
|
+
|-----------|-------------|
|
|
193
|
+
| **Performance** | Runtime speed, bundle size, optimization |
|
|
194
|
+
| **DX** | Learning curve, tooling, documentation |
|
|
195
|
+
| **Ecosystem** | Community size, integrations, job market |
|
|
196
|
+
| **Maintainability** | Long-term code health, upgrade path |
|
|
197
|
+
| **Cost** | Hosting costs, licensing, operational overhead |
|
|
198
|
+
| **Compliance** | Security features, audit readiness |
|
|
199
|
+
|
|
200
|
+
## Generated Project Structure
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
my-app/
|
|
204
|
+
├── package.json # Dependencies for your stack
|
|
205
|
+
├── tsconfig.json # TypeScript configuration
|
|
206
|
+
├── .env.example # Environment variables template
|
|
207
|
+
├── .gitignore
|
|
208
|
+
├── README.md # Getting started guide
|
|
209
|
+
├── src/ # Framework-specific structure
|
|
210
|
+
│ └── ...
|
|
211
|
+
├── drizzle.config.ts # If using Drizzle ORM
|
|
212
|
+
└── prisma/ # If using Prisma ORM
|
|
213
|
+
└── schema.prisma
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Supported Technologies
|
|
217
|
+
|
|
218
|
+
### Meta-Frameworks
|
|
219
|
+
Next.js, SvelteKit, Nuxt, Remix, Astro, SolidStart
|
|
220
|
+
|
|
221
|
+
### Databases
|
|
222
|
+
PostgreSQL, Supabase, Neon, PlanetScale, Turso, MongoDB, SQLite
|
|
223
|
+
|
|
224
|
+
### ORMs
|
|
225
|
+
Drizzle, Prisma, Kysely, TypeORM, Sequelize
|
|
226
|
+
|
|
227
|
+
### Auth
|
|
228
|
+
Better Auth, Lucia, Auth.js, Clerk, Supabase Auth
|
|
229
|
+
|
|
230
|
+
### Hosting
|
|
231
|
+
Vercel, Netlify, Railway, Fly.io, Cloudflare, AWS
|
|
232
|
+
|
|
233
|
+
### Payments
|
|
234
|
+
Stripe, Paddle, LemonSqueezy
|
|
235
|
+
|
|
236
|
+
## Options
|
|
237
|
+
|
|
238
|
+
### Quick Mode
|
|
239
|
+
| Flag | Alias | Description |
|
|
240
|
+
|------|-------|-------------|
|
|
241
|
+
| `--quick` | `-q` | Skip prompts, use defaults |
|
|
242
|
+
| `--type <type>` | | Project type (saas, web-app, etc.) |
|
|
243
|
+
| `--scale <scale>` | | Scale (mvp, startup, growth, enterprise) |
|
|
244
|
+
| `--priority <priority>` | | Top priority (speed, dx, perf, cost, scale, security) |
|
|
245
|
+
|
|
246
|
+
### Advanced
|
|
247
|
+
| Flag | Description |
|
|
248
|
+
|------|-------------|
|
|
249
|
+
| `--from-blueprint <id>` | Generate from saved blueprint (requires API key) |
|
|
250
|
+
| `--api-key <key>` | API key (or use STACKSFINDER_API_KEY env) |
|
|
251
|
+
| `--compare` | Compare two preset stacks side-by-side |
|
|
252
|
+
| `--preset1 <name>` | First preset (mvp, startup, enterprise, agency, ecommerce, api) |
|
|
253
|
+
| `--preset2 <name>` | Second preset (default: enterprise) |
|
|
254
|
+
|
|
255
|
+
### Other
|
|
256
|
+
| Flag | Alias | Description |
|
|
257
|
+
|------|-------|-------------|
|
|
258
|
+
| `--expert` | `-e` | Configure all 27 constraints |
|
|
259
|
+
| `--recommend-only` | `-r` | Only show recommendations, skip generation |
|
|
260
|
+
| `--json` | `-j` | Output as JSON |
|
|
261
|
+
| `--version` | `-v` | Show version and data versions |
|
|
262
|
+
| `--help` | `-h` | Show help |
|
|
263
|
+
|
|
264
|
+
## Programmatic Usage
|
|
265
|
+
|
|
266
|
+
```typescript
|
|
267
|
+
import { scoreStack } from 'create-stacksfinder/scoring';
|
|
268
|
+
|
|
269
|
+
const context = {
|
|
270
|
+
projectName: 'my-app',
|
|
271
|
+
projectType: 'saas',
|
|
272
|
+
scale: 'mvp',
|
|
273
|
+
ecosystem: 'typescript',
|
|
274
|
+
priorities: ['speed', 'dx', 'cost'],
|
|
275
|
+
constraints: ['real-time'],
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
const stack = scoreStack(context);
|
|
279
|
+
console.log(stack.categories); // Recommended technologies
|
|
280
|
+
console.log(stack.stackScore); // Overall grade
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Pro Features
|
|
284
|
+
|
|
285
|
+
Want more control? Visit [stacksfinder.com](https://stacksfinder.com) for:
|
|
286
|
+
|
|
287
|
+
- **25+ Constraints** — Fine-tune recommendations with advanced filters
|
|
288
|
+
- **AI Narratives** — Get detailed explanations for each choice
|
|
289
|
+
- **Blueprints** — Save and share your stack configurations
|
|
290
|
+
- **Audits** — Analyze existing projects for technical debt
|
|
291
|
+
- **MCP Server** — Use in Claude, Cursor, Windsurf, VS Code
|
|
292
|
+
|
|
293
|
+
## Telemetry
|
|
294
|
+
|
|
295
|
+
This CLI collects **anonymous** usage data to help us improve the product. We track:
|
|
296
|
+
|
|
297
|
+
- CLI version
|
|
298
|
+
- Action type (recommend/generate)
|
|
299
|
+
- Project type, scale, ecosystem (no project names)
|
|
300
|
+
- Priority and constraint counts
|
|
301
|
+
- OS platform
|
|
302
|
+
|
|
303
|
+
We **never** collect: IP addresses, machine IDs, project names, file paths, or any personally identifiable information.
|
|
304
|
+
|
|
305
|
+
### Opt-out
|
|
306
|
+
|
|
307
|
+
Set any of these environment variables to disable telemetry:
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
# Option 1: StacksFinder-specific
|
|
311
|
+
export STACKSFINDER_TELEMETRY_DISABLED=1
|
|
312
|
+
|
|
313
|
+
# Option 2: Standard Do Not Track
|
|
314
|
+
export DO_NOT_TRACK=1
|
|
315
|
+
|
|
316
|
+
# Option 3: CI environments (auto-disabled)
|
|
317
|
+
export CI=true
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
The telemetry code is [open source](https://github.com/hoklims/stacksfinder/blob/main/packages/create-stacksfinder/src/telemetry.ts) — inspect it yourself.
|
|
321
|
+
|
|
322
|
+
## Related
|
|
323
|
+
|
|
324
|
+
- **Website**: [stacksfinder.com](https://stacksfinder.com)
|
|
325
|
+
- **MCP Server**: [@stacksfinder/mcp-server](https://www.npmjs.com/package/@stacksfinder/mcp-server)
|
|
326
|
+
- **GitHub**: [github.com/hoklims/stacksfinder](https://github.com/hoklims/stacksfinder)
|
|
327
|
+
|
|
328
|
+
## License
|
|
329
|
+
|
|
330
|
+
MIT
|