@donotdev/cli 0.0.3

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 (281) hide show
  1. package/LICENSE.md +48 -0
  2. package/README.md +291 -0
  3. package/dependencies-matrix.json +694 -0
  4. package/dist/bin/commands/build.d.ts +11 -0
  5. package/dist/bin/commands/build.d.ts.map +1 -0
  6. package/dist/bin/commands/build.js +8162 -0
  7. package/dist/bin/commands/build.js.map +1 -0
  8. package/dist/bin/commands/bump.d.ts +11 -0
  9. package/dist/bin/commands/bump.d.ts.map +1 -0
  10. package/dist/bin/commands/bump.js +8004 -0
  11. package/dist/bin/commands/bump.js.map +1 -0
  12. package/dist/bin/commands/cacheout.d.ts +11 -0
  13. package/dist/bin/commands/cacheout.d.ts.map +1 -0
  14. package/dist/bin/commands/cacheout.js +7630 -0
  15. package/dist/bin/commands/cacheout.js.map +1 -0
  16. package/dist/bin/commands/create-app.d.ts +11 -0
  17. package/dist/bin/commands/create-app.d.ts.map +1 -0
  18. package/dist/bin/commands/create-app.js +9032 -0
  19. package/dist/bin/commands/create-app.js.map +1 -0
  20. package/dist/bin/commands/create-project.d.ts +11 -0
  21. package/dist/bin/commands/create-project.d.ts.map +1 -0
  22. package/dist/bin/commands/create-project.js +9643 -0
  23. package/dist/bin/commands/create-project.js.map +1 -0
  24. package/dist/bin/commands/deploy.d.ts +11 -0
  25. package/dist/bin/commands/deploy.d.ts.map +1 -0
  26. package/dist/bin/commands/deploy.js +9007 -0
  27. package/dist/bin/commands/deploy.js.map +1 -0
  28. package/dist/bin/commands/dev.d.ts +11 -0
  29. package/dist/bin/commands/dev.d.ts.map +1 -0
  30. package/dist/bin/commands/dev.js +7892 -0
  31. package/dist/bin/commands/dev.js.map +1 -0
  32. package/dist/bin/commands/emu.d.ts +11 -0
  33. package/dist/bin/commands/emu.d.ts.map +1 -0
  34. package/dist/bin/commands/emu.js +8302 -0
  35. package/dist/bin/commands/emu.js.map +1 -0
  36. package/dist/bin/commands/format.d.ts +11 -0
  37. package/dist/bin/commands/format.d.ts.map +1 -0
  38. package/dist/bin/commands/format.js +8009 -0
  39. package/dist/bin/commands/format.js.map +1 -0
  40. package/dist/bin/commands/lint.d.ts +11 -0
  41. package/dist/bin/commands/lint.d.ts.map +1 -0
  42. package/dist/bin/commands/lint.js +7481 -0
  43. package/dist/bin/commands/lint.js.map +1 -0
  44. package/dist/bin/commands/preview.d.ts +11 -0
  45. package/dist/bin/commands/preview.d.ts.map +1 -0
  46. package/dist/bin/commands/preview.js +7909 -0
  47. package/dist/bin/commands/preview.js.map +1 -0
  48. package/dist/bin/commands/sync-secrets.d.ts +11 -0
  49. package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
  50. package/dist/bin/commands/sync-secrets.js +8227 -0
  51. package/dist/bin/commands/sync-secrets.js.map +1 -0
  52. package/dist/bin/dndev.js +222 -0
  53. package/dist/bin/donotdev.js +222 -0
  54. package/dist/index.d.ts +8 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +12820 -0
  57. package/dist/index.js.map +1 -0
  58. package/package.json +71 -0
  59. package/templates/app-demo/index.html.example +20 -0
  60. package/templates/app-demo/public/favicon.ico.example +0 -0
  61. package/templates/app-demo/public/fonts/Roboto-400-cyrillic-ext.woff2.example +0 -0
  62. package/templates/app-demo/public/fonts/Roboto-400-cyrillic.woff2.example +0 -0
  63. package/templates/app-demo/public/fonts/Roboto-400-greek-ext.woff2.example +0 -0
  64. package/templates/app-demo/public/fonts/Roboto-400-greek.woff2.example +0 -0
  65. package/templates/app-demo/public/fonts/Roboto-400-latin-ext.woff2.example +0 -0
  66. package/templates/app-demo/public/fonts/Roboto-400-latin.woff2.example +0 -0
  67. package/templates/app-demo/public/fonts/Roboto-400-vietnamese.woff2.example +0 -0
  68. package/templates/app-demo/public/fonts/Roboto-700-cyrillic-ext.woff2.example +0 -0
  69. package/templates/app-demo/public/fonts/Roboto-700-cyrillic.woff2.example +0 -0
  70. package/templates/app-demo/public/fonts/Roboto-700-greek-ext.woff2.example +0 -0
  71. package/templates/app-demo/public/fonts/Roboto-700-greek.woff2.example +0 -0
  72. package/templates/app-demo/public/fonts/Roboto-700-latin-ext.woff2.example +0 -0
  73. package/templates/app-demo/public/fonts/Roboto-700-latin.woff2.example +0 -0
  74. package/templates/app-demo/public/fonts/Roboto-700-vietnamese.woff2.example +0 -0
  75. package/templates/app-demo/public/fonts/fonts.css.example +144 -0
  76. package/templates/app-demo/public/logo.png.example +0 -0
  77. package/templates/app-demo/public/logo.svg.example +1 -0
  78. package/templates/app-demo/public/manifest.json.example +10 -0
  79. package/templates/app-demo/src/App.tsx.example +17 -0
  80. package/templates/app-demo/src/Routes.tsx.example +20 -0
  81. package/templates/app-demo/src/components/ThemeToggle.tsx.example +48 -0
  82. package/templates/app-demo/src/globals.css.example +4 -0
  83. package/templates/app-demo/src/main.tsx.example +27 -0
  84. package/templates/app-demo/src/pages/DetailPage.tsx.example +103 -0
  85. package/templates/app-demo/src/pages/FullPage.tsx.example +142 -0
  86. package/templates/app-demo/src/pages/HomePage.tsx.example +79 -0
  87. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +511 -0
  88. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +152 -0
  89. package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +266 -0
  90. package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +20 -0
  91. package/templates/app-demo/src/pages/components/componentConfig.ts.example +921 -0
  92. package/templates/app-demo/src/themes.css.example +179 -0
  93. package/templates/app-demo/tsconfig.json.example +9 -0
  94. package/templates/app-demo/vite.config.ts.example +53 -0
  95. package/templates/app-next/.env.example +92 -0
  96. package/templates/app-next/next.config.ts.example +8 -0
  97. package/templates/app-next/postcss.config.js.example +58 -0
  98. package/templates/app-next/service-account-key.json.example +2 -0
  99. package/templates/app-next/src/app/ClientLayout.tsx.example +39 -0
  100. package/templates/app-next/src/app/layout.tsx.example +52 -0
  101. package/templates/app-next/src/app/not-found.tsx.example +21 -0
  102. package/templates/app-next/src/config/app.ts.example +75 -0
  103. package/templates/app-next/src/config/legal.ts.example +170 -0
  104. package/templates/app-next/src/globals.css.example +15 -0
  105. package/templates/app-next/src/locales/dndev_en.json.example +516 -0
  106. package/templates/app-next/src/pages/HomePage.tsx.example +20 -0
  107. package/templates/app-next/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  108. package/templates/app-next/src/pages/legal/PrivacyPage.tsx.example +69 -0
  109. package/templates/app-next/src/pages/legal/TermsPage.tsx.example +71 -0
  110. package/templates/app-next/src/themes.css.example +179 -0
  111. package/templates/app-next/tsconfig.json.example +11 -0
  112. package/templates/app-payload/.env.example +28 -0
  113. package/templates/app-payload/README.md.example +233 -0
  114. package/templates/app-payload/collections/Company.ts.example +125 -0
  115. package/templates/app-payload/collections/Hero.ts.example +62 -0
  116. package/templates/app-payload/collections/Media.ts.example +41 -0
  117. package/templates/app-payload/collections/Products.ts.example +115 -0
  118. package/templates/app-payload/collections/Services.ts.example +104 -0
  119. package/templates/app-payload/collections/Testimonials.ts.example +92 -0
  120. package/templates/app-payload/collections/Users.ts.example +35 -0
  121. package/templates/app-payload/src/server.ts.example +79 -0
  122. package/templates/app-payload/tsconfig.json.example +24 -0
  123. package/templates/app-vite/.env.example +77 -0
  124. package/templates/app-vite/index.html.example +127 -0
  125. package/templates/app-vite/service-account-key.json.example +2 -0
  126. package/templates/app-vite/src/App.tsx.example +39 -0
  127. package/templates/app-vite/src/Routes.tsx.example +16 -0
  128. package/templates/app-vite/src/config/app.ts.example +75 -0
  129. package/templates/app-vite/src/config/legal.ts.example +170 -0
  130. package/templates/app-vite/src/globals.css.example +11 -0
  131. package/templates/app-vite/src/locales/dndev_en.json.example +516 -0
  132. package/templates/app-vite/src/main.tsx.example +21 -0
  133. package/templates/app-vite/src/pages/HomePage.tsx.example +22 -0
  134. package/templates/app-vite/src/pages/NotFoundPage.tsx.example +33 -0
  135. package/templates/app-vite/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  136. package/templates/app-vite/src/pages/legal/PrivacyPage.tsx.example +69 -0
  137. package/templates/app-vite/src/pages/legal/TermsPage.tsx.example +71 -0
  138. package/templates/app-vite/src/pages/locales/README.md.example +1 -0
  139. package/templates/app-vite/src/pages/locales/example_en.json.example +5 -0
  140. package/templates/app-vite/src/themes.css.example +179 -0
  141. package/templates/app-vite/tsconfig.json.example +9 -0
  142. package/templates/app-vite/vite.config.ts.example +9 -0
  143. package/templates/functions-firebase/README.md.example +129 -0
  144. package/templates/functions-firebase/build.mjs.example +52 -0
  145. package/templates/functions-firebase/functions-firebase/.env.example.example +45 -0
  146. package/templates/functions-firebase/functions-firebase/README.md.example +123 -0
  147. package/templates/functions-firebase/functions-firebase/build.mjs.example +52 -0
  148. package/templates/functions-firebase/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  149. package/templates/functions-firebase/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  150. package/templates/functions-firebase/functions-firebase/src/auth/index.ts.example +11 -0
  151. package/templates/functions-firebase/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  152. package/templates/functions-firebase/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  153. package/templates/functions-firebase/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  154. package/templates/functions-firebase/functions-firebase/src/billing/index.ts.example +10 -0
  155. package/templates/functions-firebase/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  156. package/templates/functions-firebase/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  157. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +19 -0
  158. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  159. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +14 -0
  160. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +12 -0
  161. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +14 -0
  162. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  163. package/templates/functions-firebase/functions-firebase/src/index.ts.example +45 -0
  164. package/templates/functions-firebase/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  165. package/templates/functions-firebase/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  166. package/templates/functions-firebase/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  167. package/templates/functions-firebase/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  168. package/templates/functions-firebase/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  169. package/templates/functions-firebase/functions-firebase/src/oauth/index.ts.example +17 -0
  170. package/templates/functions-firebase/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  171. package/templates/functions-firebase/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  172. package/templates/functions-firebase/functions-firebase/tsconfig.json.example +21 -0
  173. package/templates/functions-firebase/functions.yaml.example +14 -0
  174. package/templates/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  175. package/templates/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  176. package/templates/functions-firebase/src/auth/index.ts.example +11 -0
  177. package/templates/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  178. package/templates/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  179. package/templates/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  180. package/templates/functions-firebase/src/billing/index.ts.example +10 -0
  181. package/templates/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  182. package/templates/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  183. package/templates/functions-firebase/src/crud/createEntity.ts.example +19 -0
  184. package/templates/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  185. package/templates/functions-firebase/src/crud/getEntity.ts.example +14 -0
  186. package/templates/functions-firebase/src/crud/index.ts.example +12 -0
  187. package/templates/functions-firebase/src/crud/listEntities.ts.example +14 -0
  188. package/templates/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  189. package/templates/functions-firebase/src/index.ts.example +45 -0
  190. package/templates/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  191. package/templates/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  192. package/templates/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  193. package/templates/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  194. package/templates/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  195. package/templates/functions-firebase/src/oauth/index.ts.example +17 -0
  196. package/templates/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  197. package/templates/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  198. package/templates/functions-firebase/tsconfig.json.example +24 -0
  199. package/templates/functions-vercel/README.md.example +116 -0
  200. package/templates/functions-vercel/build.mjs.example +52 -0
  201. package/templates/functions-vercel/functions-vercel/.env.example.example +37 -0
  202. package/templates/functions-vercel/functions-vercel/README.md.example +116 -0
  203. package/templates/functions-vercel/functions-vercel/build.mjs.example +52 -0
  204. package/templates/functions-vercel/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  205. package/templates/functions-vercel/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  206. package/templates/functions-vercel/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  207. package/templates/functions-vercel/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  208. package/templates/functions-vercel/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  209. package/templates/functions-vercel/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  210. package/templates/functions-vercel/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  211. package/templates/functions-vercel/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  212. package/templates/functions-vercel/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  213. package/templates/functions-vercel/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  214. package/templates/functions-vercel/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  215. package/templates/functions-vercel/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  216. package/templates/functions-vercel/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  217. package/templates/functions-vercel/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  218. package/templates/functions-vercel/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  219. package/templates/functions-vercel/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  220. package/templates/functions-vercel/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  221. package/templates/functions-vercel/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  222. package/templates/functions-vercel/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  223. package/templates/functions-vercel/functions-vercel/tsconfig.json.example +21 -0
  224. package/templates/functions-vercel/functions-vercel/vercel.json.example +14 -0
  225. package/templates/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  226. package/templates/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  227. package/templates/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  228. package/templates/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  229. package/templates/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  230. package/templates/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  231. package/templates/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  232. package/templates/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  233. package/templates/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  234. package/templates/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  235. package/templates/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  236. package/templates/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  237. package/templates/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  238. package/templates/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  239. package/templates/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  240. package/templates/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  241. package/templates/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  242. package/templates/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  243. package/templates/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  244. package/templates/functions-vercel/tsconfig.json.example +24 -0
  245. package/templates/functions-vercel/vercel.json.example +14 -0
  246. package/templates/github/github/workflows/firebase-deploy.yml.example +79 -0
  247. package/templates/github/workflows/firebase-deploy.yml.example +79 -0
  248. package/templates/root-consumer/.env.example +19 -0
  249. package/templates/root-consumer/.gitignore.example +82 -0
  250. package/templates/root-consumer/.prettierrc.cjs.example +12 -0
  251. package/templates/root-consumer/CLAUDE.md.example +73 -0
  252. package/templates/root-consumer/README.md.example +295 -0
  253. package/templates/root-consumer/bunfig.toml.example +68 -0
  254. package/templates/root-consumer/eslint.config.js.example +336 -0
  255. package/templates/root-consumer/firebase.json.example +348 -0
  256. package/templates/root-consumer/guides/AGENT_START_HERE.md.example +98 -0
  257. package/templates/root-consumer/guides/APP_CHECK_SETUP.md.example +111 -0
  258. package/templates/root-consumer/guides/AUTH_SETUP.md.example +92 -0
  259. package/templates/root-consumer/guides/BILLING_SETUP.md.example +120 -0
  260. package/templates/root-consumer/guides/CLI.md.example +293 -0
  261. package/templates/root-consumer/guides/COMPONENTS.md.example +875 -0
  262. package/templates/root-consumer/guides/CONFIG_SETUP.md.example +132 -0
  263. package/templates/root-consumer/guides/EMULATOR_SETUP.md.example +48 -0
  264. package/templates/root-consumer/guides/FEATURES.md.example +286 -0
  265. package/templates/root-consumer/guides/FRAMEWORK_OVERVIEW.md.example +97 -0
  266. package/templates/root-consumer/guides/FUNCTIONS.md.example +177 -0
  267. package/templates/root-consumer/guides/GETTING_STARTED.md.example +451 -0
  268. package/templates/root-consumer/guides/HOW_TO_USE.md.example +296 -0
  269. package/templates/root-consumer/guides/I18N_SETUP.md.example +204 -0
  270. package/templates/root-consumer/guides/IMPORT_PATTERNS.md.example +79 -0
  271. package/templates/root-consumer/guides/INDEX.md.example +50 -0
  272. package/templates/root-consumer/guides/INSTALLATION.md.example +296 -0
  273. package/templates/root-consumer/guides/LAYOUTS.md.example +310 -0
  274. package/templates/root-consumer/guides/PAGES_SETUP.md.example +123 -0
  275. package/templates/root-consumer/guides/STYLING.md.example +273 -0
  276. package/templates/root-consumer/guides/THEMING_SETUP.md.example +119 -0
  277. package/templates/root-consumer/guides/VERSION_CONTROL.md.example +181 -0
  278. package/templates/root-consumer/tsconfig.functions.json.example +15 -0
  279. package/templates/root-consumer/tsconfig.json.example +18 -0
  280. package/templates/root-consumer/turbo.json.example +46 -0
  281. package/templates/root-consumer/vercel.json.example +124 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @fileoverview Privacy Policy Page
