create-pnpm-custom-app 1.0.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 (77) hide show
  1. package/README.md +217 -0
  2. package/bin/cli.js +185 -0
  3. package/package.json +39 -0
  4. package/templates/.github/copilot-instructions.md +184 -0
  5. package/templates/.nvmrc +1 -0
  6. package/templates/.vscode/settings.json +51 -0
  7. package/templates/CONTRIBUTING.md +184 -0
  8. package/templates/LICENSE +21 -0
  9. package/templates/README.md +324 -0
  10. package/templates/apps/api/.env.example +36 -0
  11. package/templates/apps/api/.prettierrc.json +7 -0
  12. package/templates/apps/api/eslint.config.js +17 -0
  13. package/templates/apps/api/gitignore +45 -0
  14. package/templates/apps/api/jest.config.ts +22 -0
  15. package/templates/apps/api/package.json +49 -0
  16. package/templates/apps/api/src/app.ts +121 -0
  17. package/templates/apps/api/src/config/config.ts +38 -0
  18. package/templates/apps/api/src/config/logger.ts +57 -0
  19. package/templates/apps/api/src/db/mongo.ts +30 -0
  20. package/templates/apps/api/src/index.ts +40 -0
  21. package/templates/apps/api/src/middlewares/middleware.ts +75 -0
  22. package/templates/apps/api/src/models/example.model.ts +89 -0
  23. package/templates/apps/api/src/routes/routes.ts +54 -0
  24. package/templates/apps/api/src/schemas/swagger.schema.ts +58 -0
  25. package/templates/apps/api/src/services/example.service.ts +63 -0
  26. package/templates/apps/api/src/tests/health.test.ts +90 -0
  27. package/templates/apps/api/src/tests/helpers/test-helpers.ts +40 -0
  28. package/templates/apps/api/src/tests/mocks/mocks.ts +29 -0
  29. package/templates/apps/api/src/tests/setup.ts +11 -0
  30. package/templates/apps/api/src/types/fastify.d.ts +44 -0
  31. package/templates/apps/api/tsconfig.json +24 -0
  32. package/templates/apps/web/.env.example +25 -0
  33. package/templates/apps/web/.prettierignore +7 -0
  34. package/templates/apps/web/.prettierrc +9 -0
  35. package/templates/apps/web/app/ICONS.md +42 -0
  36. package/templates/apps/web/app/[locale]/(routes)/layout.tsx +13 -0
  37. package/templates/apps/web/app/[locale]/(routes)/page.tsx +49 -0
  38. package/templates/apps/web/app/[locale]/[...not-found]/page.tsx +8 -0
  39. package/templates/apps/web/app/[locale]/layout.tsx +35 -0
  40. package/templates/apps/web/app/[locale]/not-found.tsx +12 -0
  41. package/templates/apps/web/app/components/layout/Footer.component.tsx +30 -0
  42. package/templates/apps/web/app/components/layout/Nav.component.tsx +34 -0
  43. package/templates/apps/web/app/components/ui/README.md +39 -0
  44. package/templates/apps/web/app/components/ui/atoms/README.md +55 -0
  45. package/templates/apps/web/app/components/ui/molecules/README.md +51 -0
  46. package/templates/apps/web/app/globals.css +104 -0
  47. package/templates/apps/web/app/icon.svg +5 -0
  48. package/templates/apps/web/app/layout.tsx +37 -0
  49. package/templates/apps/web/app/manifest.json +22 -0
  50. package/templates/apps/web/app/providers.tsx +25 -0
  51. package/templates/apps/web/app/robots.ts +12 -0
  52. package/templates/apps/web/app/sitemap.ts +18 -0
  53. package/templates/apps/web/eslint.config.mjs +16 -0
  54. package/templates/apps/web/gitignore +56 -0
  55. package/templates/apps/web/hooks/README.md +25 -0
  56. package/templates/apps/web/i18n/config.ts +9 -0
  57. package/templates/apps/web/i18n/request.ts +15 -0
  58. package/templates/apps/web/interfaces/README.md +5 -0
  59. package/templates/apps/web/lib/README.md +45 -0
  60. package/templates/apps/web/lib/utils.ts +18 -0
  61. package/templates/apps/web/messages/en.json +34 -0
  62. package/templates/apps/web/messages/es.json +34 -0
  63. package/templates/apps/web/next.config.ts +50 -0
  64. package/templates/apps/web/package.json +34 -0
  65. package/templates/apps/web/postcss.config.mjs +7 -0
  66. package/templates/apps/web/proxy.ts +17 -0
  67. package/templates/apps/web/public/README.md +7 -0
  68. package/templates/apps/web/tsconfig.json +27 -0
  69. package/templates/apps/web/types/README.md +3 -0
  70. package/templates/docs/README.md +13 -0
  71. package/templates/gitignore-root +51 -0
  72. package/templates/package.json +30 -0
  73. package/templates/packages/shared/eslint.config.js +26 -0
  74. package/templates/packages/shared/package.json +22 -0
  75. package/templates/packages/shared/src/index.ts +39 -0
  76. package/templates/packages/shared/tsconfig.json +19 -0
  77. package/templates/pnpm-workspace.yaml +3 -0
