@sibyllinesoft/arbiter 0.1.0

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 (302) hide show
  1. package/README.md +222 -0
  2. package/dist/cli.js +28718 -0
  3. package/dist/templates/plopfiles/__tests__/build-systems.test.ts +730 -0
  4. package/dist/templates/plopfiles/__tests__/e2e.test.ts +451 -0
  5. package/dist/templates/plopfiles/__tests__/generation.test.ts +384 -0
  6. package/dist/templates/plopfiles/__tests__/linting.test.ts +854 -0
  7. package/dist/templates/plopfiles/__tests__/modules.test.ts +278 -0
  8. package/dist/templates/plopfiles/__tests__/smoke.test.ts +619 -0
  9. package/dist/templates/plopfiles/__tests__/templates.test.ts +341 -0
  10. package/dist/templates/plopfiles/_modules/backends/go-chi/module.js +43 -0
  11. package/dist/templates/plopfiles/_modules/backends/go-chi/templates/.air.toml.hbs +30 -0
  12. package/dist/templates/plopfiles/_modules/backends/go-chi/templates/cmd/server/main.go.hbs +50 -0
  13. package/dist/templates/plopfiles/_modules/backends/go-chi/templates/go.mod.hbs +9 -0
  14. package/dist/templates/plopfiles/_modules/backends/go-chi/templates/internal/handlers/health.go.hbs +51 -0
  15. package/dist/templates/plopfiles/_modules/backends/kotlin-ktor/module.js +38 -0
  16. package/dist/templates/plopfiles/_modules/backends/kotlin-ktor/templates/build.gradle.kts.hbs +37 -0
  17. package/dist/templates/plopfiles/_modules/backends/kotlin-ktor/templates/settings.gradle.kts.hbs +1 -0
  18. package/dist/templates/plopfiles/_modules/backends/kotlin-ktor/templates/src/main/kotlin/Application.kt.hbs +44 -0
  19. package/dist/templates/plopfiles/_modules/backends/kotlin-ktor/templates/src/main/kotlin/routes/Health.kt.hbs +41 -0
  20. package/dist/templates/plopfiles/_modules/backends/kotlin-ktor/templates/src/main/resources/logback.xml.hbs +11 -0
  21. package/dist/templates/plopfiles/_modules/backends/node-express/module.js +54 -0
  22. package/dist/templates/plopfiles/_modules/backends/node-express/templates/src/index.ts.hbs +37 -0
  23. package/dist/templates/plopfiles/_modules/backends/node-express/templates/src/routes/health.ts.hbs +21 -0
  24. package/dist/templates/plopfiles/_modules/backends/node-express/templates/tsconfig.json.hbs +18 -0
  25. package/dist/templates/plopfiles/_modules/backends/node-hono/module.js +56 -0
  26. package/dist/templates/plopfiles/_modules/backends/node-hono/templates/src/index.ts.hbs +30 -0
  27. package/dist/templates/plopfiles/_modules/backends/node-hono/templates/src/routes/health.ts.hbs +64 -0
  28. package/dist/templates/plopfiles/_modules/backends/node-hono/templates/src/routes/index.ts.hbs +38 -0
  29. package/dist/templates/plopfiles/_modules/backends/node-hono/templates/tsconfig.json.hbs +20 -0
  30. package/dist/templates/plopfiles/_modules/backends/node-hono/templates/typedoc.json.hbs +25 -0
  31. package/dist/templates/plopfiles/_modules/backends/python-fastapi/module.js +65 -0
  32. package/dist/templates/plopfiles/_modules/backends/python-fastapi/templates/app/__init__.py.hbs +1 -0
  33. package/dist/templates/plopfiles/_modules/backends/python-fastapi/templates/app/config.py.hbs +28 -0
  34. package/dist/templates/plopfiles/_modules/backends/python-fastapi/templates/app/main.py.hbs +40 -0
  35. package/dist/templates/plopfiles/_modules/backends/python-fastapi/templates/app/routers/__init__.py.hbs +1 -0
  36. package/dist/templates/plopfiles/_modules/backends/python-fastapi/templates/app/routers/health.py.hbs +24 -0
  37. package/dist/templates/plopfiles/_modules/backends/python-fastapi/templates/pyproject.toml.hbs +40 -0
  38. package/dist/templates/plopfiles/_modules/backends/python-fastapi/templates/requirements.txt.hbs +6 -0
  39. package/dist/templates/plopfiles/_modules/backends/rust-axum/module.js +44 -0
  40. package/dist/templates/plopfiles/_modules/backends/rust-axum/templates/Cargo.toml.hbs +23 -0
  41. package/dist/templates/plopfiles/_modules/backends/rust-axum/templates/src/health.rs.hbs +41 -0
  42. package/dist/templates/plopfiles/_modules/backends/rust-axum/templates/src/main.rs.hbs +57 -0
  43. package/dist/templates/plopfiles/_modules/cloud/aws/module.js +33 -0
  44. package/dist/templates/plopfiles/_modules/cloud/aws/templates/aws-alb.tf.hbs +92 -0
  45. package/dist/templates/plopfiles/_modules/cloud/aws/templates/aws-ecs.tf.hbs +84 -0
  46. package/dist/templates/plopfiles/_modules/cloud/aws/templates/aws-iam.tf.hbs +60 -0
  47. package/dist/templates/plopfiles/_modules/cloud/aws/templates/aws-vpc.tf.hbs +106 -0
  48. package/dist/templates/plopfiles/_modules/cloud/aws/templates/aws.tf.hbs +56 -0
  49. package/dist/templates/plopfiles/_modules/cloud/azure/module.js +31 -0
  50. package/dist/templates/plopfiles/_modules/cloud/azure/templates/azure-container-apps.tf.hbs +99 -0
  51. package/dist/templates/plopfiles/_modules/cloud/azure/templates/azure.tf.hbs +54 -0
  52. package/dist/templates/plopfiles/_modules/cloud/cloudflare/module.js +43 -0
  53. package/dist/templates/plopfiles/_modules/cloud/cloudflare/templates/src/types.d.ts.hbs +6 -0
  54. package/dist/templates/plopfiles/_modules/cloud/cloudflare/templates/src/worker.ts.hbs +51 -0
  55. package/dist/templates/plopfiles/_modules/cloud/cloudflare/templates/wrangler.toml.hbs +36 -0
  56. package/dist/templates/plopfiles/_modules/cloud/gcp/module.js +31 -0
  57. package/dist/templates/plopfiles/_modules/cloud/gcp/templates/gcp-cloudrun.tf.hbs +89 -0
  58. package/dist/templates/plopfiles/_modules/cloud/gcp/templates/gcp.tf.hbs +62 -0
  59. package/dist/templates/plopfiles/_modules/cloud/supabase/module.js +51 -0
  60. package/dist/templates/plopfiles/_modules/cloud/supabase/templates/src/lib/supabase.ts.hbs +25 -0
  61. package/dist/templates/plopfiles/_modules/cloud/supabase/templates/src/types/supabase.ts.hbs +52 -0
  62. package/dist/templates/plopfiles/_modules/cloud/supabase/templates/supabase/config.toml.hbs +71 -0
  63. package/dist/templates/plopfiles/_modules/cloud/supabase/templates/supabase/functions/hello/index.ts.hbs +34 -0
  64. package/dist/templates/plopfiles/_modules/cloud/supabase/templates/supabase/migrations/00000000000000_init.sql.hbs +60 -0
  65. package/dist/templates/plopfiles/_modules/composer.js +180 -0
  66. package/dist/templates/plopfiles/_modules/databases/postgres-drizzle/drizzle.config.ts.hbs +10 -0
  67. package/dist/templates/plopfiles/_modules/databases/postgres-drizzle/module.js +53 -0
  68. package/dist/templates/plopfiles/_modules/databases/postgres-drizzle/templates/index.ts.hbs +15 -0
  69. package/dist/templates/plopfiles/_modules/databases/postgres-drizzle/templates/schema.ts.hbs +21 -0
  70. package/dist/templates/plopfiles/_modules/desktop/electron/module.js +51 -0
  71. package/dist/templates/plopfiles/_modules/desktop/electron/templates/forge.config.ts.hbs +38 -0
  72. package/dist/templates/plopfiles/_modules/desktop/electron/templates/package.json.hbs +22 -0
  73. package/dist/templates/plopfiles/_modules/desktop/electron/templates/src/main.ts.hbs +48 -0
  74. package/dist/templates/plopfiles/_modules/desktop/electron/templates/src/preload.ts.hbs +18 -0
  75. package/dist/templates/plopfiles/_modules/desktop/electron/templates/tsconfig.json.hbs +14 -0
  76. package/dist/templates/plopfiles/_modules/desktop/tauri/module.js +38 -0
  77. package/dist/templates/plopfiles/_modules/desktop/tauri/templates/src-tauri/Cargo.toml.hbs +20 -0
  78. package/dist/templates/plopfiles/_modules/desktop/tauri/templates/src-tauri/build.rs.hbs +3 -0
  79. package/dist/templates/plopfiles/_modules/desktop/tauri/templates/src-tauri/src/main.rs.hbs +30 -0
  80. package/dist/templates/plopfiles/_modules/desktop/tauri/templates/src-tauri/tauri.conf.json.hbs +44 -0
  81. package/dist/templates/plopfiles/_modules/docs/mkdocs/module.js +61 -0
  82. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/architecture/components.md.hbs +37 -0
  83. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/architecture/overview.md.hbs +43 -0
  84. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/contributing/development.md.hbs +164 -0
  85. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/contributing/guidelines.md.hbs +50 -0
  86. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/getting-started/configuration.md.hbs +37 -0
  87. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/getting-started/installation.md.hbs +53 -0
  88. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/getting-started/quickstart.md.hbs +39 -0
  89. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/index.md.hbs +44 -0
  90. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/javascripts/extra.js.hbs +23 -0
  91. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/docs/stylesheets/extra.css.hbs +51 -0
  92. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/mkdocs.yml.hbs +141 -0
  93. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/requirements-docs.txt.hbs +15 -0
  94. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/scripts/aggregate-docs.mjs.hbs +188 -0
  95. package/dist/templates/plopfiles/_modules/docs/mkdocs/templates/scripts/gen_ref_pages.py.hbs +54 -0
  96. package/dist/templates/plopfiles/_modules/frontends/react-vite/module.js +60 -0
  97. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/index.html.hbs +13 -0
  98. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/nginx.conf.hbs +31 -0
  99. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/postcss.config.js.hbs +6 -0
  100. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/src/App.tsx.hbs +12 -0
  101. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/src/index.css.hbs +25 -0
  102. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/src/lib/api.ts.hbs +52 -0
  103. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/src/main.tsx.hbs +18 -0
  104. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/src/pages/Home.tsx.hbs +31 -0
  105. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/tailwind.config.js.hbs +8 -0
  106. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/tsconfig.json.hbs +25 -0
  107. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/tsconfig.node.json.hbs +10 -0
  108. package/dist/templates/plopfiles/_modules/frontends/react-vite/templates/vite.config.ts.hbs +21 -0
  109. package/dist/templates/plopfiles/_modules/frontends/solid-vite/module.js +51 -0
  110. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/index.html.hbs +13 -0
  111. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/postcss.config.js.hbs +6 -0
  112. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/src/App.tsx.hbs +12 -0
  113. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/src/index.css.hbs +3 -0
  114. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/src/index.tsx.hbs +21 -0
  115. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/src/lib/api.ts.hbs +52 -0
  116. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/src/pages/Home.tsx.hbs +34 -0
  117. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/tailwind.config.js.hbs +8 -0
  118. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/tsconfig.json.hbs +24 -0
  119. package/dist/templates/plopfiles/_modules/frontends/solid-vite/templates/vite.config.ts.hbs +21 -0
  120. package/dist/templates/plopfiles/_modules/frontends/vue-vite/module.js +54 -0
  121. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/index.html.hbs +13 -0
  122. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/postcss.config.js.hbs +6 -0
  123. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/src/App.vue.hbs +9 -0
  124. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/src/index.css.hbs +3 -0
  125. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/src/lib/api.ts.hbs +52 -0
  126. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/src/main.ts.hbs +14 -0
  127. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/src/pages/Home.vue.hbs +27 -0
  128. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/src/router.ts.hbs +13 -0
  129. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/tailwind.config.js.hbs +8 -0
  130. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/tsconfig.json.hbs +25 -0
  131. package/dist/templates/plopfiles/_modules/frontends/vue-vite/templates/vite.config.ts.hbs +21 -0
  132. package/dist/templates/plopfiles/_modules/infra/docker-compose/module.js +52 -0
  133. package/dist/templates/plopfiles/_modules/infra/docker-compose/templates/Dockerfile.backend.hbs +32 -0
  134. package/dist/templates/plopfiles/_modules/infra/docker-compose/templates/Dockerfile.frontend.hbs +31 -0
  135. package/dist/templates/plopfiles/_modules/infra/docker-compose/templates/docker-compose.yml.hbs +97 -0
  136. package/dist/templates/plopfiles/_modules/infra/github-actions/module.js +24 -0
  137. package/dist/templates/plopfiles/_modules/infra/github-actions/templates/.github/workflows/ci.yml.hbs +78 -0
  138. package/dist/templates/plopfiles/_modules/infra/github-actions/templates/.github/workflows/deploy.yml.hbs +60 -0
  139. package/dist/templates/plopfiles/_modules/infra/just/module.js +26 -0
  140. package/dist/templates/plopfiles/_modules/infra/just/templates/justfile.hbs +205 -0
  141. package/dist/templates/plopfiles/_modules/infra/kubernetes/module.js +30 -0
  142. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/base/deployment.yaml.hbs +48 -0
  143. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/base/ingress.yaml.hbs +23 -0
  144. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/base/kustomization.yaml.hbs +11 -0
  145. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/base/service.yaml.hbs +15 -0
  146. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/overlays/dev/deployment-patch.yaml.hbs +17 -0
  147. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/overlays/dev/kustomization.yaml.hbs +15 -0
  148. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/overlays/prod/deployment-patch.yaml.hbs +17 -0
  149. package/dist/templates/plopfiles/_modules/infra/kubernetes/templates/k8s/overlays/prod/kustomization.yaml.hbs +15 -0
  150. package/dist/templates/plopfiles/_modules/infra/pulumi/module.js +30 -0
  151. package/dist/templates/plopfiles/_modules/infra/pulumi/templates/.gitignore.hbs +5 -0
  152. package/dist/templates/plopfiles/_modules/infra/pulumi/templates/Pulumi.dev.yaml.hbs +3 -0
  153. package/dist/templates/plopfiles/_modules/infra/pulumi/templates/Pulumi.yaml.hbs +7 -0
  154. package/dist/templates/plopfiles/_modules/infra/pulumi/templates/index.ts.hbs +26 -0
  155. package/dist/templates/plopfiles/_modules/infra/pulumi/templates/package.json.hbs +12 -0
  156. package/dist/templates/plopfiles/_modules/infra/pulumi/templates/tsconfig.json.hbs +16 -0
  157. package/dist/templates/plopfiles/_modules/infra/terraform/module.js +31 -0
  158. package/dist/templates/plopfiles/_modules/infra/terraform/templates/.gitignore.hbs +12 -0
  159. package/dist/templates/plopfiles/_modules/infra/terraform/templates/main.tf.hbs +34 -0
  160. package/dist/templates/plopfiles/_modules/infra/terraform/templates/outputs.tf.hbs +15 -0
  161. package/dist/templates/plopfiles/_modules/infra/terraform/templates/terraform.tfvars.example.hbs +6 -0
  162. package/dist/templates/plopfiles/_modules/infra/terraform/templates/variables.tf.hbs +30 -0
  163. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/module.js +38 -0
  164. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/build.gradle.kts.hbs +102 -0
  165. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/proguard-rules.pro.hbs +20 -0
  166. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/AndroidManifest.xml.hbs +25 -0
  167. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/kotlin/com/example/app/ApiClient.kt.hbs +38 -0
  168. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/kotlin/com/example/app/App.kt.hbs +116 -0
  169. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/kotlin/com/example/app/MainActivity.kt.hbs +28 -0
  170. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/kotlin/com/example/app/ui/theme/Color.kt.hbs +11 -0
  171. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/kotlin/com/example/app/ui/theme/Theme.kt.hbs +55 -0
  172. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/kotlin/com/example/app/ui/theme/Type.kt.hbs +31 -0
  173. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/res/values/strings.xml.hbs +3 -0
  174. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/app/src/main/res/values/themes.xml.hbs +4 -0
  175. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/build.gradle.kts.hbs +6 -0
  176. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/gradle.properties.hbs +4 -0
  177. package/dist/templates/plopfiles/_modules/mobile/android-kotlin/templates/settings.gradle.kts.hbs +18 -0
  178. package/dist/templates/plopfiles/_modules/mobile/flutter/module.js +36 -0
  179. package/dist/templates/plopfiles/_modules/mobile/flutter/templates/.env.hbs +1 -0
  180. package/dist/templates/plopfiles/_modules/mobile/flutter/templates/lib/main.dart.hbs +29 -0
  181. package/dist/templates/plopfiles/_modules/mobile/flutter/templates/lib/screens/home_screen.dart.hbs +88 -0
  182. package/dist/templates/plopfiles/_modules/mobile/flutter/templates/lib/services/api_service.dart.hbs +61 -0
  183. package/dist/templates/plopfiles/_modules/mobile/flutter/templates/pubspec.yaml.hbs +25 -0
  184. package/dist/templates/plopfiles/_modules/mobile/ios-swift/module.js +39 -0
  185. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/App.swift.hbs +10 -0
  186. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/Assets.xcassets/AccentColor.colorset/Contents.json.hbs +11 -0
  187. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/Assets.xcassets/AppIcon.appiconset/Contents.json.hbs +13 -0
  188. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/Assets.xcassets/Contents.json.hbs +6 -0
  189. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/ContentView.swift.hbs +13 -0
  190. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/Services/APIClient.swift.hbs +58 -0
  191. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/Views/DetailsView.swift.hbs +22 -0
  192. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App/Views/HomeView.swift.hbs +62 -0
  193. package/dist/templates/plopfiles/_modules/mobile/ios-swift/templates/App.xcodeproj/project.pbxproj.hbs +363 -0
  194. package/dist/templates/plopfiles/_modules/mobile/react-native/module.js +36 -0
  195. package/dist/templates/plopfiles/_modules/mobile/react-native/templates/app/_layout.tsx.hbs +16 -0
  196. package/dist/templates/plopfiles/_modules/mobile/react-native/templates/app/index.tsx.hbs +66 -0
  197. package/dist/templates/plopfiles/_modules/mobile/react-native/templates/app.json.hbs +37 -0
  198. package/dist/templates/plopfiles/_modules/mobile/react-native/templates/package.json.hbs +29 -0
  199. package/dist/templates/plopfiles/_modules/mobile/react-native/templates/src/lib/api.ts.hbs +52 -0
  200. package/dist/templates/plopfiles/_modules/mobile/react-native/templates/tsconfig.json.hbs +11 -0
  201. package/dist/templates/plopfiles/_modules/quality/biome/module.js +44 -0
  202. package/dist/templates/plopfiles/_modules/quality/biome/templates/biome.json.hbs +126 -0
  203. package/dist/templates/plopfiles/_modules/quality/clippy/module.js +40 -0
  204. package/dist/templates/plopfiles/_modules/quality/clippy/templates/clippy.toml.hbs +29 -0
  205. package/dist/templates/plopfiles/_modules/quality/clippy/templates/rustfmt.toml.hbs +44 -0
  206. package/dist/templates/plopfiles/_modules/quality/golangci-lint/module.js +40 -0
  207. package/dist/templates/plopfiles/_modules/quality/golangci-lint/templates/.golangci.yml.hbs +199 -0
  208. package/dist/templates/plopfiles/_modules/quality/ruff/module.js +43 -0
  209. package/dist/templates/plopfiles/_modules/quality/ruff/templates/mypy.ini.hbs +48 -0
  210. package/dist/templates/plopfiles/_modules/quality/ruff/templates/ruff.toml.hbs +111 -0
  211. package/dist/templates/plopfiles/_modules/storybook/react-storybook/module.js +54 -0
  212. package/dist/templates/plopfiles/_modules/storybook/react-storybook/templates/.storybook/main.ts.hbs +44 -0
  213. package/dist/templates/plopfiles/_modules/storybook/react-storybook/templates/.storybook/preview.ts.hbs +68 -0
  214. package/dist/templates/plopfiles/_modules/storybook/react-storybook/templates/src/stories/Button.stories.tsx.hbs +158 -0
  215. package/dist/templates/plopfiles/_modules/types.ts +98 -0
  216. package/dist/templates/plopfiles/full-stack/plopfile.js +132 -0
  217. package/dist/templates/plopfiles/full-stack/templates/gitignore.hbs +44 -0
  218. package/dist/templates/plopfiles/full-stack/templates/package.json.hbs +21 -0
  219. package/dist/templates/plopfiles/presets/cli-go/module.js +43 -0
  220. package/dist/templates/plopfiles/presets/cli-go/templates/README.md.hbs +42 -0
  221. package/dist/templates/plopfiles/presets/cli-go/templates/config.json.hbs +9 -0
  222. package/dist/templates/plopfiles/presets/cli-node/module.js +45 -0
  223. package/dist/templates/plopfiles/presets/cli-node/templates/README.md.hbs +42 -0
  224. package/dist/templates/plopfiles/presets/cli-node/templates/config.json.hbs +9 -0
  225. package/dist/templates/plopfiles/presets/cli-python/module.js +43 -0
  226. package/dist/templates/plopfiles/presets/cli-python/templates/README.md.hbs +42 -0
  227. package/dist/templates/plopfiles/presets/cli-python/templates/config.json.hbs +9 -0
  228. package/dist/templates/plopfiles/presets/cli-rust/module.js +43 -0
  229. package/dist/templates/plopfiles/presets/cli-rust/templates/README.md.hbs +42 -0
  230. package/dist/templates/plopfiles/presets/cli-rust/templates/config.json.hbs +9 -0
  231. package/dist/templates/plopfiles/presets/loader.js +125 -0
  232. package/dist/templates/plopfiles/typescript-service/plopfile.js +186 -0
  233. package/dist/templates/plopfiles/typescript-service/templates/Dockerfile.hbs +29 -0
  234. package/dist/templates/plopfiles/typescript-service/templates/README.md.hbs +85 -0
  235. package/dist/templates/plopfiles/typescript-service/templates/config.ts.hbs +15 -0
  236. package/dist/templates/plopfiles/typescript-service/templates/db/index.ts.hbs +19 -0
  237. package/dist/templates/plopfiles/typescript-service/templates/db/schema.ts.hbs +16 -0
  238. package/dist/templates/plopfiles/typescript-service/templates/index.ts.hbs +89 -0
  239. package/dist/templates/plopfiles/typescript-service/templates/package.json.hbs +36 -0
  240. package/dist/templates/plopfiles/typescript-service/templates/routes/health.ts.hbs +61 -0
  241. package/dist/templates/plopfiles/typescript-service/templates/routes/index.ts.hbs +35 -0
  242. package/dist/templates/plopfiles/typescript-service/templates/tsconfig.json.hbs +24 -0
  243. package/dist/templates/plopfiles/typescript-service/templates/types.ts.hbs +28 -0
  244. package/dist/templates/typescript/component.module.css.tpl +6 -0
  245. package/dist/templates/typescript/component.test.tsx.tpl +9 -0
  246. package/dist/templates/typescript/component.tsx.tpl +17 -0
  247. package/dist/templates/typescript/component.types.ts.tpl +3 -0
  248. package/dist/templates/typescript/project/nextjs/app/globals.css.tpl +10 -0
  249. package/dist/templates/typescript/project/nextjs/app/layout.tsx.tpl +15 -0
  250. package/dist/templates/typescript/project/nextjs/app/page.tsx.tpl +8 -0
  251. package/dist/templates/typescript/project/nextjs/babel.config.js.tpl +8 -0
  252. package/dist/templates/typescript/project/nextjs/jest.config.js.tpl +10 -0
  253. package/dist/templates/typescript/project/nextjs/jest.setup.ts.tpl +6 -0
  254. package/dist/templates/typescript/project/nextjs/next-env.d.ts.tpl +5 -0
  255. package/dist/templates/typescript/project/nextjs/next.config.js.tpl +9 -0
  256. package/dist/templates/typescript/project/nextjs/package.json.tpl +1 -0
  257. package/dist/templates/typescript/project/nextjs/tsconfig.json.tpl +1 -0
  258. package/dist/templates/typescript/project/vite/App.css.tpl +8 -0
  259. package/dist/templates/typescript/project/vite/App.tsx.tpl +17 -0
  260. package/dist/templates/typescript/project/vite/index.css.tpl +8 -0
  261. package/dist/templates/typescript/project/vite/index.html.tpl +13 -0
  262. package/dist/templates/typescript/project/vite/main.tsx.tpl +10 -0
  263. package/dist/templates/typescript/project/vite/package.json.tpl +1 -0
  264. package/dist/templates/typescript/project/vite/test-setup.ts.tpl +1 -0
  265. package/dist/templates/typescript/project/vite/tsconfig.build.json.tpl +1 -0
  266. package/dist/templates/typescript/project/vite/tsconfig.json.tpl +1 -0
  267. package/dist/templates/typescript/project/vite/tsconfig.node.json.tpl +1 -0
  268. package/dist/templates/typescript/project/vite/vite.config.ts.tpl +18 -0
  269. package/dist/templates/typescript/service.api.ts.tpl +27 -0
  270. package/dist/templates/typescript/service.class.ts.tpl +28 -0
  271. package/dist/templates/typescript/service.handler.ts.tpl +42 -0
  272. package/dist/templates/typescript/service.schema.ts.tpl +16 -0
  273. package/package.json +95 -0
  274. package/templates/typescript/component.module.css.tpl +6 -0
  275. package/templates/typescript/component.test.tsx.tpl +9 -0
  276. package/templates/typescript/component.tsx.tpl +17 -0
  277. package/templates/typescript/component.types.ts.tpl +3 -0
  278. package/templates/typescript/project/nextjs/app/globals.css.tpl +10 -0
  279. package/templates/typescript/project/nextjs/app/layout.tsx.tpl +15 -0
  280. package/templates/typescript/project/nextjs/app/page.tsx.tpl +8 -0
  281. package/templates/typescript/project/nextjs/babel.config.js.tpl +8 -0
  282. package/templates/typescript/project/nextjs/jest.config.js.tpl +10 -0
  283. package/templates/typescript/project/nextjs/jest.setup.ts.tpl +6 -0
  284. package/templates/typescript/project/nextjs/next-env.d.ts.tpl +5 -0
  285. package/templates/typescript/project/nextjs/next.config.js.tpl +9 -0
  286. package/templates/typescript/project/nextjs/package.json.tpl +1 -0
  287. package/templates/typescript/project/nextjs/tsconfig.json.tpl +1 -0
  288. package/templates/typescript/project/vite/App.css.tpl +8 -0
  289. package/templates/typescript/project/vite/App.tsx.tpl +17 -0
  290. package/templates/typescript/project/vite/index.css.tpl +8 -0
  291. package/templates/typescript/project/vite/index.html.tpl +13 -0
  292. package/templates/typescript/project/vite/main.tsx.tpl +10 -0
  293. package/templates/typescript/project/vite/package.json.tpl +1 -0
  294. package/templates/typescript/project/vite/test-setup.ts.tpl +1 -0
  295. package/templates/typescript/project/vite/tsconfig.build.json.tpl +1 -0
  296. package/templates/typescript/project/vite/tsconfig.json.tpl +1 -0
  297. package/templates/typescript/project/vite/tsconfig.node.json.tpl +1 -0
  298. package/templates/typescript/project/vite/vite.config.ts.tpl +18 -0
  299. package/templates/typescript/service.api.ts.tpl +27 -0
  300. package/templates/typescript/service.class.ts.tpl +28 -0
  301. package/templates/typescript/service.handler.ts.tpl +42 -0
  302. package/templates/typescript/service.schema.ts.tpl +16 -0