3
+ * @description Privacy policy page using the reusable template
4
+ *
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+
10
+ import { Shield } from 'lucide-react';
11
+
12
+ import { type PageMeta } from '@donotdev/core';
13
+ import { PrivacyPolicyTemplate } from '@donotdev/templates';
14
+ import { PageContainer } from '@donotdev/ui';
15
+
16
+ import { legalConfig } from '../../config/legal';
17
+
18
+ /**
19
+ * Privacy page translation namespace
20
+ *
21
+ * @version 0.0.1
22
+ * @since 0.0.1
23
+ * @author AMBROISE PARK Consulting
24
+ */
25
+ export const NAMESPACE = 'privacy';
26
+
27
+ /**
28
+ * Privacy page metadata configuration
29
+ *
30
+ * @version 0.0.1
31
+ * @since 0.0.1
32
+ * @author AMBROISE PARK Consulting
33
+ */
34
+ export const meta: PageMeta = {
35
+ namespace: NAMESPACE,
36
+ icon: <Shield />,
37
+ hideFromMenu: true,
38
+ };
39
+
40
+ /**
41
+ * Privacy Policy Page Component
42
+ *
43
+ * @version 0.0.1
44
+ * @since 0.0.1
45
+ * @author AMBROISE PARK Consulting
46
+ *
47
+ * Uses the reusable PrivacyPolicyTemplate with centralized legal config
48
+ */
49
+ function PrivacyPage() {
50
+ return (
51
+ <PageContainer>
52
+ <PrivacyPolicyTemplate
53
+ companyName={legalConfig.company.name}
54
+ websiteUrl={legalConfig.website.url}
55
+ privacyEmail={legalConfig.contact.privacyEmail}
56
+ companyAddress={legalConfig.contact.address}
57
+ dpoEmail={legalConfig.contact.dpoEmail}
58
+ sections={legalConfig.sections.privacy}
59
+ contactInfo={{
60
+ supportEmail: legalConfig.contact.supportEmail,
61
+ }}
62
+ lastUpdated={legalConfig.lastUpdated?.privacy}
63
+ />
64
+ </PageContainer>
65
+ );
66
+ }
67
+
68
+ export default PrivacyPage;
69
+
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @fileoverview Terms of Service Page
3
+ * @description Terms of service page using the reusable template
4
+ *
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+
10
+ import { FileText } from 'lucide-react';
11
+
12
+ import { type PageMeta } from '@donotdev/core';
13
+ import { TermsOfServiceTemplate } from '@donotdev/templates';
14
+ import { PageContainer } from '@donotdev/ui';
15
+
16
+ import { legalConfig } from '../../config/legal';
17
+
18
+ /**
19
+ * Terms page translation namespace
20
+ *
21
+ * @version 0.0.1
22
+ * @since 0.0.1
23
+ * @author AMBROISE PARK Consulting
24
+ */
25
+ export const NAMESPACE = 'terms';
26
+
27
+ /**
28
+ * Terms page metadata configuration
29
+ *
30
+ * @version 0.0.1
31
+ * @since 0.0.1
32
+ * @author AMBROISE PARK Consulting
33
+ */
34
+ export const meta: PageMeta = {
35
+ namespace: NAMESPACE,
36
+ icon: <FileText />,
37
+ hideFromMenu: true,
38
+ };
39
+
40
+ /**
41
+ * Terms of Service Page Component
42
+ *
43
+ * @version 0.0.1
44
+ * @since 0.0.1
45
+ * @author AMBROISE PARK Consulting
46
+ *
47
+ * Uses the reusable TermsOfServiceTemplate with centralized legal config
48
+ */
49
+ function TermsPage() {
50
+ return (
51
+ <PageContainer>
52
+ <TermsOfServiceTemplate
53
+ companyName={legalConfig.company.name}
54
+ websiteUrl={legalConfig.website.url}
55
+ legalEmail={legalConfig.contact.email}
56
+ companyAddress={legalConfig.contact.address}
57
+ jurisdiction={legalConfig.jurisdiction.country}
58
+ arbitrationOrg={legalConfig.jurisdiction.arbitrationOrg}
59
+ arbitrationLocation={legalConfig.jurisdiction.arbitrationLocation}
60
+ sections={legalConfig.sections.terms}
61
+ contactInfo={{
62
+ supportEmail: legalConfig.contact.supportEmail,
63
+ }}
64
+ lastUpdated={legalConfig.lastUpdated?.terms}
65
+ />
66
+ </PageContainer>
67
+ );
68
+ }
69
+
70
+ export default TermsPage;
71
+
@@ -0,0 +1,5 @@
1
+ {
2
+ "title": "Example Page",
3
+ "description": "Example page locale file that is dynamically loaded on demand only"
4
+ }
5
+
@@ -0,0 +1,179 @@
1
+ /* src/themes.css */
2
+
3
+ /* ===========================
4
+ APP-WIDE SETTINGS
5
+ These apply to all themes - spacing, radius, shadows, routing animations
6
+ =========================== */
7
+ :root {
8
+ /* ===========================
9
+ ROUTING ANIMATIONS
10
+ Customize page transition animations
11
+ Pure CSS - zero JS overhead. Respects prefers-reduced-motion.
12
+ Override in themes.css: --routing-animation: slide; to change animation type
13
+ =========================== */
14
+ /* Single animation type (fade, slide, or none to disable) - app-wide */
15
+ /* --routing-animation: fade; */ /* fade | slide | none */
16
+ /* --routing-default-duration: var(--dur-normal); */ /* Animation duration */
17
+
18
+ /* Breakpoint-specific durations (all inherit from --routing-default-duration) */
19
+ /* --routing-mobile-duration: var(--routing-default-duration); */
20
+ /* --routing-tablet-duration: var(--routing-default-duration); */
21
+ /* --routing-desktop-duration: var(--routing-default-duration); */
22
+ /* --routing-wide-duration: var(--routing-default-duration); */
23
+
24
+ /* Examples: */
25
+ /* --routing-animation: slide; */ /* Use slide animation */
26
+ /* --routing-animation: none; */ /* Disable animations */
27
+ /* --routing-default-duration: 200ms; */ /* Faster animations */
28
+
29
+ /* ===========================
30
+ SPACING OVERRIDES
31
+ Customize spacing scale
32
+ =========================== */
33
+ /* --gap-sm: 0.5rem; */ /* 8px - tight spacing */
34
+ /* --gap-md: 1rem; */ /* 16px - medium spacing (default) */
35
+ /* --gap-lg: 2rem; */ /* 32px - large spacing */
36
+
37
+ /* ===========================
38
+ BORDER RADIUS OVERRIDES
39
+ Customize component corners
40
+ =========================== */
41
+ /* --radius-interactive: var(--radius-none); */ /* Buttons, links (default: square) */
42
+ /* --radius-surface: var(--radius-md); */ /* Cards, dialogs (default: 8px round) */
43
+ /* --radius-floating: var(--radius-none); */ /* Dropdowns, popovers (default: square) */
44
+
45
+ /* ===========================
46
+ SHADOW OVERRIDES
47
+ Customize elevation
48
+ =========================== */
49
+ /* --shadow-sm: ...; */ /* Small shadows */
50
+ /* --shadow-md: ...; */ /* Medium shadows (default) */
51
+ /* --shadow-xl: ...; */ /* Large shadows */
52
+ }
53
+
54
+ /* ===========================
55
+ LIGHT THEME (High Contrast Light)
56
+ Background: White
57
+ Foreground: Black
58
+ =========================== */
59
+ :root.light {
60
+ --theme-icon: 'Sun';
61
+ --theme-label: 'Light';
62
+ --theme-is-dark: 0;
63
+
64
+ /* ===========================
65
+ 1. USER SETS - 5 BRAND COLORS
66
+ =========================== */
67
+ --foreground: #000000;
68
+ --background: #ffffff;
69
+ --primary: #00bcd4; /* Cyan */
70
+ --secondary: #047857; /* Emerald-700 - WCAG AA compliant (5.48:1 with white) */
71
+ --accent: #ff9800; /* Orange */
72
+
73
+ /* ===========================
74
+ 2. FRAMEWORK DEFAULTS - STATUS COLORS
75
+ (Override if needed)
76
+ =========================== */
77
+ --success: #047857; /* Emerald-700 - WCAG AA compliant (5.48:1 with white) */
78
+ --warning: #f59e0b;
79
+ --destructive: #dc2626;
80
+
81
+ /* ===========================
82
+ 3. AUTO-COMPUTED - SURFACES
83
+ (Plain sight computation for easy overriding)
84
+ =========================== */
85
+ --muted: color-mix(in oklab, var(--foreground) 5%, var(--background));
86
+ --muted-foreground: color-mix(in oklab, var(--foreground) 75%, transparent);
87
+ --border: color-mix(in oklab, var(--foreground) 15%, var(--background));
88
+ --input: var(--muted);
89
+ --ring: var(--primary);
90
+
91
+ --card: var(--background);
92
+ --card-foreground: var(--foreground);
93
+ --popover: var(--card);
94
+ --popover-foreground: var(--card-foreground);
95
+ --surface-1: var(--card);
96
+
97
+ /* ===========================
98
+ 4. AUTO-COMPUTED - TEXT ON BRAND COLORS
99
+ (Mapped to foreground/background for consistency)
100
+ =========================== */
101
+ --primary-foreground: var(--foreground);
102
+ --secondary-foreground: var(--background);
103
+ --accent-foreground: var(--foreground);
104
+
105
+ --success-foreground: var(--background);
106
+ --warning-foreground: var(--foreground);
107
+ --destructive-foreground: var(--background);
108
+ }
109
+
110
+ /* ===========================
111
+ DARK THEME (High Contrast Dark)
112
+ Background: Black
113
+ Foreground: White
114
+ =========================== */
115
+ :root.dark {
116
+ --theme-icon: 'Moon';
117
+ --theme-label: 'Dark';
118
+ --theme-is-dark: 1;
119
+
120
+ /* ===========================
121
+ 1. USER SETS - 5 BRAND COLORS
122
+ =========================== */
123
+ --foreground: #ffffff;
124
+ --background: #000000;
125
+ --primary: #00bcd4; /* Cyan */
126
+ --secondary: #047857; /* Emerald-700 - WCAG AA compliant (5.48:1 with white) */
127
+ --accent: #ff9800; /* Orange */
128
+
129
+ /* ===========================
130
+ 2. FRAMEWORK DEFAULTS - STATUS COLORS
131
+ =========================== */
132
+ --success: #047857; /* Emerald-700 - WCAG AA compliant (5.48:1 with white) */
133
+ --warning: #f59e0b;
134
+ --destructive: #dc2626; /* Red-600 - WCAG AA compliant (4.83:1 with white) */
135
+
136
+ /* ===========================
137
+ 3. AUTO-COMPUTED - SURFACES
138
+ =========================== */
139
+ --muted: color-mix(in oklab, var(--foreground) 10%, var(--background));
140
+ --muted-foreground: color-mix(in oklab, var(--foreground) 75%, transparent);
141
+ --border: color-mix(in oklab, var(--foreground) 15%, var(--background));
142
+ --input: var(--muted);
143
+ --ring: var(--primary);
144
+
145
+ --card: var(--background);
146
+ --card-foreground: var(--foreground);
147
+ --popover: var(--card);
148
+ --popover-foreground: var(--card-foreground);
149
+ --surface-1: var(--card);
150
+
151
+ /* ===========================
152
+ 4. AUTO-COMPUTED - TEXT ON BRAND COLORS
153
+ =========================== */
154
+ --primary-foreground: var(--background);
155
+ --secondary-foreground: var(--foreground);
156
+ --accent-foreground: var(--background);
157
+
158
+ --success-foreground: var(--foreground);
159
+ --warning-foreground: var(--background);
160
+ --destructive-foreground: var(--foreground);
161
+ }
162
+
163
+ /* ===========================
164
+ CUSTOM THEMES
165
+ =========================== */
166
+
167
+ /* Add your custom themes here */
168
+ /* Example:
169
+ .brand {
170
+ --theme-icon: 'Zap';
171
+ --theme-label: 'Brand';
172
+ --background: #your-brand-background;
173
+ --foreground: #your-brand-foreground;
174
+ --primary: #your-brand-primary;
175
+ --secondary: #your-brand-secondary;
176
+ --accent: #your-brand-accent;
177
+ ... other variables ...
178
+ }
179
+ */
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "baseUrl": ".",
5
+ "types": ["node", "vite/client"]
6
+ },
7
+ "include": ["src/**/*"],
8
+ "exclude": ["node_modules", "dist"]
9
+ }
@@ -0,0 +1,9 @@
1
+ import { defineViteConfig } from '@donotdev/core/vite';
2
+ import { appConfig } from './src/config/app';
3
+
4
+ export default defineViteConfig({
5
+ appConfig,
6
+ server: {
7
+ https: false,
8
+ },
9
+ });
@@ -0,0 +1,129 @@
1
+ # {{APP_NAME}} Functions
2
+
3
+ This directory contains the Firebase Functions for the {{APP_NAME}} app, generated using the DoNotDev framework's scaffolding system.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ functions/
9
+ ā”œā”€ā”€ src/
10
+ │ ā”œā”€ā”€ auth/ # Authentication functions
11
+ │ ā”œā”€ā”€ oauth/ # OAuth functions
12
+ │ ā”œā”€ā”€ billing/ # Billing functions
13
+ │ └── index.ts # Main functions entry point
14
+ ā”œā”€ā”€ package.json # Dependencies and scripts
15
+ ā”œā”€ā”€ tsconfig.json # TypeScript configuration
16
+ ā”œā”€ā”€ functions.yaml # Firebase function manifest (manually maintained - must match functions exported from src/index.ts)
17
+ ā”œā”€ā”€ .env.example # Environment variables template
18
+ ā”œā”€ā”€ service-account-key.json # Firebase service account key (copy from Firebase Console)
19
+ └── README.md # This file
20
+ ```
21
+
22
+ ## Features
23
+
24
+ - **Authentication Management**: User custom claims and auth status
25
+ - **OAuth Integration**: GitHub access management
26
+ - **Billing Processing**: Stripe checkout and webhook handling
27
+ - **Secure API Layer**: Professional frontend-backend communication
28
+ - **Error Handling**: Comprehensive error handling and logging
29
+
30
+ ## Environment Variables
31
+
32
+ ### File Structure
33
+
34
+ **Functions use a different .env system than Vite/Next.js:**
35
+ - `.env` → Local development only (not automatically loaded, use with dotenv if needed)
36
+ - Production → Use Firebase Functions Secrets (synced automatically during `dndev deploy`)
37
+
38
+ **Note:** Functions don't follow Vite/Next.js `.env.local` priority rules. Use Firebase Secrets for production.
39
+
40
+ ### Required Environment Variables
41
+
42
+ ```bash
43
+ # Stripe Configuration
44
+ STRIPE_SECRET_KEY=sk_live_...
45
+ STRIPE_WEBHOOK_SECRET=whsec_...
46
+
47
+ # GitHub Configuration
48
+ GITHUB_PERSONAL_ACCESS_TOKEN=ghp_...
49
+ GITHUB_REPO_OWNER=your-org
50
+ GITHUB_REPO_NAME=your-repo
51
+
52
+ # Firebase Configuration
53
+ FIREBASE_PROJECT_ID=your-project-id
54
+ FIREBASE_REGION=us-central1
55
+ ```
56
+
57
+ ### Setup Instructions
58
+
59
+ 1. **Stripe Setup**:
60
+ - Create products in Stripe Dashboard
61
+ - Get price IDs and add to frontend `.env.local` (dev) or `.env.production.local` (prod)
62
+ - Configure webhook endpoint in Stripe
63
+ - Add webhook secret to functions `.env` (local) or Firebase Secrets (production)
64
+
65
+ 2. **GitHub Setup**:
66
+ - Create Personal Access Token with `repo` scope
67
+ - Add token to functions `.env` (local) or Firebase Secrets (production)
68
+ - Configure repository owner/name
69
+
70
+ 3. **Firebase Setup**:
71
+ - Get service account key: Firebase Console → Project Settings → Service Accounts → "Generate new private key"
72
+ - Copy JSON content into `service-account-key.json` in app root (shared by frontend + functions)
73
+ - Deploy: `dndev deploy` (from workspace root)
74
+ - Update webhook URL in Stripe dashboard
75
+
76
+ ## Deployment
77
+
78
+ Use the unified deployment command from workspace root:
79
+
80
+ ```bash
81
+ # Deploy everything (interactive)
82
+ dndev deploy
83
+
84
+ # Deploy specific app
85
+ dndev deploy <app-name>
86
+ ```
87
+
88
+ **Important:** `functions.yaml` must be manually maintained. Each function exported from `src/index.ts` must have a corresponding entry in `functions.yaml`. The deployment script preserves `functions.yaml` and does not modify it.
89
+
90
+ See [FUNCTIONS.md](../../guides/FUNCTIONS.md) for detailed information about `functions.yaml` and function deployment.
91
+
92
+ ## Development
93
+
94
+ ```bash
95
+ # Start Firebase emulators
96
+ bun run serve
97
+
98
+ # Start with debugging
99
+ bun run dev
100
+ ```
101
+
102
+ ## API Endpoints
103
+
104
+ ### Stripe Webhook
105
+
106
+ - **URL**: `https://your-project.cloudfunctions.net/stripeWebhook`
107
+ - **Events**: `checkout.session.completed`
108
+ - **Purpose**: Processes purchases and grants access
109
+
110
+ ### Checkout Session
111
+
112
+ - **Integration**: Direct Stripe calls (no function needed)
113
+ - **Purpose**: Creates Stripe checkout sessions for purchases
114
+
115
+ ## Security
116
+
117
+ - All functions require authentication
118
+ - Webhook signature verification
119
+ - Secure GitHub token management
120
+ - Firebase custom claims for user status
121
+
122
+ ## Framework Integration
123
+
124
+ This functions package demonstrates how to:
125
+
126
+ - Use the framework's scaffolding system
127
+ - Implement secure API communication
128
+ - Handle complex purchase flows
129
+ - Integrate with external services (Stripe, GitHub)
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @fileoverview Build script for {{APP_NAME}} functions
4
+ * @description Bundles @donotdev/types and imports framework functions
5
+ */
6
+
7
+ import { build } from 'esbuild';
8
+ import { createAppFunctionsConfig } from '@donotdev/core/functions';
9
+
10
+ async function buildFunctions() {
11
+ console.log('šŸ”Ø Building {{APP_NAME}} functions...');
12
+
13
+ try {
14
+ const config = createAppFunctionsConfig({
15
+ entry: 'src/index.ts',
16
+ outDir: 'lib',
17
+ minify: process.env.NODE_ENV === 'production',
18
+ sourcemap: true,
19
+ });
20
+
21
+ console.log('šŸ“¦ Bundling @donotdev/types and importing framework functions...');
22
+
23
+ const result = await build(config);
24
+
25
+ if (result.errors.length > 0) {
26
+ console.error('āŒ Build errors:', result.errors);
27
+ process.exit(1);
28
+ }
29
+
30
+ if (result.warnings.length > 0) {
31
+ console.warn('āš ļø Build warnings:', result.warnings);
32
+ }
33
+
34
+ console.log('āœ… {{APP_NAME}} functions built successfully!');
35
+ console.log('šŸ“ Output directory: lib/');
36
+
37
+ // Log bundle info if metafile is available
38
+ if (result.metafile) {
39
+ const { analyzeMetafile } = await import('esbuild');
40
+ const analysis = await analyzeMetafile(result.metafile);
41
+ console.log('\nšŸ“Š Bundle analysis:');
42
+ console.log(analysis);
43
+ }
44
+
45
+ } catch (error) {
46
+ console.error('āŒ Build failed:', error);
47
+ process.exit(1);
48
+ }
49
+ }
50
+
51
+ // Run the build
52
+ buildFunctions();
@@ -0,0 +1,45 @@
1
+ # =============================================================================
2
+ # {{APP_NAME}} Firebase Functions Environment Variables
3
+ # =============================================================================
4
+ # Copy this file to .env in the functions directory and update with your values
5
+
6
+ # =============================================================================
7
+ # Stripe Configuration
8
+ # =============================================================================
9
+ # Stripe Secret Key (server-side only)
10
+ STRIPE_SECRET_KEY=sk_test_1234567890abcdef
11
+
12
+ # Stripe Webhook Secret (for webhook signature verification)
13
+ STRIPE_WEBHOOK_SECRET=whsec_1234567890abcdef
14
+
15
+ # =============================================================================
16
+ # GitHub Configuration
17
+ # =============================================================================
18
+ # GitHub Personal Access Token (for repository access management)
19
+ # Required scopes: repo (full control of private repositories)
20
+ GITHUB_PERSONAL_ACCESS_TOKEN=ghp_1234567890abcdef
21
+
22
+ # GitHub Repository Configuration
23
+ GITHUB_REPO_OWNER=your-org
24
+ GITHUB_REPO_NAME=your-repo
25
+
26
+ # =============================================================================
27
+ # Firebase Configuration
28
+ # =============================================================================
29
+ # Firebase Project ID (usually auto-detected from Firebase Admin SDK)
30
+ FIREBASE_PROJECT_ID=your-project-id
31
+
32
+ # Firebase Region (default: us-central1)
33
+ FIREBASE_REGION=us-central1
34
+
35
+ # =============================================================================
36
+ # Development Configuration
37
+ # =============================================================================
38
+ # Node Environment
39
+ NODE_ENV=development
40
+
41
+ # =============================================================================
42
+ # Setup Instructions
43
+ # =============================================================================
44
+ # 1. Get Stripe keys from: https://dashboard.stripe.com/apikeys
45
+ # 2. Get GitHub token from: https://github.com/settings/tokens