saas-forge 0.0.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 (145) hide show
  1. package/.eslintrc.js +10 -0
  2. package/.vscode/settings.json +3 -0
  3. package/README.md +31 -0
  4. package/apps/web/.env.example +1 -0
  5. package/apps/web/app/favicon.ico +0 -0
  6. package/apps/web/app/layout.tsx +23 -0
  7. package/apps/web/app/page.tsx +12 -0
  8. package/apps/web/components.json +20 -0
  9. package/apps/web/eslint.config.js +4 -0
  10. package/apps/web/hooks/.gitkeep +0 -0
  11. package/apps/web/next-env.d.ts +5 -0
  12. package/apps/web/next.config.mjs +6 -0
  13. package/apps/web/package.json +32 -0
  14. package/apps/web/postcss.config.mjs +1 -0
  15. package/apps/web/tsconfig.json +23 -0
  16. package/docs/CODE_OF_CONDUCT.md +128 -0
  17. package/docs/CONTRIBUTING.md +45 -0
  18. package/docs/ISSUE_TEMPLATE/bug_report.md +31 -0
  19. package/docs/ISSUE_TEMPLATE/feature_request.md +17 -0
  20. package/docs/SECURITY.md +9 -0
  21. package/docs/pull_request_template.md +24 -0
  22. package/package.json +38 -0
  23. package/packages/eslint-config/README.md +3 -0
  24. package/packages/eslint-config/base.js +32 -0
  25. package/packages/eslint-config/next.js +51 -0
  26. package/packages/eslint-config/package.json +26 -0
  27. package/packages/eslint-config/react-internal.js +41 -0
  28. package/packages/typescript-config/README.md +3 -0
  29. package/packages/typescript-config/base.json +20 -0
  30. package/packages/typescript-config/nextjs.json +13 -0
  31. package/packages/typescript-config/package.json +9 -0
  32. package/packages/typescript-config/react-library.json +8 -0
  33. package/packages/ui/components.json +20 -0
  34. package/packages/ui/eslint.config.js +4 -0
  35. package/packages/ui/package.json +86 -0
  36. package/packages/ui/postcss.config.mjs +6 -0
  37. package/packages/ui/src/components/.gitkeep +0 -0
  38. package/packages/ui/src/components/aceternity/3d-card.tsx +155 -0
  39. package/packages/ui/src/components/aceternity/3d-marquee.tsx +142 -0
  40. package/packages/ui/src/components/aceternity/Spotlight.tsx +57 -0
  41. package/packages/ui/src/components/aceternity/animated-testimonials.tsx +165 -0
  42. package/packages/ui/src/components/aceternity/animated-tooltip.tsx +92 -0
  43. package/packages/ui/src/components/aceternity/aurora-background.tsx +61 -0
  44. package/packages/ui/src/components/aceternity/background-beams.tsx +141 -0
  45. package/packages/ui/src/components/aceternity/background-gradient.tsx +72 -0
  46. package/packages/ui/src/components/aceternity/card-hover-effect.tsx +111 -0
  47. package/packages/ui/src/components/aceternity/compare.tsx +244 -0
  48. package/packages/ui/src/components/aceternity/container-scroll-animation.tsx +95 -0
  49. package/packages/ui/src/components/aceternity/lamp.tsx +104 -0
  50. package/packages/ui/src/components/aceternity/sparkles.tsx +434 -0
  51. package/packages/ui/src/components/aceternity/spotlight-new.tsx +128 -0
  52. package/packages/ui/src/components/mdx/Alert.tsx +14 -0
  53. package/packages/ui/src/components/mdx/Badge.tsx +10 -0
  54. package/packages/ui/src/components/mdx/blockquote.tsx +11 -0
  55. package/packages/ui/src/components/mdx/code.tsx +16 -0
  56. package/packages/ui/src/components/mdx/h1.tsx +18 -0
  57. package/packages/ui/src/components/mdx/h2.tsx +18 -0
  58. package/packages/ui/src/components/mdx/h3.tsx +18 -0
  59. package/packages/ui/src/components/mdx/hr.tsx +7 -0
  60. package/packages/ui/src/components/mdx/li.tsx +7 -0
  61. package/packages/ui/src/components/mdx/mdxComponents.tsx +25 -0
  62. package/packages/ui/src/components/mdx/ol.tsx +7 -0
  63. package/packages/ui/src/components/mdx/pre.tsx +13 -0
  64. package/packages/ui/src/components/mdx/tableOfContents.tsx +23 -0
  65. package/packages/ui/src/components/mdx/ul.tsx +7 -0
  66. package/packages/ui/src/components/mdx/ulNumbered.tsx +7 -0
  67. package/packages/ui/src/components/shadcn/accordion.tsx +66 -0
  68. package/packages/ui/src/components/shadcn/alert-dialog.tsx +157 -0
  69. package/packages/ui/src/components/shadcn/alert.tsx +66 -0
  70. package/packages/ui/src/components/shadcn/aspect-ratio.tsx +11 -0
  71. package/packages/ui/src/components/shadcn/avatar.tsx +53 -0
  72. package/packages/ui/src/components/shadcn/badge.tsx +46 -0
  73. package/packages/ui/src/components/shadcn/breadcrumb.tsx +109 -0
  74. package/packages/ui/src/components/shadcn/button-group.tsx +83 -0
  75. package/packages/ui/src/components/shadcn/button.tsx +60 -0
  76. package/packages/ui/src/components/shadcn/calendar.tsx +216 -0
  77. package/packages/ui/src/components/shadcn/card.tsx +92 -0
  78. package/packages/ui/src/components/shadcn/carousel.tsx +241 -0
  79. package/packages/ui/src/components/shadcn/chart.tsx +357 -0
  80. package/packages/ui/src/components/shadcn/checkbox.tsx +32 -0
  81. package/packages/ui/src/components/shadcn/collapsible.tsx +33 -0
  82. package/packages/ui/src/components/shadcn/command.tsx +184 -0
  83. package/packages/ui/src/components/shadcn/context-menu.tsx +252 -0
  84. package/packages/ui/src/components/shadcn/dialog.tsx +143 -0
  85. package/packages/ui/src/components/shadcn/drawer.tsx +135 -0
  86. package/packages/ui/src/components/shadcn/dropdown-menu.tsx +257 -0
  87. package/packages/ui/src/components/shadcn/empty.tsx +104 -0
  88. package/packages/ui/src/components/shadcn/field.tsx +248 -0
  89. package/packages/ui/src/components/shadcn/form.tsx +167 -0
  90. package/packages/ui/src/components/shadcn/hover-card.tsx +44 -0
  91. package/packages/ui/src/components/shadcn/input-group.tsx +170 -0
  92. package/packages/ui/src/components/shadcn/input-otp.tsx +77 -0
  93. package/packages/ui/src/components/shadcn/input.tsx +21 -0
  94. package/packages/ui/src/components/shadcn/item.tsx +193 -0
  95. package/packages/ui/src/components/shadcn/kbd.tsx +28 -0
  96. package/packages/ui/src/components/shadcn/label.tsx +24 -0
  97. package/packages/ui/src/components/shadcn/menubar.tsx +276 -0
  98. package/packages/ui/src/components/shadcn/native-select.tsx +48 -0
  99. package/packages/ui/src/components/shadcn/navigation-menu.tsx +168 -0
  100. package/packages/ui/src/components/shadcn/pagination.tsx +127 -0
  101. package/packages/ui/src/components/shadcn/popover.tsx +48 -0
  102. package/packages/ui/src/components/shadcn/progress.tsx +31 -0
  103. package/packages/ui/src/components/shadcn/radio-group.tsx +45 -0
  104. package/packages/ui/src/components/shadcn/resizable.tsx +56 -0
  105. package/packages/ui/src/components/shadcn/scroll-area.tsx +58 -0
  106. package/packages/ui/src/components/shadcn/select.tsx +187 -0
  107. package/packages/ui/src/components/shadcn/separator.tsx +28 -0
  108. package/packages/ui/src/components/shadcn/sheet.tsx +139 -0
  109. package/packages/ui/src/components/shadcn/sidebar.tsx +726 -0
  110. package/packages/ui/src/components/shadcn/skeleton.tsx +13 -0
  111. package/packages/ui/src/components/shadcn/slider.tsx +63 -0
  112. package/packages/ui/src/components/shadcn/sonner.tsx +40 -0
  113. package/packages/ui/src/components/shadcn/spinner.tsx +16 -0
  114. package/packages/ui/src/components/shadcn/switch.tsx +31 -0
  115. package/packages/ui/src/components/shadcn/table.tsx +116 -0
  116. package/packages/ui/src/components/shadcn/tabs.tsx +66 -0
  117. package/packages/ui/src/components/shadcn/textarea.tsx +18 -0
  118. package/packages/ui/src/components/shadcn/toggle-group.tsx +83 -0
  119. package/packages/ui/src/components/shadcn/toggle.tsx +47 -0
  120. package/packages/ui/src/components/shadcn/tooltip.tsx +61 -0
  121. package/packages/ui/src/hooks/.gitkeep +0 -0
  122. package/packages/ui/src/hooks/use-device.tsx +29 -0
  123. package/packages/ui/src/hooks/use-mobile.tsx +19 -0
  124. package/packages/ui/src/hooks/use-outside-click.tsx +23 -0
  125. package/packages/ui/src/lib/utils.ts +6 -0
  126. package/packages/ui/src/providers/theme-provider.tsx +18 -0
  127. package/packages/ui/src/styles/globals.css +65 -0
  128. package/packages/ui/src/styles/shadcn-blue.css +69 -0
  129. package/packages/ui/src/styles/shadcn-green.css +68 -0
  130. package/packages/ui/src/styles/shadcn-neutral.css +69 -0
  131. package/packages/ui/src/styles/shadcn-orange.css +68 -0
  132. package/packages/ui/src/styles/shadcn-red.css +68 -0
  133. package/packages/ui/src/styles/shadcn-rose.css +68 -0
  134. package/packages/ui/src/styles/shadcn-violet.css +68 -0
  135. package/packages/ui/src/styles/shadcn-yellow.css +68 -0
  136. package/packages/ui/src/typography/font.tsx +19 -0
  137. package/packages/ui/src/typography/fontFiles/Cyberdyne.woff2 +0 -0
  138. package/packages/ui/src/typography/fontFiles/GeistMonoVF.woff +0 -0
  139. package/packages/ui/src/typography/fontFiles/GeistVF.woff +0 -0
  140. package/packages/ui/tsconfig.json +11 -0
  141. package/packages/ui/tsconfig.lint.json +8 -0
  142. package/pnpm-workspace.yaml +3 -0
  143. package/scripts/cli.js +44 -0
  144. package/tsconfig.json +4 -0
  145. package/turbo.json +21 -0
