create-m5kdev 0.41.0 → 0.43.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 (83) hide show
  1. package/package.json +1 -1
  2. package/templates/minimal-app/.cursor/rules/frontend-component-guide.mdc +95 -95
  3. package/templates/minimal-app/.cursor/rules/frontend-data-guide.mdc +103 -103
  4. package/templates/minimal-app/.cursor/rules/frontend-form-guide.mdc +80 -80
  5. package/templates/minimal-app/.cursor/rules/frontend-hook-guide.mdc +79 -79
  6. package/templates/minimal-app/.cursor/rules/frontend-i18n-guide.mdc +45 -45
  7. package/templates/minimal-app/.cursor/rules/module-dto-guide.mdc +60 -60
  8. package/templates/minimal-app/.cursor/rules/module-prompt-guide.mdc +214 -214
  9. package/templates/minimal-app/.cursor/rules/module-repository-guide.mdc +167 -167
  10. package/templates/minimal-app/.cursor/rules/module-schema-guide.mdc +53 -53
  11. package/templates/minimal-app/.cursor/rules/module-service-guide.mdc +367 -367
  12. package/templates/minimal-app/.cursor/rules/module-trpc-guide.mdc +71 -71
  13. package/templates/minimal-app/.github/workflows/check.yml.tpl +21 -0
  14. package/templates/minimal-app/AGENTS.md.tpl +22 -31
  15. package/templates/minimal-app/CLAUDE.md.tpl +17 -3
  16. package/templates/minimal-app/GLOSSARY.md.tpl +181 -0
  17. package/templates/minimal-app/README.md.tpl +14 -6
  18. package/templates/minimal-app/apps/.gitignore.tpl +13 -13
  19. package/templates/minimal-app/apps/e2e/package.json.tpl +23 -23
  20. package/templates/minimal-app/apps/e2e/servers.ts.tpl +22 -6
  21. package/templates/minimal-app/apps/email/package.json.tpl +34 -34
  22. package/templates/minimal-app/apps/expo/.gitignore.tpl +44 -44
  23. package/templates/minimal-app/apps/expo/.prettierignore +13 -13
  24. package/templates/minimal-app/apps/expo/.prettierrc.json.tpl +9 -9
  25. package/templates/minimal-app/apps/expo/CHANGELOG.md.tpl +156 -156
  26. package/templates/minimal-app/apps/expo/README.md.tpl +44 -44
  27. package/templates/minimal-app/apps/expo/expo-env.d.ts.tpl +3 -0
  28. package/templates/minimal-app/apps/expo/package.json.tpl +63 -63
  29. package/templates/minimal-app/apps/expo/uniwind-types.d.ts.tpl +10 -0
  30. package/templates/minimal-app/apps/landing/package.json.tpl +34 -34
  31. package/templates/minimal-app/apps/server/AGENTS.md.tpl +1 -1
  32. package/templates/minimal-app/apps/server/drizzle/0000_whole_echo.sql +366 -366
  33. package/templates/minimal-app/apps/server/drizzle/0002_crazy_lilith.sql +46 -46
  34. package/templates/minimal-app/apps/server/drizzle/0003_freezing_fantastic_four.sql +3 -3
  35. package/templates/minimal-app/apps/server/drizzle/0004_slow_ezekiel_stane.sql +98 -98
  36. package/templates/minimal-app/apps/server/drizzle/0005_wonderful_the_professor.sql +1 -1
  37. package/templates/minimal-app/apps/server/drizzle/0006_lazy_blue_marvel.sql +158 -158
  38. package/templates/minimal-app/apps/server/drizzle/0007_abnormal_ultimo.sql +1 -1
  39. package/templates/minimal-app/apps/server/drizzle/0008_steady_nekra.sql +86 -86
  40. package/templates/minimal-app/apps/server/drizzle/meta/0000_snapshot.json.tpl +2624 -2624
  41. package/templates/minimal-app/apps/server/drizzle/meta/0001_snapshot.json.tpl +2670 -2670
  42. package/templates/minimal-app/apps/server/drizzle/meta/0002_snapshot.json.tpl +2715 -2715
  43. package/templates/minimal-app/apps/server/drizzle/meta/0003_snapshot.json.tpl +2687 -2687
  44. package/templates/minimal-app/apps/server/drizzle/meta/0004_snapshot.json.tpl +2497 -2497
  45. package/templates/minimal-app/apps/server/drizzle/meta/0005_snapshot.json.tpl +2483 -2483
  46. package/templates/minimal-app/apps/server/drizzle/meta/0006_snapshot.json.tpl +3602 -3602
  47. package/templates/minimal-app/apps/server/drizzle/meta/0007_snapshot.json.tpl +3619 -3619
  48. package/templates/minimal-app/apps/server/drizzle/meta/0008_snapshot.json.tpl +3619 -3619
  49. package/templates/minimal-app/apps/server/drizzle/meta/_journal.json.tpl +76 -76
  50. package/templates/minimal-app/apps/server/drizzle-postgresql/0000_glorious_warhawk.sql +522 -0
  51. package/templates/minimal-app/apps/server/drizzle-postgresql/meta/0000_snapshot.json.tpl +3555 -0
  52. package/templates/minimal-app/apps/server/drizzle-postgresql/meta/_journal.json.tpl +13 -0
  53. package/templates/minimal-app/apps/server/drizzle.config.ts.tpl +1 -1
  54. package/templates/minimal-app/apps/server/mastra.ts.tpl +42 -0
  55. package/templates/minimal-app/apps/server/package.json.tpl +9 -4
  56. package/templates/minimal-app/apps/server/src/app.ts.tpl +21 -16
  57. package/templates/minimal-app/apps/server/src/drizzle.schema.ts.tpl +2 -0
  58. package/templates/minimal-app/apps/server/src/modules/conversation/conversation.mastra.ts.tpl +48 -0
  59. package/templates/minimal-app/apps/server/src/modules/conversation/conversation.persistence.ts.tpl +47 -0
  60. package/templates/minimal-app/apps/server/src/modules/posts/posts.db.ts.tpl +7 -6
  61. package/templates/minimal-app/apps/server/src/modules/posts/posts.repository.ts.tpl +2 -2
  62. package/templates/minimal-app/apps/shared/.env.example.tpl +6 -3
  63. package/templates/minimal-app/apps/shared/.env.production.example.tpl +7 -2
  64. package/templates/minimal-app/apps/shared/.env.tpl +6 -3
  65. package/templates/minimal-app/apps/shared/Dockerfile.pgbouncer +6 -0
  66. package/templates/minimal-app/apps/shared/compose.yaml.tpl +27 -0
  67. package/templates/minimal-app/apps/shared/fly.toml.tpl +0 -4
  68. package/templates/minimal-app/apps/shared/package.json.tpl +27 -27
  69. package/templates/minimal-app/apps/shared/pgbouncer.ini +13 -0
  70. package/templates/minimal-app/apps/shared/pgbouncer.users +1 -0
  71. package/templates/minimal-app/apps/webapp/AGENTS.md.tpl +24 -24
  72. package/templates/minimal-app/apps/webapp/index.html.tpl +22 -22
  73. package/templates/minimal-app/apps/webapp/package.json.tpl +53 -53
  74. package/templates/minimal-app/apps/webapp/public/logo.svg.tpl +6 -6
  75. package/templates/minimal-app/apps/webapp/translations/en/{{APP_SLUG}}.json.tpl +1 -1
  76. package/templates/minimal-app/biome.json.tpl +1 -0
  77. package/templates/minimal-app/docs/adr/.gitkeep +0 -0
  78. package/templates/minimal-app/docs/agents/domain.md.tpl +38 -0
  79. package/templates/minimal-app/docs/agents/issue-tracker.md.tpl +45 -0
  80. package/templates/minimal-app/docs/agents/triage-labels.md.tpl +15 -0
  81. package/templates/minimal-app/package.json.tpl +5 -0
  82. package/templates/minimal-app/pnpm-workspace.yaml.tpl +16 -13
  83. package/templates/minimal-app/template.manifest.json +21 -0
