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.
Files changed (489) hide show
  1. package/README.md +330 -330
  2. package/dist/index.js +114 -1203
  3. package/dist/templates/auth/auth0/astro/src/components/auth/AuthButton.tsx +39 -0
  4. package/dist/templates/auth/auth0/astro/src/components/auth/UserProfile.tsx +103 -0
  5. package/dist/templates/auth/auth0/astro/src/lib/auth0.ts +84 -0
  6. package/dist/templates/auth/auth0/astro/src/pages/callback.astro +28 -0
  7. package/dist/templates/auth/auth0/astro/src/pages/login.astro +15 -0
  8. package/dist/templates/auth/auth0/nextjs/api/auth/[auth0]/route.ts +11 -0
  9. package/dist/templates/auth/auth0/nextjs/components/auth-button.tsx +31 -0
  10. package/dist/templates/auth/auth0/nextjs/components/user-profile.tsx +87 -0
  11. package/dist/templates/auth/auth0/nextjs/lib/auth0.ts +39 -0
  12. package/dist/templates/auth/auth0/nextjs/middleware.ts +33 -0
  13. package/dist/templates/auth/auth0/nuxt/components/AuthButton.vue +17 -0
  14. package/dist/templates/auth/auth0/nuxt/components/UserProfile.vue +70 -0
  15. package/dist/templates/auth/auth0/nuxt/composables/useAuth0.ts +40 -0
  16. package/dist/templates/auth/auth0/nuxt/pages/callback.vue +28 -0
  17. package/dist/templates/auth/auth0/nuxt/pages/login.vue +42 -0
  18. package/dist/templates/auth/auth0/nuxt/plugins/auth0.ts +18 -0
  19. package/dist/templates/auth/auth0/remix/app/components/auth/auth-button.tsx +36 -0
  20. package/dist/templates/auth/auth0/remix/app/components/auth/user-profile.tsx +104 -0
  21. package/dist/templates/auth/auth0/remix/app/lib/auth0.ts +95 -0
  22. package/dist/templates/auth/auth0/remix/app/routes/callback.tsx +29 -0
  23. package/dist/templates/auth/auth0/remix/app/routes/login.tsx +48 -0
  24. package/dist/templates/auth/auth0/remix/app/routes/logout.tsx +17 -0
  25. package/dist/templates/auth/auth0/solidstart/src/components/auth/auth-button.tsx +51 -0
  26. package/dist/templates/auth/auth0/solidstart/src/components/auth/user-profile.tsx +62 -0
  27. package/dist/templates/auth/auth0/solidstart/src/lib/auth0.ts +51 -0
  28. package/dist/templates/auth/auth0/solidstart/src/routes/callback.tsx +30 -0
  29. package/dist/templates/auth/auth0/solidstart/src/routes/login.tsx +21 -0
  30. package/dist/templates/auth/auth0/sveltekit/components/AuthButton.svelte +12 -0
  31. package/dist/templates/auth/auth0/sveltekit/components/UserProfile.svelte +74 -0
  32. package/dist/templates/auth/auth0/sveltekit/hooks.client.ts +4 -0
  33. package/dist/templates/auth/auth0/sveltekit/lib/auth0.ts +131 -0
  34. package/dist/templates/auth/auth0/sveltekit/routes/(auth)/callback/+page.svelte +17 -0
  35. package/dist/templates/auth/auth0/sveltekit/routes/(auth)/login/+page.svelte +37 -0
  36. package/dist/templates/auth/auth0/tanstack-start/app/components/auth/auth-button.tsx +52 -0
  37. package/dist/templates/auth/auth0/tanstack-start/app/lib/auth0.ts +51 -0
  38. package/dist/templates/auth/auth0/tanstack-start/app/routes/callback.tsx +33 -0
  39. package/dist/templates/auth/auth0/tanstack-start/app/routes/login.tsx +22 -0
  40. package/dist/templates/auth/authjs/astro/auth.config.ts.hbs +55 -0
  41. package/dist/templates/auth/authjs/astro/src/components/auth/AuthForm.tsx +171 -0
  42. package/dist/templates/auth/authjs/astro/src/components/auth/UserButton.tsx +108 -0
  43. package/dist/templates/auth/authjs/astro/src/lib/auth.ts.hbs +32 -0
  44. package/dist/templates/auth/authjs/astro/src/pages/api/auth/[...auth].ts +7 -0
  45. package/dist/templates/auth/authjs/astro/src/pages/login.astro +31 -0
  46. package/dist/templates/auth/authjs/astro/src/pages/register.astro +31 -0
  47. package/dist/templates/auth/authjs/nextjs/api/auth/[...nextauth]/route.ts +3 -0
  48. package/dist/templates/auth/authjs/nextjs/app/(auth)/layout.tsx +11 -0
  49. package/dist/templates/auth/authjs/nextjs/app/(auth)/login/page.tsx +25 -0
  50. package/dist/templates/auth/authjs/nextjs/app/(auth)/register/page.tsx +25 -0
  51. package/dist/templates/auth/authjs/nextjs/auth-client.ts +4 -0
  52. package/dist/templates/auth/authjs/nextjs/auth.ts.hbs +75 -0
  53. package/dist/templates/auth/authjs/nextjs/components/auth-form.tsx +177 -0
  54. package/dist/templates/auth/authjs/nextjs/components/user-button.tsx +84 -0
  55. package/dist/templates/auth/authjs/nextjs/middleware.ts +23 -0
  56. package/dist/templates/auth/authjs/nuxt/components/AuthForm.vue +144 -0
  57. package/dist/templates/auth/authjs/nuxt/components/UserButton.vue +80 -0
  58. package/dist/templates/auth/authjs/nuxt/composables/useAuth.ts +22 -0
  59. package/dist/templates/auth/authjs/nuxt/pages/login.vue +45 -0
  60. package/dist/templates/auth/authjs/nuxt/pages/register.vue +45 -0
  61. package/dist/templates/auth/authjs/nuxt/server/api/auth/[...].ts +61 -0
  62. package/dist/templates/auth/authjs/remix/app/components/auth/auth-form.tsx +121 -0
  63. package/dist/templates/auth/authjs/remix/app/components/auth/user-button.tsx +84 -0
  64. package/dist/templates/auth/authjs/remix/app/lib/auth.server.ts.hbs +49 -0
  65. package/dist/templates/auth/authjs/remix/app/lib/session.server.ts +16 -0
  66. package/dist/templates/auth/authjs/remix/app/routes/auth.login.tsx +9 -0
  67. package/dist/templates/auth/authjs/remix/app/routes/auth.logout.tsx +16 -0
  68. package/dist/templates/auth/authjs/remix/app/routes/login.tsx +45 -0
  69. package/dist/templates/auth/authjs/remix/app/routes/register.tsx +36 -0
  70. package/dist/templates/auth/authjs/sveltekit/auth.ts.hbs +72 -0
  71. package/dist/templates/auth/authjs/sveltekit/components/AuthForm.svelte +142 -0
  72. package/dist/templates/auth/authjs/sveltekit/components/UserButton.svelte +85 -0
  73. package/dist/templates/auth/authjs/sveltekit/hooks.server.ts +26 -0
  74. package/dist/templates/auth/authjs/sveltekit/routes/(auth)/login/+page.svelte +19 -0
  75. package/dist/templates/auth/authjs/sveltekit/routes/(auth)/register/+page.svelte +19 -0
  76. package/dist/templates/auth/better-auth/astro/src/components/auth/AuthForm.tsx +95 -0
  77. package/dist/templates/auth/better-auth/astro/src/components/auth/UserButton.tsx +90 -0
  78. package/dist/templates/auth/better-auth/astro/src/lib/auth-client.ts +7 -0
  79. package/dist/templates/auth/better-auth/astro/src/lib/auth.ts.hbs +29 -0
  80. package/dist/templates/auth/better-auth/astro/src/pages/api/auth/[...all].ts +6 -0
  81. package/dist/templates/auth/better-auth/astro/src/pages/login.astro +28 -0
  82. package/dist/templates/auth/better-auth/astro/src/pages/register.astro +28 -0
  83. package/dist/templates/auth/better-auth/nextjs/api/auth/[...all]/route.ts +4 -0
  84. package/dist/templates/auth/better-auth/nextjs/app/(auth)/layout.tsx +15 -0
  85. package/dist/templates/auth/better-auth/nextjs/app/(auth)/login/page.tsx +95 -0
  86. package/dist/templates/auth/better-auth/nextjs/app/(auth)/register/page.tsx +106 -0
  87. package/dist/templates/auth/better-auth/nextjs/auth-client.ts +7 -0
  88. package/dist/templates/auth/better-auth/nextjs/auth.ts.hbs +27 -0
  89. package/dist/templates/auth/better-auth/nextjs/components/auth-form.tsx +83 -0
  90. package/dist/templates/auth/better-auth/nextjs/components/user-button.tsx +97 -0
  91. package/dist/templates/auth/better-auth/nextjs/middleware.ts +43 -0
  92. package/dist/templates/auth/better-auth/nuxt/components/AuthForm.vue +57 -0
  93. package/dist/templates/auth/better-auth/nuxt/components/UserButton.vue +69 -0
  94. package/dist/templates/auth/better-auth/nuxt/composables/useAuth.ts +43 -0
  95. package/dist/templates/auth/better-auth/nuxt/middleware/auth.ts +16 -0
  96. package/dist/templates/auth/better-auth/nuxt/pages/login.vue +71 -0
  97. package/dist/templates/auth/better-auth/nuxt/pages/register.vue +73 -0
  98. package/dist/templates/auth/better-auth/nuxt/server/api/auth/[...all].ts +5 -0
  99. package/dist/templates/auth/better-auth/nuxt/server/utils/auth.ts.hbs +33 -0
  100. package/dist/templates/auth/better-auth/remix/app/components/auth/auth-form.tsx +81 -0
  101. package/dist/templates/auth/better-auth/remix/app/components/auth/user-button.tsx +92 -0
  102. package/dist/templates/auth/better-auth/remix/app/lib/auth.client.ts +28 -0
  103. package/dist/templates/auth/better-auth/remix/app/lib/auth.server.ts.hbs +29 -0
  104. package/dist/templates/auth/better-auth/remix/app/routes/api.auth.$.ts +10 -0
  105. package/dist/templates/auth/better-auth/remix/app/routes/login.tsx +103 -0
  106. package/dist/templates/auth/better-auth/remix/app/routes/register.tsx +116 -0
  107. package/dist/templates/auth/better-auth/solidstart/src/components/auth/auth-form.tsx +95 -0
  108. package/dist/templates/auth/better-auth/solidstart/src/components/auth/user-button.tsx +39 -0
  109. package/dist/templates/auth/better-auth/solidstart/src/lib/auth.client.ts +7 -0
  110. package/dist/templates/auth/better-auth/solidstart/src/lib/auth.server.ts.hbs +29 -0
  111. package/dist/templates/auth/better-auth/solidstart/src/routes/api/auth/[...all].ts +10 -0
  112. package/dist/templates/auth/better-auth/solidstart/src/routes/login.tsx +86 -0
  113. package/dist/templates/auth/better-auth/solidstart/src/routes/register.tsx +100 -0
  114. package/dist/templates/auth/better-auth/sveltekit/auth-client.ts +5 -0
  115. package/dist/templates/auth/better-auth/sveltekit/auth.ts.hbs +29 -0
  116. package/dist/templates/auth/better-auth/sveltekit/components/AuthForm.svelte +71 -0
  117. package/dist/templates/auth/better-auth/sveltekit/components/UserButton.svelte +80 -0
  118. package/dist/templates/auth/better-auth/sveltekit/routes/(auth)/login/+page.svelte +84 -0
  119. package/dist/templates/auth/better-auth/sveltekit/routes/(auth)/register/+page.svelte +95 -0
  120. package/dist/templates/auth/better-auth/tanstack-start/app/components/auth/auth-form.tsx +111 -0
  121. package/dist/templates/auth/better-auth/tanstack-start/app/components/auth/user-button.tsx +43 -0
  122. package/dist/templates/auth/better-auth/tanstack-start/app/lib/auth.client.ts +7 -0
  123. package/dist/templates/auth/better-auth/tanstack-start/app/lib/auth.server.ts.hbs +29 -0
  124. package/dist/templates/auth/better-auth/tanstack-start/app/routes/api.auth.$.ts +11 -0
  125. package/dist/templates/auth/better-auth/tanstack-start/app/routes/login.tsx +83 -0
  126. package/dist/templates/auth/better-auth/tanstack-start/app/routes/register.tsx +96 -0
  127. package/dist/templates/auth/clerk/nextjs/app/(auth)/sign-in/[[...sign-in]]/page.tsx +17 -0
  128. package/dist/templates/auth/clerk/nextjs/app/(auth)/sign-up/[[...sign-up]]/page.tsx +17 -0
  129. package/dist/templates/auth/clerk/nextjs/middleware.ts +24 -0
  130. package/dist/templates/auth/lucia/nextjs/app/(auth)/layout.tsx +13 -0
  131. package/dist/templates/auth/lucia/nextjs/app/(auth)/login/page.tsx +25 -0
  132. package/dist/templates/auth/lucia/nextjs/app/(auth)/register/page.tsx +25 -0
  133. package/dist/templates/auth/lucia/nextjs/auth-actions.ts +137 -0
  134. package/dist/templates/auth/lucia/nextjs/auth.ts.hbs +49 -0
  135. package/dist/templates/auth/lucia/nextjs/components/auth-form.tsx +64 -0
  136. package/dist/templates/auth/lucia/nextjs/components/user-button.tsx +40 -0
  137. package/dist/templates/auth/lucia/nextjs/middleware.ts +42 -0
  138. package/dist/templates/auth/lucia/nextjs/validate-request.ts +42 -0
  139. package/dist/templates/auth/lucia/sveltekit/app.d.ts +14 -0
  140. package/dist/templates/auth/lucia/sveltekit/auth.ts.hbs +49 -0
  141. package/dist/templates/auth/lucia/sveltekit/components/UserButton.svelte +38 -0
  142. package/dist/templates/auth/lucia/sveltekit/hooks.server.ts +35 -0
  143. package/dist/templates/auth/lucia/sveltekit/routes/(auth)/login/+page.server.ts +61 -0
  144. package/dist/templates/auth/lucia/sveltekit/routes/(auth)/login/+page.svelte +67 -0
  145. package/dist/templates/auth/lucia/sveltekit/routes/(auth)/register/+page.server.ts +71 -0
  146. package/dist/templates/auth/lucia/sveltekit/routes/(auth)/register/+page.svelte +75 -0
  147. package/dist/templates/auth/supabase/astro/src/components/auth/AuthForm.tsx +153 -0
  148. package/dist/templates/auth/supabase/astro/src/components/auth/UserButton.tsx +74 -0
  149. package/dist/templates/auth/supabase/astro/src/lib/supabase.ts +42 -0
  150. package/dist/templates/auth/supabase/astro/src/pages/auth/callback.ts +19 -0
  151. package/dist/templates/auth/supabase/astro/src/pages/login.astro +27 -0
  152. package/dist/templates/auth/supabase/astro/src/pages/register.astro +27 -0
  153. package/dist/templates/auth/supabase/nextjs/app/(auth)/layout.tsx +11 -0
  154. package/dist/templates/auth/supabase/nextjs/app/(auth)/login/page.tsx +13 -0
  155. package/dist/templates/auth/supabase/nextjs/app/(auth)/register/page.tsx +13 -0
  156. package/dist/templates/auth/supabase/nextjs/app/auth/callback/route.ts +28 -0
  157. package/dist/templates/auth/supabase/nextjs/components/auth-form.tsx +177 -0
  158. package/dist/templates/auth/supabase/nextjs/components/user-button.tsx +79 -0
  159. package/dist/templates/auth/supabase/nextjs/middleware.ts +69 -0
  160. package/dist/templates/auth/supabase/nextjs/supabase-client.ts +8 -0
  161. package/dist/templates/auth/supabase/nextjs/supabase-server.ts +29 -0
  162. package/dist/templates/auth/supabase/nuxt/components/AuthForm.vue +133 -0
  163. package/dist/templates/auth/supabase/nuxt/components/UserButton.vue +64 -0
  164. package/dist/templates/auth/supabase/nuxt/composables/useSupabaseAuth.ts +54 -0
  165. package/dist/templates/auth/supabase/nuxt/pages/auth/callback.vue +25 -0
  166. package/dist/templates/auth/supabase/nuxt/pages/login.vue +121 -0
  167. package/dist/templates/auth/supabase/nuxt/pages/register.vue +121 -0
  168. package/dist/templates/auth/supabase/remix/app/components/auth/auth-form.tsx +155 -0
  169. package/dist/templates/auth/supabase/remix/app/components/auth/user-button.tsx +76 -0
  170. package/dist/templates/auth/supabase/remix/app/lib/supabase.client.ts +18 -0
  171. package/dist/templates/auth/supabase/remix/app/lib/supabase.server.ts +31 -0
  172. package/dist/templates/auth/supabase/remix/app/routes/auth.callback.tsx +20 -0
  173. package/dist/templates/auth/supabase/remix/app/routes/login.tsx +140 -0
  174. package/dist/templates/auth/supabase/remix/app/routes/register.tsx +143 -0
  175. package/dist/templates/auth/supabase/sveltekit/components/AuthForm.svelte +158 -0
  176. package/dist/templates/auth/supabase/sveltekit/components/UserButton.svelte +78 -0
  177. package/dist/templates/auth/supabase/sveltekit/hooks.server.ts +85 -0
  178. package/dist/templates/auth/supabase/sveltekit/routes/(auth)/login/+page.svelte +19 -0
  179. package/dist/templates/auth/supabase/sveltekit/routes/(auth)/register/+page.svelte +19 -0
  180. package/dist/templates/auth/supabase/sveltekit/routes/auth/callback/+server.ts +16 -0
  181. package/dist/templates/auth/supabase/sveltekit/supabase-client.ts +19 -0
  182. package/dist/templates/auth/supabase/sveltekit/supabase-server.ts +21 -0
  183. package/dist/templates/backend/elysia/src/index.ts.hbs +33 -0
  184. package/dist/templates/backend/elysia/src/lib/db.ts.hbs +74 -0
  185. package/dist/templates/backend/elysia/src/lib/env.ts +19 -0
  186. package/dist/templates/backend/elysia/src/middleware/auth.ts.hbs +56 -0
  187. package/dist/templates/backend/elysia/src/routes/auth.ts.hbs +77 -0
  188. package/dist/templates/backend/elysia/src/routes/health.ts +11 -0
  189. package/dist/templates/backend/elysia/src/routes/index.ts +6 -0
  190. package/dist/templates/backend/elysia/tsconfig.api.json +18 -0
  191. package/dist/templates/backend/express/src/index.ts.hbs +44 -0
  192. package/dist/templates/backend/express/src/lib/db.ts.hbs +61 -0
  193. package/dist/templates/backend/express/src/lib/env.ts +13 -0
  194. package/dist/templates/backend/express/src/middleware/auth.ts.hbs +70 -0
  195. package/dist/templates/backend/express/src/middleware/error.ts +47 -0
  196. package/dist/templates/backend/express/src/middleware/validate.ts +35 -0
  197. package/dist/templates/backend/express/src/routes/auth.ts.hbs +87 -0
  198. package/dist/templates/backend/express/src/routes/health.ts +19 -0
  199. package/dist/templates/backend/express/src/routes/index.ts +11 -0
  200. package/dist/templates/backend/express/tsconfig.api.json +19 -0
  201. package/dist/templates/backend/fastify/src/index.ts.hbs +50 -0
  202. package/dist/templates/backend/fastify/src/lib/db.ts.hbs +61 -0
  203. package/dist/templates/backend/fastify/src/lib/env.ts +13 -0
  204. package/dist/templates/backend/fastify/src/plugins/auth.ts.hbs +77 -0
  205. package/dist/templates/backend/fastify/src/plugins/cors.ts +24 -0
  206. package/dist/templates/backend/fastify/src/plugins/swagger.ts +38 -0
  207. package/dist/templates/backend/fastify/src/routes/auth.ts.hbs +161 -0
  208. package/dist/templates/backend/fastify/src/routes/health.ts +51 -0
  209. package/dist/templates/backend/fastify/src/routes/index.ts +14 -0
  210. package/dist/templates/backend/fastify/src/schemas/common.ts +58 -0
  211. package/dist/templates/backend/fastify/tsconfig.api.json +19 -0
  212. package/dist/templates/backend/hono/src/index.ts.hbs +74 -0
  213. package/dist/templates/backend/hono/src/lib/db.ts.hbs +50 -0
  214. package/dist/templates/backend/hono/src/lib/env.ts +27 -0
  215. package/dist/templates/backend/hono/src/middleware/auth.ts.hbs +55 -0
  216. package/dist/templates/backend/hono/src/middleware/cors.ts +14 -0
  217. package/dist/templates/backend/hono/src/middleware/logger.ts +19 -0
  218. package/dist/templates/backend/hono/src/routes/auth.ts.hbs +139 -0
  219. package/dist/templates/backend/hono/src/routes/health.ts +25 -0
  220. package/dist/templates/backend/hono/src/routes/index.ts +26 -0
  221. package/dist/templates/backend/hono/tsconfig.api.json +19 -0
  222. package/dist/templates/base/README.md.hbs +284 -0
  223. package/dist/templates/base/env.example.hbs +105 -0
  224. package/dist/templates/base/gitignore +48 -0
  225. package/dist/templates/database/drizzle/drizzle.config.ts.hbs +18 -0
  226. package/dist/templates/database/drizzle/index.ts.hbs +22 -0
  227. package/dist/templates/database/drizzle/schema.ts.hbs +210 -0
  228. package/dist/templates/database/kysely/db.ts.hbs +55 -0
  229. package/dist/templates/database/kysely/kysely.config.ts.hbs +42 -0
  230. package/dist/templates/database/kysely/migrations/001_initial.ts.hbs +97 -0
  231. package/dist/templates/database/kysely/types.ts.hbs +66 -0
  232. package/dist/templates/database/mongoose/connection.ts.hbs +70 -0
  233. package/dist/templates/database/mongoose/index.ts +8 -0
  234. package/dist/templates/database/mongoose/models/index.ts +4 -0
  235. package/dist/templates/database/mongoose/models/user.ts.hbs +55 -0
  236. package/dist/templates/database/prisma/client.ts +14 -0
  237. package/dist/templates/database/prisma/schema.prisma.hbs +98 -0
  238. package/dist/templates/frameworks/astro/astro.config.mjs.hbs +23 -0
  239. package/dist/templates/frameworks/astro/src/components/Footer.astro +81 -0
  240. package/dist/templates/frameworks/astro/src/components/Header.astro.hbs +67 -0
  241. package/dist/templates/frameworks/astro/src/components/Sidebar.astro.hbs +45 -0
  242. package/dist/templates/frameworks/astro/src/components/ui/Button.tsx +35 -0
  243. package/dist/templates/frameworks/astro/src/components/ui/Card.tsx +93 -0
  244. package/dist/templates/frameworks/astro/src/components/ui/Input.tsx +44 -0
  245. package/dist/templates/frameworks/astro/src/env.d.ts +1 -0
  246. package/dist/templates/frameworks/astro/src/layouts/DashboardLayout.astro.hbs +36 -0
  247. package/dist/templates/frameworks/astro/src/layouts/Layout.astro.hbs +36 -0
  248. package/dist/templates/frameworks/astro/src/lib/utils.ts +6 -0
  249. package/dist/templates/frameworks/astro/src/pages/dashboard/billing.astro.hbs +86 -0
  250. package/dist/templates/frameworks/astro/src/pages/dashboard/index.astro.hbs +78 -0
  251. package/dist/templates/frameworks/astro/src/pages/dashboard/settings.astro +64 -0
  252. package/dist/templates/frameworks/astro/src/pages/index.astro.hbs +132 -0
  253. package/dist/templates/frameworks/astro/src/pages/pricing.astro.hbs +145 -0
  254. package/dist/templates/frameworks/astro/src/styles/global.css +9 -0
  255. package/dist/templates/frameworks/astro/tailwind.config.ts +34 -0
  256. package/dist/templates/frameworks/astro/tsconfig.json +11 -0
  257. package/dist/templates/frameworks/nextjs/app/(dashboard)/billing/page.tsx.hbs +102 -0
  258. package/dist/templates/frameworks/nextjs/app/(dashboard)/dashboard/page.tsx.hbs +79 -0
  259. package/dist/templates/frameworks/nextjs/app/(dashboard)/layout.tsx.hbs +81 -0
  260. package/dist/templates/frameworks/nextjs/app/(dashboard)/settings/page.tsx.hbs +92 -0
  261. package/dist/templates/frameworks/nextjs/app/(marketing)/layout.tsx +16 -0
  262. package/dist/templates/frameworks/nextjs/app/(marketing)/pricing/page.tsx.hbs +127 -0
  263. package/dist/templates/frameworks/nextjs/app/globals.css +3 -0
  264. package/dist/templates/frameworks/nextjs/app/layout.tsx.hbs +33 -0
  265. package/dist/templates/frameworks/nextjs/app/page.tsx.hbs +149 -0
  266. package/dist/templates/frameworks/nextjs/components/footer.tsx +107 -0
  267. package/dist/templates/frameworks/nextjs/components/header.tsx.hbs +95 -0
  268. package/dist/templates/frameworks/nextjs/components/sidebar.tsx.hbs +44 -0
  269. package/dist/templates/frameworks/nextjs/components/ui/button.tsx +35 -0
  270. package/dist/templates/frameworks/nextjs/components/ui/card.tsx +93 -0
  271. package/dist/templates/frameworks/nextjs/components/ui/input.tsx +44 -0
  272. package/dist/templates/frameworks/nextjs/lib/utils.ts +6 -0
  273. package/dist/templates/frameworks/nextjs/next.config.ts.hbs +26 -0
  274. package/dist/templates/frameworks/nextjs/postcss.config.js +6 -0
  275. package/dist/templates/frameworks/nextjs/tailwind.config.ts +38 -0
  276. package/dist/templates/frameworks/nextjs/tsconfig.json +27 -0
  277. package/dist/templates/frameworks/nuxt/app.vue.hbs +5 -0
  278. package/dist/templates/frameworks/nuxt/assets/css/main.css +9 -0
  279. package/dist/templates/frameworks/nuxt/components/Footer.vue +26 -0
  280. package/dist/templates/frameworks/nuxt/components/Header.vue.hbs +54 -0
  281. package/dist/templates/frameworks/nuxt/components/Sidebar.vue.hbs +47 -0
  282. package/dist/templates/frameworks/nuxt/components/ui/Button.vue +47 -0
  283. package/dist/templates/frameworks/nuxt/components/ui/Card.vue +17 -0
  284. package/dist/templates/frameworks/nuxt/components/ui/Input.vue +35 -0
  285. package/dist/templates/frameworks/nuxt/layouts/dashboard.vue.hbs +21 -0
  286. package/dist/templates/frameworks/nuxt/layouts/default.vue.hbs +13 -0
  287. package/dist/templates/frameworks/nuxt/nuxt.config.ts.hbs +42 -0
  288. package/dist/templates/frameworks/nuxt/pages/dashboard/billing.vue.hbs +88 -0
  289. package/dist/templates/frameworks/nuxt/pages/dashboard/index.vue.hbs +67 -0
  290. package/dist/templates/frameworks/nuxt/pages/dashboard/settings.vue +53 -0
  291. package/dist/templates/frameworks/nuxt/pages/index.vue.hbs +71 -0
  292. package/dist/templates/frameworks/nuxt/pages/pricing.vue.hbs +107 -0
  293. package/dist/templates/frameworks/nuxt/tailwind.config.ts +41 -0
  294. package/dist/templates/frameworks/nuxt/tsconfig.json +3 -0
  295. package/dist/templates/frameworks/nuxt/utils/cn.ts +6 -0
  296. package/dist/templates/frameworks/remix/app/components/footer.tsx +107 -0
  297. package/dist/templates/frameworks/remix/app/components/header.tsx.hbs +70 -0
  298. package/dist/templates/frameworks/remix/app/components/sidebar.tsx.hbs +48 -0
  299. package/dist/templates/frameworks/remix/app/components/ui/button.tsx +35 -0
  300. package/dist/templates/frameworks/remix/app/components/ui/card.tsx +93 -0
  301. package/dist/templates/frameworks/remix/app/components/ui/input.tsx +44 -0
  302. package/dist/templates/frameworks/remix/app/entry.client.tsx +12 -0
  303. package/dist/templates/frameworks/remix/app/entry.server.tsx +125 -0
  304. package/dist/templates/frameworks/remix/app/lib/utils.ts +6 -0
  305. package/dist/templates/frameworks/remix/app/root.tsx.hbs +66 -0
  306. package/dist/templates/frameworks/remix/app/routes/_index.tsx.hbs +148 -0
  307. package/dist/templates/frameworks/remix/app/routes/dashboard._index.tsx.hbs +85 -0
  308. package/dist/templates/frameworks/remix/app/routes/dashboard.billing.tsx.hbs +97 -0
  309. package/dist/templates/frameworks/remix/app/routes/dashboard.settings.tsx +67 -0
  310. package/dist/templates/frameworks/remix/app/routes/dashboard.tsx.hbs +40 -0
  311. package/dist/templates/frameworks/remix/app/routes/pricing.tsx.hbs +157 -0
  312. package/dist/templates/frameworks/remix/app/tailwind.css +1 -0
  313. package/dist/templates/frameworks/remix/tailwind.config.ts +34 -0
  314. package/dist/templates/frameworks/remix/tsconfig.json +30 -0
  315. package/dist/templates/frameworks/remix/vite.config.ts.hbs +26 -0
  316. package/dist/templates/frameworks/solidstart/app.config.ts +11 -0
  317. package/dist/templates/frameworks/solidstart/src/app.css +1 -0
  318. package/dist/templates/frameworks/solidstart/src/app.tsx.hbs +21 -0
  319. package/dist/templates/frameworks/solidstart/src/components/Footer.tsx +86 -0
  320. package/dist/templates/frameworks/solidstart/src/components/Header.tsx.hbs +35 -0
  321. package/dist/templates/frameworks/solidstart/src/components/Sidebar.tsx.hbs +40 -0
  322. package/dist/templates/frameworks/solidstart/src/components/ui/Button.tsx +41 -0
  323. package/dist/templates/frameworks/solidstart/src/components/ui/Card.tsx +74 -0
  324. package/dist/templates/frameworks/solidstart/src/components/ui/Input.tsx +43 -0
  325. package/dist/templates/frameworks/solidstart/src/entry-client.tsx +4 -0
  326. package/dist/templates/frameworks/solidstart/src/entry-server.tsx +31 -0
  327. package/dist/templates/frameworks/solidstart/src/lib/utils.ts +6 -0
  328. package/dist/templates/frameworks/solidstart/src/routes/dashboard/billing.tsx.hbs +81 -0
  329. package/dist/templates/frameworks/solidstart/src/routes/dashboard/index.tsx.hbs +67 -0
  330. package/dist/templates/frameworks/solidstart/src/routes/dashboard/settings.tsx +51 -0
  331. package/dist/templates/frameworks/solidstart/src/routes/dashboard.tsx.hbs +13 -0
  332. package/dist/templates/frameworks/solidstart/src/routes/index.tsx.hbs +144 -0
  333. package/dist/templates/frameworks/solidstart/src/routes/pricing.tsx.hbs +91 -0
  334. package/dist/templates/frameworks/solidstart/tailwind.config.ts +21 -0
  335. package/dist/templates/frameworks/solidstart/tsconfig.json +20 -0
  336. package/dist/templates/frameworks/sveltekit/app.css +1 -0
  337. package/dist/templates/frameworks/sveltekit/app.d.ts.hbs +20 -0
  338. package/dist/templates/frameworks/sveltekit/app.html.hbs +13 -0
  339. package/dist/templates/frameworks/sveltekit/components/Footer.svelte +58 -0
  340. package/dist/templates/frameworks/sveltekit/components/Header.svelte.hbs +67 -0
  341. package/dist/templates/frameworks/sveltekit/components/Sidebar.svelte.hbs +30 -0
  342. package/dist/templates/frameworks/sveltekit/components/ui/Button.svelte +45 -0
  343. package/dist/templates/frameworks/sveltekit/components/ui/Card.svelte +13 -0
  344. package/dist/templates/frameworks/sveltekit/components/ui/Input.svelte +65 -0
  345. package/dist/templates/frameworks/sveltekit/hooks.server.ts.hbs +30 -0
  346. package/dist/templates/frameworks/sveltekit/lib/utils.ts +6 -0
  347. package/dist/templates/frameworks/sveltekit/routes/(app)/+layout.server.ts.hbs +17 -0
  348. package/dist/templates/frameworks/sveltekit/routes/(app)/+layout.svelte.hbs +46 -0
  349. package/dist/templates/frameworks/sveltekit/routes/(app)/billing/+page.svelte.hbs +89 -0
  350. package/dist/templates/frameworks/sveltekit/routes/(app)/dashboard/+page.svelte +37 -0
  351. package/dist/templates/frameworks/sveltekit/routes/(app)/settings/+page.svelte +66 -0
  352. package/dist/templates/frameworks/sveltekit/routes/(marketing)/pricing/+page.svelte.hbs +113 -0
  353. package/dist/templates/frameworks/sveltekit/routes/+layout.svelte.hbs +6 -0
  354. package/dist/templates/frameworks/sveltekit/routes/+page.svelte.hbs +81 -0
  355. package/dist/templates/frameworks/sveltekit/svelte.config.js +16 -0
  356. package/dist/templates/frameworks/sveltekit/tsconfig.json +14 -0
  357. package/dist/templates/frameworks/sveltekit/vite.config.ts.hbs +6 -0
  358. package/dist/templates/frameworks/tanstack-start/app/client.tsx +8 -0
  359. package/dist/templates/frameworks/tanstack-start/app/components/footer.tsx +107 -0
  360. package/dist/templates/frameworks/tanstack-start/app/components/header.tsx.hbs +35 -0
  361. package/dist/templates/frameworks/tanstack-start/app/components/sidebar.tsx.hbs +41 -0
  362. package/dist/templates/frameworks/tanstack-start/app/components/ui/button.tsx +35 -0
  363. package/dist/templates/frameworks/tanstack-start/app/components/ui/card.tsx +93 -0
  364. package/dist/templates/frameworks/tanstack-start/app/components/ui/input.tsx +45 -0
  365. package/dist/templates/frameworks/tanstack-start/app/global.css +1 -0
  366. package/dist/templates/frameworks/tanstack-start/app/lib/utils.ts +6 -0
  367. package/dist/templates/frameworks/tanstack-start/app/router.tsx +17 -0
  368. package/dist/templates/frameworks/tanstack-start/app/routes/__root.tsx.hbs +38 -0
  369. package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.billing.tsx.hbs +82 -0
  370. package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.index.tsx.hbs +68 -0
  371. package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.settings.tsx +52 -0
  372. package/dist/templates/frameworks/tanstack-start/app/routes/dashboard.tsx.hbs +17 -0
  373. package/dist/templates/frameworks/tanstack-start/app/routes/index.tsx.hbs +144 -0
  374. package/dist/templates/frameworks/tanstack-start/app/routes/pricing.tsx.hbs +91 -0
  375. package/dist/templates/frameworks/tanstack-start/app/ssr.tsx +12 -0
  376. package/dist/templates/frameworks/tanstack-start/app.config.ts +12 -0
  377. package/dist/templates/frameworks/tanstack-start/tailwind.config.ts +21 -0
  378. package/dist/templates/frameworks/tanstack-start/tsconfig.json +22 -0
  379. package/dist/templates/payments/lemonsqueezy/astro/src/components/pricing/LemonSqueezyCheckout.tsx +86 -0
  380. package/dist/templates/payments/lemonsqueezy/astro/src/lib/lemonsqueezy.ts +74 -0
  381. package/dist/templates/payments/lemonsqueezy/astro/src/pages/api/webhooks/lemonsqueezy.ts.hbs +110 -0
  382. package/dist/templates/payments/lemonsqueezy/nextjs/api/webhooks/lemonsqueezy/route.ts.hbs +107 -0
  383. package/dist/templates/payments/lemonsqueezy/nextjs/components/lemonsqueezy-checkout.tsx +89 -0
  384. package/dist/templates/payments/lemonsqueezy/nextjs/lib/lemonsqueezy.ts +74 -0
  385. package/dist/templates/payments/lemonsqueezy/nuxt/components/LemonSqueezyCheckout.vue +34 -0
  386. package/dist/templates/payments/lemonsqueezy/nuxt/composables/useLemonSqueezy.ts +43 -0
  387. package/dist/templates/payments/lemonsqueezy/nuxt/server/api/webhooks/lemonsqueezy.post.ts.hbs +110 -0
  388. package/dist/templates/payments/lemonsqueezy/nuxt/server/utils/lemonsqueezy.ts +74 -0
  389. package/dist/templates/payments/lemonsqueezy/remix/app/components/pricing/lemonsqueezy-checkout.tsx +86 -0
  390. package/dist/templates/payments/lemonsqueezy/remix/app/lib/lemonsqueezy.server.ts +74 -0
  391. package/dist/templates/payments/lemonsqueezy/remix/app/routes/api.webhooks.lemonsqueezy.ts.hbs +96 -0
  392. package/dist/templates/payments/lemonsqueezy/solidstart/src/components/pricing/lemonsqueezy-checkout.tsx +49 -0
  393. package/dist/templates/payments/lemonsqueezy/solidstart/src/lib/lemonsqueezy.server.ts +16 -0
  394. package/dist/templates/payments/lemonsqueezy/solidstart/src/routes/api/webhooks/lemonsqueezy.ts.hbs +46 -0
  395. package/dist/templates/payments/lemonsqueezy/sveltekit/components/LemonSqueezyCheckout.svelte +71 -0
  396. package/dist/templates/payments/lemonsqueezy/sveltekit/lib/lemonsqueezy.ts +77 -0
  397. package/dist/templates/payments/lemonsqueezy/sveltekit/routes/api/webhooks/lemonsqueezy/+server.ts.hbs +95 -0
  398. package/dist/templates/payments/lemonsqueezy/tanstack-start/app/components/pricing/lemonsqueezy-checkout.tsx +57 -0
  399. package/dist/templates/payments/lemonsqueezy/tanstack-start/app/lib/lemonsqueezy.server.ts +16 -0
  400. package/dist/templates/payments/lemonsqueezy/tanstack-start/app/routes/api.webhooks.lemonsqueezy.ts.hbs +58 -0
  401. package/dist/templates/payments/paddle/astro/src/components/pricing/PaddleCheckout.tsx +67 -0
  402. package/dist/templates/payments/paddle/astro/src/lib/paddle.ts +13 -0
  403. package/dist/templates/payments/paddle/astro/src/pages/api/webhooks/paddle.ts.hbs +95 -0
  404. package/dist/templates/payments/paddle/nextjs/api/webhooks/paddle/route.ts.hbs +137 -0
  405. package/dist/templates/payments/paddle/nextjs/components/paddle-checkout.tsx +79 -0
  406. package/dist/templates/payments/paddle/nextjs/lib/paddle.ts +14 -0
  407. package/dist/templates/payments/paddle/nuxt/components/PaddleCheckout.vue +37 -0
  408. package/dist/templates/payments/paddle/nuxt/composables/usePaddle.ts +59 -0
  409. package/dist/templates/payments/paddle/nuxt/server/api/webhooks/paddle.post.ts.hbs +83 -0
  410. package/dist/templates/payments/paddle/nuxt/server/utils/paddle.ts +16 -0
  411. package/dist/templates/payments/paddle/paddle.test.ts +638 -0
  412. package/dist/templates/payments/paddle/remix/app/components/pricing/paddle-checkout.tsx +77 -0
  413. package/dist/templates/payments/paddle/remix/app/lib/paddle.server.ts +14 -0
  414. package/dist/templates/payments/paddle/remix/app/routes/api.webhooks.paddle.ts.hbs +78 -0
  415. package/dist/templates/payments/paddle/solidstart/src/components/pricing/paddle-checkout.tsx +47 -0
  416. package/dist/templates/payments/paddle/solidstart/src/lib/paddle.server.ts +7 -0
  417. package/dist/templates/payments/paddle/solidstart/src/routes/api/webhooks/paddle.ts.hbs +30 -0
  418. package/dist/templates/payments/paddle/sveltekit/components/PaddleCheckout.svelte +70 -0
  419. package/dist/templates/payments/paddle/sveltekit/lib/paddle.ts +13 -0
  420. package/dist/templates/payments/paddle/sveltekit/routes/api/webhooks/paddle/+server.ts.hbs +126 -0
  421. package/dist/templates/payments/paddle/tanstack-start/app/components/pricing/paddle-checkout.tsx +56 -0
  422. package/dist/templates/payments/paddle/tanstack-start/app/lib/paddle.server.ts +7 -0
  423. package/dist/templates/payments/paddle/tanstack-start/app/routes/api.webhooks.paddle.ts.hbs +36 -0
  424. package/dist/templates/payments/polar/astro/src/components/pricing/PolarCheckout.tsx +46 -0
  425. package/dist/templates/payments/polar/astro/src/lib/polar.ts +44 -0
  426. package/dist/templates/payments/polar/astro/src/pages/api/webhooks/polar.ts.hbs +55 -0
  427. package/dist/templates/payments/polar/nextjs/api/webhooks/polar/route.ts.hbs +62 -0
  428. package/dist/templates/payments/polar/nextjs/components/polar-checkout.tsx +49 -0
  429. package/dist/templates/payments/polar/nextjs/lib/polar.ts +44 -0
  430. package/dist/templates/payments/polar/nuxt/components/PolarCheckout.vue +21 -0
  431. package/dist/templates/payments/polar/nuxt/composables/usePolar.ts +31 -0
  432. package/dist/templates/payments/polar/nuxt/server/api/webhooks/polar.post.ts.hbs +51 -0
  433. package/dist/templates/payments/polar/nuxt/server/utils/polar.ts +46 -0
  434. package/dist/templates/payments/polar/remix/app/components/pricing/polar-checkout.tsx +46 -0
  435. package/dist/templates/payments/polar/remix/app/lib/polar.server.ts +44 -0
  436. package/dist/templates/payments/polar/remix/app/routes/api.webhooks.polar.ts.hbs +48 -0
  437. package/dist/templates/payments/polar/solidstart/src/components/pricing/polar-checkout.tsx +42 -0
  438. package/dist/templates/payments/polar/solidstart/src/lib/polar.server.ts +44 -0
  439. package/dist/templates/payments/polar/solidstart/src/routes/api/webhooks/polar.ts.hbs +48 -0
  440. package/dist/templates/payments/polar/sveltekit/components/PolarCheckout.svelte +41 -0
  441. package/dist/templates/payments/polar/sveltekit/lib/polar.ts +45 -0
  442. package/dist/templates/payments/polar/sveltekit/routes/api/webhooks/polar/+server.ts.hbs +58 -0
  443. package/dist/templates/payments/polar/tanstack-start/app/components/pricing/polar-checkout.tsx +46 -0
  444. package/dist/templates/payments/polar/tanstack-start/app/lib/polar.server.ts +44 -0
  445. package/dist/templates/payments/polar/tanstack-start/app/routes/api.webhooks.polar.ts.hbs +57 -0
  446. package/dist/templates/payments/stripe/astro/src/components/pricing/CheckoutButton.tsx +56 -0
  447. package/dist/templates/payments/stripe/astro/src/components/pricing/PricingCard.tsx.hbs +60 -0
  448. package/dist/templates/payments/stripe/astro/src/lib/stripe.ts +10 -0
  449. package/dist/templates/payments/stripe/astro/src/pages/api/checkout.ts.hbs +58 -0
  450. package/dist/templates/payments/stripe/astro/src/pages/api/portal.ts +35 -0
  451. package/dist/templates/payments/stripe/astro/src/pages/api/webhooks/stripe.ts.hbs +82 -0
  452. package/dist/templates/payments/stripe/nextjs/api/checkout/route.ts.hbs +39 -0
  453. package/dist/templates/payments/stripe/nextjs/api/portal/route.ts +28 -0
  454. package/dist/templates/payments/stripe/nextjs/api/webhooks/stripe/route.ts.hbs +133 -0
  455. package/dist/templates/payments/stripe/nextjs/components/checkout-button.tsx +51 -0
  456. package/dist/templates/payments/stripe/nextjs/components/pricing-card.tsx.hbs +94 -0
  457. package/dist/templates/payments/stripe/nextjs/lib/stripe-client.ts +10 -0
  458. package/dist/templates/payments/stripe/nextjs/lib/stripe.ts +10 -0
  459. package/dist/templates/payments/stripe/nuxt/components/CheckoutButton.vue +39 -0
  460. package/dist/templates/payments/stripe/nuxt/components/PricingCard.vue.hbs +59 -0
  461. package/dist/templates/payments/stripe/nuxt/composables/useStripe.ts +59 -0
  462. package/dist/templates/payments/stripe/nuxt/server/api/checkout.post.ts.hbs +67 -0
  463. package/dist/templates/payments/stripe/nuxt/server/api/portal.post.ts +35 -0
  464. package/dist/templates/payments/stripe/nuxt/server/api/webhooks/stripe.post.ts.hbs +72 -0
  465. package/dist/templates/payments/stripe/nuxt/server/utils/stripe.ts +12 -0
  466. package/dist/templates/payments/stripe/remix/app/components/pricing/checkout-button.tsx +56 -0
  467. package/dist/templates/payments/stripe/remix/app/components/pricing/pricing-card.tsx.hbs +60 -0
  468. package/dist/templates/payments/stripe/remix/app/lib/stripe.server.ts +10 -0
  469. package/dist/templates/payments/stripe/remix/app/routes/api.checkout.ts.hbs +47 -0
  470. package/dist/templates/payments/stripe/remix/app/routes/api.portal.ts +25 -0
  471. package/dist/templates/payments/stripe/remix/app/routes/api.webhooks.stripe.ts.hbs +71 -0
  472. package/dist/templates/payments/stripe/solidstart/src/components/pricing/checkout-button.tsx +42 -0
  473. package/dist/templates/payments/stripe/solidstart/src/components/pricing/pricing-card.tsx.hbs +44 -0
  474. package/dist/templates/payments/stripe/solidstart/src/lib/stripe.server.ts +10 -0
  475. package/dist/templates/payments/stripe/solidstart/src/routes/api/checkout.ts +30 -0
  476. package/dist/templates/payments/stripe/solidstart/src/routes/api/portal.ts +24 -0
  477. package/dist/templates/payments/stripe/solidstart/src/routes/api/webhooks/stripe.ts.hbs +48 -0
  478. package/dist/templates/payments/stripe/sveltekit/components/CheckoutButton.svelte +46 -0
  479. package/dist/templates/payments/stripe/sveltekit/components/PricingCard.svelte.hbs +79 -0
  480. package/dist/templates/payments/stripe/sveltekit/lib/stripe.ts +11 -0
  481. package/dist/templates/payments/stripe/sveltekit/routes/api/checkout/+server.ts.hbs +35 -0
  482. package/dist/templates/payments/stripe/sveltekit/routes/api/portal/+server.ts +24 -0
  483. package/dist/templates/payments/stripe/sveltekit/routes/api/webhooks/stripe/+server.ts.hbs +113 -0
  484. package/dist/templates/payments/stripe/tanstack-start/app/components/pricing/checkout-button.tsx +46 -0
  485. package/dist/templates/payments/stripe/tanstack-start/app/components/pricing/pricing-card.tsx.hbs +69 -0
  486. package/dist/templates/payments/stripe/tanstack-start/app/lib/stripe.server.ts +10 -0
  487. package/dist/templates/payments/stripe/tanstack-start/app/routes/api.checkout.ts +39 -0
  488. package/dist/templates/payments/stripe/tanstack-start/app/routes/api.webhooks.stripe.ts.hbs +52 -0
  489. package/package.json +4 -3
package/README.md CHANGED
@@ -1,330 +1,330 @@
1
- # create-stacksfinder
2
-
3
- [![npm version](https://img.shields.io/npm/v/create-stacksfinder.svg)](https://www.npmjs.com/package/create-stacksfinder)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](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.dev/settings/api-keys](https://stacksfinder.dev/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.dev/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.dev](https://stacksfinder.dev) 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.dev](https://stacksfinder.dev)
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
+ [![npm version](https://img.shields.io/npm/v/create-stacksfinder.svg)](https://www.npmjs.com/package/create-stacksfinder)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](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