package/scripts/cli.js ADDED
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { execSync } = require('child_process');
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+
7
+ const repoUrl = 'https://github.com/anoopkarnik/saas-forge.git';
8
+
9
+ const main = () => {
10
+ // Parse args
11
+ const args = process.argv.slice(2);
12
+ const targetDir = args[0] && !args[0].startsWith('--') ? args[0] : 'saas-forge';
13
+
14
+ // Extract --theme argument
15
+ const themeArg = args.find(arg => arg.startsWith('--theme='));
16
+ const theme = themeArg ? themeArg.split('=')[1] : null;
17
+
18
+ console.log(`Cloning the repository into ${targetDir}...`);
19
+ execSync(`git clone --depth=1 ${repoUrl} ${targetDir}`, { stdio: 'inherit' });
20
+
21
+ // Path to envs
22
+ const envExamplePath = path.join(targetDir, 'apps/web/.env.example');
23
+ const envPath = path.join(targetDir, 'apps/web/.env');
24
+
25
+ console.log('Preparing environment file...');
26
+
27
+ // Copy .env.example → .env
28
+ let envContent = fs.readFileSync(envExamplePath, 'utf-8');
29
+
30
+ // Replace theme only if provided
31
+ if (theme) {
32
+ console.log(`Applying theme: ${theme}`);
33
+ envContent = envContent.replace(/NEXT_PUBLIC_THEME=.*/, `NEXT_PUBLIC_THEME=${theme}`);
34
+ }
35
+
36
+ fs.writeFileSync(envPath, envContent, 'utf-8');
37
+
38
+ console.log('Installing dependencies...');
39
+ execSync(`cd ${targetDir} && pnpm install`, { stdio: 'inherit' });
40
+
41
+ console.log('Your SaaS is ready! 🎉');
42
+ };
43
+
44
+ main();
package/tsconfig.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "@workspace/typescript-config/base.json"
3
+ }
4
+
package/turbo.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://turbo.build/schema.json",
3
+ "ui": "tui",
4
+ "tasks": {
5
+ "build": {
6
+ "dependsOn": ["^build"],
7
+ "inputs": ["$TURBO_DEFAULT$", ".env*"],
8
+ "outputs": [".next/**", "!.next/cache/**"]
9
+ },
10
+ "lint": {
11
+ "dependsOn": ["^lint"]
12
+ },
13
+ "check-types": {
14
+ "dependsOn": ["^check-types"]
15
+ },
16
+ "dev": {
17
+ "cache": false,
18
+ "persistent": true
19
+ }
20
+ }
21
+ }