@@ -0,0 +1,54 @@
1
+ # Azure Provider Configuration
2
+ terraform {
3
+ required_providers {
4
+ azurerm = {
5
+ source = "hashicorp/azurerm"
6
+ version = "~> 3.0"
7
+ }
8
+ }
9
+ }
10
+
11
+ provider "azurerm" {
12
+ features {}
13
+ }
14
+
15
+ variable "azure_region" {
16
+ description = "Azure region"
17
+ type = string
18
+ default = "eastus"
19
+ }
20
+
21
+ variable "environment" {
22
+ description = "Environment name (e.g., dev, staging, prod)"
23
+ type = string
24
+ default = "dev"
25
+ }
26
+
27
+ variable "app_port" {
28
+ description = "Application port"
29
+ type = number
30
+ default = 3000
31
+ }
32
+
33
+ variable "container_image" {
34
+ description = "Container image to deploy"
35
+ type = string
36
+ default = ""
37
+ }
38
+
39
+ locals {
40
+ project_name = "{{kebabCase name}}"
41
+ common_tags = {
42
+ Project = local.project_name
43
+ Environment = var.environment
44
+ ManagedBy = "terraform"
45
+ }
46
+ }
47
+
48
+ # Resource Group
49
+ resource "azurerm_resource_group" "main" {
50
+ name = "${local.project_name}-${var.environment}-rg"
51
+ location = var.azure_region
52
+
53
+ tags = local.common_tags
54
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Cloudflare Module
3
+ *
4
+ * Provides Cloudflare Workers, Pages, R2, D1, and KV configuration.
5
+ */
6
+
7
+ import { dirname, resolve } from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+
10
+ const __dirname = dirname(fileURLToPath(import.meta.url));
11
+ const templatesDir = resolve(__dirname, "templates");
12
+
13
+ export default function (data) {
14
+ return [
15
+ {
16
+ type: "addMany",
17
+ destination: "{{projectDir}}",
18
+ base: templatesDir,
19
+ templateFiles: `${templatesDir}/**/*.hbs`,
20
+ stripExtensions: ["hbs"],
21
+ data,
22
+ },
23
+ ];
24
+ }
25
+
26
+ export const description = "Cloudflare Workers, Pages, R2, D1, KV";
27
+
28
+ export const devDependencies = {
29
+ wrangler: "^3.22.0",
30
+ "@cloudflare/workers-types": "^4.20240117.0",
31
+ };
32
+
33
+ export const scripts = {
34
+ "cf:dev": "wrangler dev",
35
+ "cf:deploy": "wrangler deploy",
36
+ "cf:pages:dev": "wrangler pages dev",
37
+ "cf:pages:deploy": "wrangler pages deploy",
38
+ };
39
+
40
+ export const envVars = {
41
+ CLOUDFLARE_ACCOUNT_ID: "your-account-id",
42
+ CLOUDFLARE_API_TOKEN: "your-api-token",
43
+ };
@@ -0,0 +1,6 @@
1
+ /// <reference types="@cloudflare/workers-types" />
2
+
3
+ declare module "*.sql" {
4
+ const content: string;
5
+ export default content;
6
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * {{titleCase name}} Cloudflare Worker
3
+ */
4
+
5
+ export interface Env {
6
+ ENVIRONMENT: string;
7
+ // KV: KVNamespace;
8
+ // DB: D1Database;
9
+ // BUCKET: R2Bucket;
10
+ }
11
+
12
+ export default {
13
+ async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
14
+ const url = new URL(request.url);
15
+
16
+ // Router
17
+ switch (url.pathname) {
18
+ case "/":
19
+ return new Response(JSON.stringify({
20
+ message: "Welcome to {{titleCase name}} API",
21
+ environment: env.ENVIRONMENT,
22
+ }), {
23
+ headers: { "Content-Type": "application/json" },
24
+ });
25
+
26
+ case "/health":
27
+ return new Response(JSON.stringify({
28
+ status: "ok",
29
+ timestamp: new Date().toISOString(),
30
+ service: "{{kebabCase name}}-worker",
31
+ }), {
32
+ headers: { "Content-Type": "application/json" },
33
+ });
34
+
35
+ default:
36
+ return new Response("Not Found", { status: 404 });
37
+ }
38
+ },
39
+
40
+ // Scheduled handler (cron triggers)
41
+ // async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext) {
42
+ // ctx.waitUntil(doSomeTask());
43
+ // },
44
+
45
+ // Queue handler
46
+ // async queue(batch: MessageBatch<any>, env: Env) {
47
+ // for (const message of batch.messages) {
48
+ // console.log(message.body);
49
+ // }
50
+ // },
51
+ };
@@ -0,0 +1,36 @@
1
+ name = "{{kebabCase name}}"
2
+ main = "src/worker.ts"
3
+ compatibility_date = "2024-01-01"
4
+
5
+ # Workers configuration
6
+ [vars]
7
+ ENVIRONMENT = "development"
8
+
9
+ # KV Namespaces (uncomment to use)
10
+ # [[kv_namespaces]]
11
+ # binding = "KV"
12
+ # id = "your-kv-namespace-id"
13
+
14
+ # D1 Databases (uncomment to use)
15
+ # [[d1_databases]]
16
+ # binding = "DB"
17
+ # database_name = "{{kebabCase name}}"
18
+ # database_id = "your-d1-database-id"
19
+
20
+ # R2 Buckets (uncomment to use)
21
+ # [[r2_buckets]]
22
+ # binding = "BUCKET"
23
+ # bucket_name = "{{kebabCase name}}-bucket"
24
+
25
+ # Durable Objects (uncomment to use)
26
+ # [durable_objects]
27
+ # bindings = [
28
+ # { name = "COUNTER", class_name = "Counter" }
29
+ # ]
30
+
31
+ # Environment-specific config
32
+ [env.production]
33
+ vars = { ENVIRONMENT = "production" }
34
+
35
+ [env.staging]
36
+ vars = { ENVIRONMENT = "staging" }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Google Cloud Platform Module
3
+ */
4
+
5
+ import { dirname, resolve } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ const templatesDir = resolve(__dirname, "templates");
10
+
11
+ export default function (data) {
12
+ return [
13
+ {
14
+ type: "addMany",
15
+ destination: "{{projectDir}}/infra/terraform",
16
+ base: templatesDir,
17
+ templateFiles: `${templatesDir}/**/*.hbs`,
18
+ stripExtensions: ["hbs"],
19
+ data,
20
+ },
21
+ ];
22
+ }
23
+
24
+ export const description = "GCP cloud resources (Cloud Run, Cloud SQL, GCS, etc.)";
25
+
26
+ export const envVars = {
27
+ GCP_PROJECT: "your-project-id",
28
+ GCP_REGION: "us-central1",
29
+ };
30
+
31
+ export const requires = ["infra/terraform"];
@@ -0,0 +1,89 @@
1
+ # Cloud Run Service
2
+ resource "google_cloud_run_v2_service" "app" {
3
+ name = local.project_name
4
+ location = var.gcp_region
5
+
6
+ template {
7
+ containers {
8
+ image = "${var.gcp_region}-docker.pkg.dev/${var.gcp_project}/${google_artifact_registry_repository.app.name}/${local.project_name}:latest"
9
+
10
+ ports {
11
+ container_port = var.app_port
12
+ }
13
+
14
+ env {
15
+ name = "NODE_ENV"
16
+ value = var.environment
17
+ }
18
+
19
+ env {
20
+ name = "PORT"
21
+ value = tostring(var.app_port)
22
+ }
23
+
24
+ resources {
25
+ limits = {
26
+ cpu = "1"
27
+ memory = "512Mi"
28
+ }
29
+ }
30
+
31
+ startup_probe {
32
+ http_get {
33
+ path = "/health"
34
+ port = var.app_port
35
+ }
36
+ initial_delay_seconds = 5
37
+ period_seconds = 10
38
+ }
39
+
40
+ liveness_probe {
41
+ http_get {
42
+ path = "/health/live"
43
+ port = var.app_port
44
+ }
45
+ period_seconds = 10
46
+ }
47
+ }
48
+
49
+ scaling {
50
+ min_instance_count = var.environment == "prod" ? 1 : 0
51
+ max_instance_count = var.environment == "prod" ? 10 : 2
52
+ }
53
+ }
54
+
55
+ traffic {
56
+ type = "TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST"
57
+ percent = 100
58
+ }
59
+
60
+ depends_on = [google_project_service.apis]
61
+ }
62
+
63
+ # Allow public access
64
+ resource "google_cloud_run_service_iam_member" "public" {
65
+ location = google_cloud_run_v2_service.app.location
66
+ service = google_cloud_run_v2_service.app.name
67
+ role = "roles/run.invoker"
68
+ member = "allUsers"
69
+ }
70
+
71
+ # Artifact Registry
72
+ resource "google_artifact_registry_repository" "app" {
73
+ location = var.gcp_region
74
+ repository_id = local.project_name
75
+ format = "DOCKER"
76
+
77
+ depends_on = [google_project_service.apis]
78
+ }
79
+
80
+ # Outputs
81
+ output "cloud_run_url" {
82
+ description = "Cloud Run service URL"
83
+ value = google_cloud_run_v2_service.app.uri
84
+ }
85
+
86
+ output "artifact_registry" {
87
+ description = "Artifact Registry URL"
88
+ value = "${var.gcp_region}-docker.pkg.dev/${var.gcp_project}/${google_artifact_registry_repository.app.name}"
89
+ }
@@ -0,0 +1,62 @@
1
+ # GCP Provider Configuration
2
+ terraform {
3
+ required_providers {
4
+ google = {
5
+ source = "hashicorp/google"
6
+ version = "~> 5.0"
7
+ }
8
+ }
9
+ }
10
+
11
+ provider "google" {
12
+ project = var.gcp_project
13
+ region = var.gcp_region
14
+ }
15
+
16
+ variable "gcp_project" {
17
+ description = "GCP Project ID"
18
+ type = string
19
+ }
20
+
21
+ variable "gcp_region" {
22
+ description = "GCP region"
23
+ type = string
24
+ default = "us-central1"
25
+ }
26
+
27
+ variable "environment" {
28
+ description = "Environment name (e.g., dev, staging, prod)"
29
+ type = string
30
+ default = "dev"
31
+ }
32
+
33
+ variable "app_port" {
34
+ description = "Application port"
35
+ type = number
36
+ default = 3000
37
+ }
38
+
39
+ locals {
40
+ project_name = "{{kebabCase name}}"
41
+ common_tags = {
42
+ Project = local.project_name
43
+ Environment = var.environment
44
+ ManagedBy = "terraform"
45
+ }
46
+ }
47
+
48
+ # Enable required APIs
49
+ resource "google_project_service" "apis" {
50
+ for_each = toset([
51
+ "run.googleapis.com",
52
+ "artifactregistry.googleapis.com",
53
+ "cloudbuild.googleapis.com",
54
+ "secretmanager.googleapis.com",
55
+ ])
56
+
57
+ project = var.gcp_project
58
+ service = each.key
59
+
60
+ disable_dependent_services = false
61
+ disable_on_destroy = false
62
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Supabase Module
3
+ *
4
+ * Provides Supabase configuration for database, auth, storage, and edge functions.
5
+ */
6
+
7
+ import { dirname, resolve } from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+
10
+ const __dirname = dirname(fileURLToPath(import.meta.url));
11
+ const templatesDir = resolve(__dirname, "templates");
12
+
13
+ export default function (data) {
14
+ return [
15
+ {
16
+ type: "addMany",
17
+ destination: "{{projectDir}}",
18
+ base: templatesDir,
19
+ templateFiles: `${templatesDir}/**/*.hbs`,
20
+ stripExtensions: ["hbs"],
21
+ data,
22
+ },
23
+ ];
24
+ }
25
+
26
+ export const description = "Supabase backend (Postgres, Auth, Storage, Edge Functions)";
27
+
28
+ export const dependencies = {
29
+ "@supabase/supabase-js": "^2.39.0",
30
+ };
31
+
32
+ export const devDependencies = {
33
+ supabase: "^1.131.0",
34
+ };
35
+
36
+ export const scripts = {
37
+ "supabase:start": "supabase start",
38
+ "supabase:stop": "supabase stop",
39
+ "supabase:status": "supabase status",
40
+ "supabase:db:reset": "supabase db reset",
41
+ "supabase:db:push": "supabase db push",
42
+ "supabase:gen:types": "supabase gen types typescript --local > src/types/supabase.ts",
43
+ "supabase:functions:serve": "supabase functions serve",
44
+ "supabase:functions:deploy": "supabase functions deploy",
45
+ };
46
+
47
+ export const envVars = {
48
+ SUPABASE_URL: "http://localhost:54321",
49
+ SUPABASE_ANON_KEY: "your-anon-key",
50
+ SUPABASE_SERVICE_ROLE_KEY: "your-service-role-key",
51
+ };
@@ -0,0 +1,25 @@
1
+ import { createClient } from "@supabase/supabase-js";
2
+ import type { Database } from "../types/supabase";
3
+
4
+ const supabaseUrl = process.env.SUPABASE_URL || process.env.NEXT_PUBLIC_SUPABASE_URL || "";
5
+ const supabaseAnonKey = process.env.SUPABASE_ANON_KEY || process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || "";
6
+
7
+ if (!supabaseUrl || !supabaseAnonKey) {
8
+ throw new Error("Missing Supabase environment variables");
9
+ }
10
+
11
+ export const supabase = createClient<Database>(supabaseUrl, supabaseAnonKey);
12
+
13
+ // Server-side client with service role (use carefully!)
14
+ export function createServiceClient() {
15
+ const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
16
+ if (!serviceRoleKey) {
17
+ throw new Error("Missing SUPABASE_SERVICE_ROLE_KEY");
18
+ }
19
+ return createClient<Database>(supabaseUrl, serviceRoleKey, {
20
+ auth: {
21
+ autoRefreshToken: false,
22
+ persistSession: false,
23
+ },
24
+ });
25
+ }
@@ -0,0 +1,52 @@
1
+ // This file is auto-generated by `supabase gen types typescript`
2
+ // Run: npm run supabase:gen:types
3
+
4
+ export type Json =
5
+ | string
6
+ | number
7
+ | boolean
8
+ | null
9
+ | { [key: string]: Json | undefined }
10
+ | Json[]
11
+
12
+ export interface Database {
13
+ public: {
14
+ Tables: {
15
+ profiles: {
16
+ Row: {
17
+ id: string
18
+ email: string
19
+ full_name: string | null
20
+ avatar_url: string | null
21
+ created_at: string
22
+ updated_at: string
23
+ }
24
+ Insert: {
25
+ id: string
26
+ email: string
27
+ full_name?: string | null
28
+ avatar_url?: string | null
29
+ created_at?: string
30
+ updated_at?: string
31
+ }
32
+ Update: {
33
+ id?: string
34
+ email?: string
35
+ full_name?: string | null
36
+ avatar_url?: string | null
37
+ created_at?: string
38
+ updated_at?: string
39
+ }
40
+ }
41
+ }
42
+ Views: {
43
+ [_ in never]: never
44
+ }
45
+ Functions: {
46
+ [_ in never]: never
47
+ }
48
+ Enums: {
49
+ [_ in never]: never
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,71 @@
1
+ # Supabase local development configuration
2
+ # See: https://supabase.com/docs/guides/cli/config
3
+
4
+ [api]
5
+ enabled = true
6
+ port = 54321
7
+ schemas = ["public", "graphql_public"]
8
+ extra_search_path = ["public", "extensions"]
9
+ max_rows = 1000
10
+
11
+ [db]
12
+ port = 54322
13
+ shadow_port = 54320
14
+ major_version = 15
15
+
16
+ [db.pooler]
17
+ enabled = false
18
+ port = 54329
19
+ pool_mode = "transaction"
20
+ default_pool_size = 20
21
+ max_client_conn = 100
22
+
23
+ [studio]
24
+ enabled = true
25
+ port = 54323
26
+ api_url = "http://localhost"
27
+
28
+ [inbucket]
29
+ enabled = true
30
+ port = 54324
31
+ smtp_port = 54325
32
+ pop3_port = 54326
33
+
34
+ [storage]
35
+ enabled = true
36
+ file_size_limit = "50MiB"
37
+
38
+ [auth]
39
+ enabled = true
40
+ site_url = "http://localhost:5173"
41
+ additional_redirect_urls = ["http://localhost:3000"]
42
+ jwt_expiry = 3600
43
+ enable_refresh_token_rotation = true
44
+ refresh_token_reuse_interval = 10
45
+ enable_signup = true
46
+
47
+ [auth.email]
48
+ enable_signup = true
49
+ double_confirm_changes = true
50
+ enable_confirmations = false
51
+
52
+ [auth.sms]
53
+ enable_signup = false
54
+ enable_confirmations = false
55
+
56
+ [auth.external.github]
57
+ enabled = false
58
+ client_id = ""
59
+ secret = ""
60
+ redirect_uri = "http://localhost:54321/auth/v1/callback"
61
+
62
+ [auth.external.google]
63
+ enabled = false
64
+ client_id = ""
65
+ secret = ""
66
+ redirect_uri = "http://localhost:54321/auth/v1/callback"
67
+
68
+ [analytics]
69
+ enabled = false
70
+ port = 54327
71
+ backend = "postgres"
@@ -0,0 +1,34 @@
1
+ // Supabase Edge Function
2
+ // Deploy with: supabase functions deploy hello
3
+
4
+ import { serve } from "https://deno.land/std@0.168.0/http/server.ts";
5
+
6
+ const corsHeaders = {
7
+ "Access-Control-Allow-Origin": "*",
8
+ "Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type",
9
+ };
10
+
11
+ serve(async (req: Request) => {
12
+ // Handle CORS preflight
13
+ if (req.method === "OPTIONS") {
14
+ return new Response("ok", { headers: corsHeaders });
15
+ }
16
+
17
+ try {
18
+ const { name } = await req.json();
19
+
20
+ const data = {
21
+ message: `Hello ${name || "World"}!`,
22
+ timestamp: new Date().toISOString(),
23
+ };
24
+
25
+ return new Response(JSON.stringify(data), {
26
+ headers: { ...corsHeaders, "Content-Type": "application/json" },
27
+ });
28
+ } catch (error) {
29
+ return new Response(JSON.stringify({ error: error.message }), {
30
+ status: 400,
31
+ headers: { ...corsHeaders, "Content-Type": "application/json" },
32
+ });
33
+ }
34
+ });
@@ -0,0 +1,60 @@
1
+ -- Initial database schema for {{titleCase name}}
2
+
3
+ -- Enable necessary extensions
4
+ create extension if not exists "uuid-ossp";
5
+
6
+ -- Users profile table (extends Supabase auth.users)
7
+ create table if not exists public.profiles (
8
+ id uuid references auth.users on delete cascade primary key,
9
+ email text unique not null,
10
+ full_name text,
11
+ avatar_url text,
12
+ created_at timestamptz default now() not null,
13
+ updated_at timestamptz default now() not null
14
+ );
15
+
16
+ -- Enable Row Level Security
17
+ alter table public.profiles enable row level security;
18
+
19
+ -- Policies for profiles
20
+ create policy "Users can view own profile"
21
+ on public.profiles for select
22
+ using (auth.uid() = id);
23
+
24
+ create policy "Users can update own profile"
25
+ on public.profiles for update
26
+ using (auth.uid() = id);
27
+
28
+ -- Function to handle new user creation
29
+ create or replace function public.handle_new_user()
30
+ returns trigger as $$
31
+ begin
32
+ insert into public.profiles (id, email, full_name, avatar_url)
33
+ values (
34
+ new.id,
35
+ new.email,
36
+ new.raw_user_meta_data->>'full_name',
37
+ new.raw_user_meta_data->>'avatar_url'
38
+ );
39
+ return new;
40
+ end;
41
+ $$ language plpgsql security definer;
42
+
43
+ -- Trigger for new user creation
44
+ create or replace trigger on_auth_user_created
45
+ after insert on auth.users
46
+ for each row execute procedure public.handle_new_user();
47
+
48
+ -- Function to update updated_at timestamp
49
+ create or replace function public.update_updated_at()
50
+ returns trigger as $$
51
+ begin
52
+ new.updated_at = now();
53
+ return new;
54
+ end;
55
+ $$ language plpgsql;
56
+
57
+ -- Trigger for updated_at
58
+ create trigger profiles_updated_at
59
+ before update on public.profiles
60
+ for each row execute procedure public.update_updated_at();