@@ -1,63 +1,63 @@
1
- {
2
- "name": "{{PACKAGE_SCOPE}}/expo",
3
- "version": "1.5.3",
4
- "private": true,
5
- "main": "expo-router/entry",
6
- "scripts": {
7
- "build": "expo export --platform web --output-dir dist",
8
- "start": "expo start",
9
- "dev:standard": "EXPO_PUBLIC_ENABLE_WAITLIST=false EXPO_PUBLIC_SERVER_URL=http://127.0.0.1:18182 EXPO_PUBLIC_APP_URL=http://127.0.0.1:15183 EXPO_NO_TELEMETRY=1 BROWSER=none expo start --web --port 15183 --host localhost",
10
- "dev:waitlist": "EXPO_PUBLIC_ENABLE_WAITLIST=true EXPO_PUBLIC_SERVER_URL=http://127.0.0.1:18183 EXPO_PUBLIC_APP_URL=http://127.0.0.1:15184 EXPO_NO_TELEMETRY=1 BROWSER=none expo start --web --port 15184 --host localhost",
11
- "android": "expo start --android",
12
- "ios": "expo start --ios",
13
- "lint": "biome check app.json package.json metro.config.js eslint.config.js src tsconfig.json uniwind-env.d.ts",
14
- "lint:fix": "biome check app.json package.json metro.config.js eslint.config.js src tsconfig.json uniwind-env.d.ts --write",
15
- "format": "prettier --write .",
16
- "format:check": "prettier --check .",
17
- "check-types": "tsc --noEmit",
18
- "typecheck": "pnpm check-types"
19
- },
20
- "dependencies": {
21
- "@expo/metro-runtime": "~56.0.13",
22
- "@gorhom/bottom-sheet": "^5.2.14",
23
- "@m5kdev/commons": "catalog:m5kdev",
24
- "@m5kdev/expo": "catalog:m5kdev",
25
- "@m5kdev/frontend": "catalog:m5kdev",
26
- "@trpc/client": "catalog:m5kdev",
27
- "@tanstack/react-query": "catalog:m5kdev",
28
- "expo": "~56.0.5",
29
- "expo-constants": "~56.0.16",
30
- "expo-linking": "~56.0.12",
31
- "expo-notifications": "~56.0.18",
32
- "expo-router": "~56.2.7",
33
- "expo-splash-screen": "~56.0.10",
34
- "expo-status-bar": "~56.0.4",
35
- "heroui-native": "^1.0.2",
36
- "{{PACKAGE_SCOPE}}/shared": "workspace:*",
37
- "react": "catalog:m5kdev",
38
- "react-dom": "catalog:m5kdev",
39
- "react-native": "0.85.3",
40
- "react-native-gesture-handler": "~2.31.2",
41
- "react-native-reanimated": "~4.3.1",
42
- "react-native-safe-area-context": "~5.7.0",
43
- "react-native-screens": "~4.25.2",
44
- "react-native-svg": "15.15.4",
45
- "react-native-web": "catalog:m5kdev",
46
- "react-native-worklets": "0.8.3",
47
- "tailwind-merge": "catalog:m5kdev",
48
- "tailwind-variants": "^3.2.2",
49
- "tailwindcss": "catalog:m5kdev",
50
- "uniwind": "^1.5.0"
51
- },
52
- "devDependencies": {
53
- "{{PACKAGE_SCOPE}}/server": "workspace:*",
54
- "@biomejs/biome": "catalog:m5kdev",
55
- "@m5kdev/backend": "catalog:m5kdev",
56
- "@m5kdev/config": "catalog:m5kdev",
57
- "@types/react": "catalog:m5kdev",
58
- "eslint": "^9.39.4",
59
- "eslint-config-expo": "^56.0.4",
60
- "prettier": "^3.8.3",
61
- "typescript": "catalog:m5kdev"
62
- }
63
- }
1
+ {
2
+ "name": "{{PACKAGE_SCOPE}}/expo",
3
+ "version": "1.5.3",
4
+ "private": true,
5
+ "main": "expo-router/entry",
6
+ "scripts": {
7
+ "build": "expo export --platform web --output-dir dist",
8
+ "start": "expo start",
9
+ "dev:standard": "EXPO_PUBLIC_ENABLE_WAITLIST=false EXPO_PUBLIC_SERVER_URL=http://127.0.0.1:18182 EXPO_PUBLIC_APP_URL=http://127.0.0.1:15183 EXPO_NO_TELEMETRY=1 BROWSER=none expo start --web --port 15183 --host localhost",
10
+ "dev:waitlist": "EXPO_PUBLIC_ENABLE_WAITLIST=true EXPO_PUBLIC_SERVER_URL=http://127.0.0.1:18183 EXPO_PUBLIC_APP_URL=http://127.0.0.1:15184 EXPO_NO_TELEMETRY=1 BROWSER=none expo start --web --port 15184 --host localhost",
11
+ "android": "expo start --android",
12
+ "ios": "expo start --ios",
13
+ "lint": "biome check app.json package.json metro.config.js eslint.config.js src tsconfig.json uniwind-env.d.ts",
14
+ "lint:fix": "biome check app.json package.json metro.config.js eslint.config.js src tsconfig.json uniwind-env.d.ts --write",
15
+ "format": "prettier --write .",
16
+ "format:check": "prettier --check .",
17
+ "check-types": "tsc --noEmit",
18
+ "typecheck": "pnpm check-types"
19
+ },
20
+ "dependencies": {
21
+ "@expo/metro-runtime": "~56.0.13",
22
+ "@gorhom/bottom-sheet": "^5.2.14",
23
+ "@m5kdev/commons": "catalog:m5kdev",
24
+ "@m5kdev/expo": "catalog:m5kdev",
25
+ "@m5kdev/frontend": "catalog:m5kdev",
26
+ "@trpc/client": "catalog:m5kdev",
27
+ "@tanstack/react-query": "catalog:m5kdev",
28
+ "expo": "~56.0.5",
29
+ "expo-constants": "~56.0.16",
30
+ "expo-linking": "~56.0.12",
31
+ "expo-notifications": "~56.0.18",
32
+ "expo-router": "~56.2.7",
33
+ "expo-splash-screen": "~56.0.10",
34
+ "expo-status-bar": "~56.0.4",
35
+ "heroui-native": "^1.0.2",
36
+ "{{PACKAGE_SCOPE}}/shared": "workspace:*",
37
+ "react": "catalog:m5kdev",
38
+ "react-dom": "catalog:m5kdev",
39
+ "react-native": "0.85.3",
40
+ "react-native-gesture-handler": "~2.31.2",
41
+ "react-native-reanimated": "~4.3.1",
42
+ "react-native-safe-area-context": "~5.7.0",
43
+ "react-native-screens": "~4.25.2",
44
+ "react-native-svg": "15.15.4",
45
+ "react-native-web": "catalog:m5kdev",
46
+ "react-native-worklets": "0.8.3",
47
+ "tailwind-merge": "catalog:m5kdev",
48
+ "tailwind-variants": "^3.2.2",
49
+ "tailwindcss": "catalog:m5kdev",
50
+ "uniwind": "^1.5.0"
51
+ },
52
+ "devDependencies": {
53
+ "{{PACKAGE_SCOPE}}/server": "workspace:*",
54
+ "@biomejs/biome": "catalog:m5kdev",
55
+ "@m5kdev/backend": "catalog:m5kdev",
56
+ "@m5kdev/config": "catalog:m5kdev",
57
+ "@types/react": "catalog:m5kdev",
58
+ "eslint": "^9.39.4",
59
+ "eslint-config-expo": "^56.0.4",
60
+ "prettier": "^3.8.3",
61
+ "typescript": "catalog:m5kdev"
62
+ }
63
+ }
@@ -0,0 +1,10 @@
1
+ // NOTE: This file is generated by uniwind and it should not be edited manually.
2
+ /// <reference types="uniwind/types" />
3
+
4
+ declare module 'uniwind' {
5
+ export interface UniwindConfig {
6
+ themes: readonly ['light', 'dark']
7
+ }
8
+ }
9
+
10
+ export {}
@@ -1,34 +1,34 @@
1
- {
2
- "name": "{{PACKAGE_SCOPE}}/landing",
3
- "private": true,
4
- "version": "0.0.0",
5
- "type": "module",
6
- "scripts": {
7
- "dev": "vite",
8
- "build": "vite build",
9
- "start": "vite preview --host 0.0.0.0 --port 8080",
10
- "lint": "biome check .",
11
- "lint:fix": "biome check . --write",
12
- "check-types": "tsc --noEmit"
13
- },
14
- "dependencies": {
15
- "@heroui/react": "catalog:m5kdev",
16
- "@heroui/styles": "catalog:m5kdev",
17
- "react": "catalog:m5kdev",
18
- "react-dom": "catalog:m5kdev",
19
- "react-router": "catalog:m5kdev",
20
- "tailwindcss": "catalog:m5kdev",
21
- "tw-animate-css": "catalog:m5kdev",
22
- "vite": "catalog:m5kdev"
23
- },
24
- "devDependencies": {
25
- "@m5kdev/config": "catalog:m5kdev",
26
- "@tailwindcss/vite": "catalog:m5kdev",
27
- "@types/react": "catalog:m5kdev",
28
- "@types/react-dom": "catalog:m5kdev",
29
- "@vitejs/plugin-react": "catalog:m5kdev",
30
- "babel-plugin-react-compiler": "catalog:m5kdev",
31
- "typescript": "catalog:m5kdev",
32
- "vite-tsconfig-paths": "catalog:m5kdev"
33
- }
34
- }
1
+ {
2
+ "name": "{{PACKAGE_SCOPE}}/landing",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "start": "vite preview --host 0.0.0.0 --port 8080",
10
+ "lint": "biome check .",
11
+ "lint:fix": "biome check . --write",
12
+ "check-types": "tsc --noEmit"
13
+ },
14
+ "dependencies": {
15
+ "@heroui/react": "catalog:m5kdev",
16
+ "@heroui/styles": "catalog:m5kdev",
17
+ "react": "catalog:m5kdev",
18
+ "react-dom": "catalog:m5kdev",
19
+ "react-router": "catalog:m5kdev",
20
+ "tailwindcss": "catalog:m5kdev",
21
+ "tw-animate-css": "catalog:m5kdev",
22
+ "vite": "catalog:m5kdev"
23
+ },
24
+ "devDependencies": {
25
+ "@m5kdev/config": "catalog:m5kdev",
26
+ "@tailwindcss/vite": "catalog:m5kdev",
27
+ "@types/react": "catalog:m5kdev",
28
+ "@types/react-dom": "catalog:m5kdev",
29
+ "@vitejs/plugin-react": "catalog:m5kdev",
30
+ "babel-plugin-react-compiler": "catalog:m5kdev",
31
+ "typescript": "catalog:m5kdev",
32
+ "vite-tsconfig-paths": "catalog:m5kdev"
33
+ }
34
+ }
@@ -35,7 +35,7 @@ apps/server/src/modules/<module>/
35
35
  // m5k:ai:start
36
36
  - `AIModule` is registered in `app.ts` with an app-owned Mastra Agent (`assistant`). Conversation HTTP lives on `/ai`. Set `OPENROUTER_API_KEY` for live replies. Do not add a Starter service wrapper around `AIService` chat.
37
37
  // m5k:ai:end
38
- - Database commands live in server `db.ts` (`pnpm drizzle:reset`, `drizzle:sync`, `drizzle:seed`) and call Kernel `runDb` — they must not import `app.ts`.
38
+ - Database commands live in server `db.ts` and call Kernel `runDb` through `DATABASE_DIRECT_URL`, without importing `app.ts`. Runtime uses `DATABASE_URL` through PgBouncer. Reset requires a disposable environment and preserves Mastra/vector data.
39
39
 
40
40
  ## Avoid Trivial Service Delegation
41
41