@@ -0,0 +1,51 @@
1
+ # Dependencies
2
+ node_modules/
3
+ .pnp
4
+ .pnp.js
5
+
6
+ # Testing
7
+ coverage/
8
+
9
+ # Production
10
+ dist/
11
+ build/
12
+
13
+ # Environment variables
14
+ .env
15
+ .env.local
16
+ .env.development.local
17
+ .env.test.local
18
+ .env.production.local
19
+
20
+ # Logs
21
+ npm-debug.log*
22
+ yarn-debug.log*
23
+ yarn-error.log*
24
+ pnpm-debug.log*
25
+ lerna-debug.log*
26
+
27
+ # Next.js
28
+ .next/
29
+ out/
30
+
31
+ # OS
32
+ .DS_Store
33
+ *.pem
34
+
35
+ # Debug
36
+ *.log
37
+
38
+ # IDE
39
+ .vscode/
40
+ .idea/
41
+ *.swp
42
+ *.swo
43
+ *~
44
+
45
+ # Turbopack
46
+ .turbopack/
47
+
48
+ # Misc
49
+ *.swp
50
+ *.swo
51
+ .turbo
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "{{PROJECT_NAME}}",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "description": "A professional full-stack monorepo with Next.js, Fastify, and pnpm workspaces",
6
+ "scripts": {
7
+ "dev": "pnpm --parallel --filter \"./apps/*\" dev",
8
+ "build": "pnpm --recursive build",
9
+ "lint": "pnpm --recursive lint",
10
+ "test": "pnpm --recursive test",
11
+ "clean": "pnpm --recursive exec rm -rf dist node_modules .next"
12
+ },
13
+ "keywords": [
14
+ "monorepo",
15
+ "pnpm",
16
+ "nextjs",
17
+ "fastify",
18
+ "typescript"
19
+ ],
20
+ "author": "Your Name",
21
+ "license": "MIT",
22
+ "engines": {
23
+ "node": ">=20.0.0",
24
+ "pnpm": ">=9.0.0"
25
+ },
26
+ "devDependencies": {
27
+ "prettier": "^3.4.2",
28
+ "typescript": "^5.7.3"
29
+ }
30
+ }
@@ -0,0 +1,26 @@
1
+ import tseslint from '@typescript-eslint/eslint-plugin';
2
+ import parser from '@typescript-eslint/parser';
3
+
4
+ export default [
5
+ {
6
+ files: ['src/**/*.ts'],
7
+ languageOptions: {
8
+ parser: parser,
9
+ parserOptions: {
10
+ ecmaVersion: 'latest',
11
+ sourceType: 'module',
12
+ },
13
+ },
14
+ plugins: {
15
+ '@typescript-eslint': tseslint,
16
+ },
17
+ rules: {
18
+ '@typescript-eslint/no-unused-vars': [
19
+ 'warn',
20
+ { argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
21
+ ],
22
+ '@typescript-eslint/explicit-function-return-type': 'off',
23
+ '@typescript-eslint/no-explicit-any': 'warn',
24
+ },
25
+ },
26
+ ];
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@{{PROJECT_NAME}}/shared",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Shared types and utilities",
6
+ "main": "./src/index.ts",
7
+ "types": "./src/index.ts",
8
+ "exports": {
9
+ ".": "./src/index.ts"
10
+ },
11
+ "scripts": {
12
+ "lint": "eslint src --ext .ts",
13
+ "type-check": "tsc --noEmit"
14
+ },
15
+ "devDependencies": {
16
+ "@types/node": "^22.10.5",
17
+ "@typescript-eslint/eslint-plugin": "^8.21.0",
18
+ "@typescript-eslint/parser": "^8.21.0",
19
+ "eslint": "^9.18.0",
20
+ "typescript": "^5.7.3"
21
+ }
22
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared types, interfaces, and utilities for {{PROJECT_NAME}}
4
+ *
5
+ * This package provides common TypeScript definitions used across
6
+ * both frontend (web) and backend (api) applications.
7
+ *
8
+ * Add your shared types, interfaces, and enums here.
9
+ */
10
+
11
+ // ===================================================
12
+ // COMMON ENUMS
13
+ // ===================================================
14
+
15
+ /**
16
+ * Standard HTTP status codes
17
+ */
18
+ export enum HttpStatus {
19
+ OK = 200,
20
+ CREATED = 201,
21
+ NO_CONTENT = 204,
22
+ BAD_REQUEST = 400,
23
+ UNAUTHORIZED = 401,
24
+ FORBIDDEN = 403,
25
+ NOT_FOUND = 404,
26
+ INTERNAL_SERVER_ERROR = 500,
27
+ }
28
+
29
+ // ===================================================
30
+ // Add your shared types below
31
+ // ===================================================
32
+
33
+ // Example:
34
+ // export interface User {
35
+ // id: string;
36
+ // email: string;
37
+ // name: string;
38
+ // }
39
+
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "lib": ["ES2022"],
6
+ "moduleResolution": "bundler",
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true,
10
+ "forceConsistentCasingInFileNames": true,
11
+ "resolveJsonModule": true,
12
+ "declaration": true,
13
+ "declarationMap": true,
14
+ "outDir": "./dist",
15
+ "rootDir": "./src"
16
+ },
17
+ "include": ["src/**/*"],
18
+ "exclude": ["node_modules", "dist"]
19
+ }
@@ -0,0 +1,3 @@
1
+ packages:
2
+ - 'apps/*'
3
+ - 'packages/*'