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.
- package/.eslintrc.js +10 -0
- package/.vscode/settings.json +3 -0
- package/README.md +31 -0
- package/apps/web/.env.example +1 -0
- package/apps/web/app/favicon.ico +0 -0
- package/apps/web/app/layout.tsx +23 -0
- package/apps/web/app/page.tsx +12 -0
- package/apps/web/components.json +20 -0
- package/apps/web/eslint.config.js +4 -0
- package/apps/web/hooks/.gitkeep +0 -0
- package/apps/web/next-env.d.ts +5 -0
- package/apps/web/next.config.mjs +6 -0
- package/apps/web/package.json +32 -0
- package/apps/web/postcss.config.mjs +1 -0
- package/apps/web/tsconfig.json +23 -0
- package/docs/CODE_OF_CONDUCT.md +128 -0
- package/docs/CONTRIBUTING.md +45 -0
- package/docs/ISSUE_TEMPLATE/bug_report.md +31 -0
- package/docs/ISSUE_TEMPLATE/feature_request.md +17 -0
- package/docs/SECURITY.md +9 -0
- package/docs/pull_request_template.md +24 -0
- package/package.json +38 -0
- package/packages/eslint-config/README.md +3 -0
- package/packages/eslint-config/base.js +32 -0
- package/packages/eslint-config/next.js +51 -0
- package/packages/eslint-config/package.json +26 -0
- package/packages/eslint-config/react-internal.js +41 -0
- package/packages/typescript-config/README.md +3 -0
- package/packages/typescript-config/base.json +20 -0
- package/packages/typescript-config/nextjs.json +13 -0
- package/packages/typescript-config/package.json +9 -0
- package/packages/typescript-config/react-library.json +8 -0
- package/packages/ui/components.json +20 -0
- package/packages/ui/eslint.config.js +4 -0
- package/packages/ui/package.json +86 -0
- package/packages/ui/postcss.config.mjs +6 -0
- package/packages/ui/src/components/.gitkeep +0 -0
- package/packages/ui/src/components/aceternity/3d-card.tsx +155 -0
- package/packages/ui/src/components/aceternity/3d-marquee.tsx +142 -0
- package/packages/ui/src/components/aceternity/Spotlight.tsx +57 -0
- package/packages/ui/src/components/aceternity/animated-testimonials.tsx +165 -0
- package/packages/ui/src/components/aceternity/animated-tooltip.tsx +92 -0
- package/packages/ui/src/components/aceternity/aurora-background.tsx +61 -0
- package/packages/ui/src/components/aceternity/background-beams.tsx +141 -0
- package/packages/ui/src/components/aceternity/background-gradient.tsx +72 -0
- package/packages/ui/src/components/aceternity/card-hover-effect.tsx +111 -0
- package/packages/ui/src/components/aceternity/compare.tsx +244 -0
- package/packages/ui/src/components/aceternity/container-scroll-animation.tsx +95 -0
- package/packages/ui/src/components/aceternity/lamp.tsx +104 -0
- package/packages/ui/src/components/aceternity/sparkles.tsx +434 -0
- package/packages/ui/src/components/aceternity/spotlight-new.tsx +128 -0
- package/packages/ui/src/components/mdx/Alert.tsx +14 -0
- package/packages/ui/src/components/mdx/Badge.tsx +10 -0
- package/packages/ui/src/components/mdx/blockquote.tsx +11 -0
- package/packages/ui/src/components/mdx/code.tsx +16 -0
- package/packages/ui/src/components/mdx/h1.tsx +18 -0
- package/packages/ui/src/components/mdx/h2.tsx +18 -0
- package/packages/ui/src/components/mdx/h3.tsx +18 -0
- package/packages/ui/src/components/mdx/hr.tsx +7 -0
- package/packages/ui/src/components/mdx/li.tsx +7 -0
- package/packages/ui/src/components/mdx/mdxComponents.tsx +25 -0
- package/packages/ui/src/components/mdx/ol.tsx +7 -0
- package/packages/ui/src/components/mdx/pre.tsx +13 -0
- package/packages/ui/src/components/mdx/tableOfContents.tsx +23 -0
- package/packages/ui/src/components/mdx/ul.tsx +7 -0
- package/packages/ui/src/components/mdx/ulNumbered.tsx +7 -0
- package/packages/ui/src/components/shadcn/accordion.tsx +66 -0
- package/packages/ui/src/components/shadcn/alert-dialog.tsx +157 -0
- package/packages/ui/src/components/shadcn/alert.tsx +66 -0
- package/packages/ui/src/components/shadcn/aspect-ratio.tsx +11 -0
- package/packages/ui/src/components/shadcn/avatar.tsx +53 -0
- package/packages/ui/src/components/shadcn/badge.tsx +46 -0
- package/packages/ui/src/components/shadcn/breadcrumb.tsx +109 -0
- package/packages/ui/src/components/shadcn/button-group.tsx +83 -0
- package/packages/ui/src/components/shadcn/button.tsx +60 -0
- package/packages/ui/src/components/shadcn/calendar.tsx +216 -0
- package/packages/ui/src/components/shadcn/card.tsx +92 -0
- package/packages/ui/src/components/shadcn/carousel.tsx +241 -0
- package/packages/ui/src/components/shadcn/chart.tsx +357 -0
- package/packages/ui/src/components/shadcn/checkbox.tsx +32 -0
- package/packages/ui/src/components/shadcn/collapsible.tsx +33 -0
- package/packages/ui/src/components/shadcn/command.tsx +184 -0
- package/packages/ui/src/components/shadcn/context-menu.tsx +252 -0
- package/packages/ui/src/components/shadcn/dialog.tsx +143 -0
- package/packages/ui/src/components/shadcn/drawer.tsx +135 -0
- package/packages/ui/src/components/shadcn/dropdown-menu.tsx +257 -0
- package/packages/ui/src/components/shadcn/empty.tsx +104 -0
- package/packages/ui/src/components/shadcn/field.tsx +248 -0
- package/packages/ui/src/components/shadcn/form.tsx +167 -0
- package/packages/ui/src/components/shadcn/hover-card.tsx +44 -0
- package/packages/ui/src/components/shadcn/input-group.tsx +170 -0
- package/packages/ui/src/components/shadcn/input-otp.tsx +77 -0
- package/packages/ui/src/components/shadcn/input.tsx +21 -0
- package/packages/ui/src/components/shadcn/item.tsx +193 -0
- package/packages/ui/src/components/shadcn/kbd.tsx +28 -0
- package/packages/ui/src/components/shadcn/label.tsx +24 -0
- package/packages/ui/src/components/shadcn/menubar.tsx +276 -0
- package/packages/ui/src/components/shadcn/native-select.tsx +48 -0
- package/packages/ui/src/components/shadcn/navigation-menu.tsx +168 -0
- package/packages/ui/src/components/shadcn/pagination.tsx +127 -0
- package/packages/ui/src/components/shadcn/popover.tsx +48 -0
- package/packages/ui/src/components/shadcn/progress.tsx +31 -0
- package/packages/ui/src/components/shadcn/radio-group.tsx +45 -0
- package/packages/ui/src/components/shadcn/resizable.tsx +56 -0
- package/packages/ui/src/components/shadcn/scroll-area.tsx +58 -0
- package/packages/ui/src/components/shadcn/select.tsx +187 -0
- package/packages/ui/src/components/shadcn/separator.tsx +28 -0
- package/packages/ui/src/components/shadcn/sheet.tsx +139 -0
- package/packages/ui/src/components/shadcn/sidebar.tsx +726 -0
- package/packages/ui/src/components/shadcn/skeleton.tsx +13 -0
- package/packages/ui/src/components/shadcn/slider.tsx +63 -0
- package/packages/ui/src/components/shadcn/sonner.tsx +40 -0
- package/packages/ui/src/components/shadcn/spinner.tsx +16 -0
- package/packages/ui/src/components/shadcn/switch.tsx +31 -0
- package/packages/ui/src/components/shadcn/table.tsx +116 -0
- package/packages/ui/src/components/shadcn/tabs.tsx +66 -0
- package/packages/ui/src/components/shadcn/textarea.tsx +18 -0
- package/packages/ui/src/components/shadcn/toggle-group.tsx +83 -0
- package/packages/ui/src/components/shadcn/toggle.tsx +47 -0
- package/packages/ui/src/components/shadcn/tooltip.tsx +61 -0
- package/packages/ui/src/hooks/.gitkeep +0 -0
- package/packages/ui/src/hooks/use-device.tsx +29 -0
- package/packages/ui/src/hooks/use-mobile.tsx +19 -0
- package/packages/ui/src/hooks/use-outside-click.tsx +23 -0
- package/packages/ui/src/lib/utils.ts +6 -0
- package/packages/ui/src/providers/theme-provider.tsx +18 -0
- package/packages/ui/src/styles/globals.css +65 -0
- package/packages/ui/src/styles/shadcn-blue.css +69 -0
- package/packages/ui/src/styles/shadcn-green.css +68 -0
- package/packages/ui/src/styles/shadcn-neutral.css +69 -0
- package/packages/ui/src/styles/shadcn-orange.css +68 -0
- package/packages/ui/src/styles/shadcn-red.css +68 -0
- package/packages/ui/src/styles/shadcn-rose.css +68 -0
- package/packages/ui/src/styles/shadcn-violet.css +68 -0
- package/packages/ui/src/styles/shadcn-yellow.css +68 -0
- package/packages/ui/src/typography/font.tsx +19 -0
- package/packages/ui/src/typography/fontFiles/Cyberdyne.woff2 +0 -0
- package/packages/ui/src/typography/fontFiles/GeistMonoVF.woff +0 -0
- package/packages/ui/src/typography/fontFiles/GeistVF.woff +0 -0
- package/packages/ui/tsconfig.json +11 -0
- package/packages/ui/tsconfig.lint.json +8 -0
- package/pnpm-workspace.yaml +3 -0
- package/scripts/cli.js +44 -0
- package/tsconfig.json +4 -0
- 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
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
|
+
}
|