create-better-t-stack 2.49.1 → 2.50.0-canary.08568a05
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/dist/cli.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/{src-CKCxH6aF.js → src-DfbhNFZ9.js} +527 -261
- package/package.json +2 -1
- package/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs +21 -0
- package/templates/api/orpc/server/_gitignore +34 -0
- package/templates/api/orpc/server/package.json.hbs +24 -0
- package/templates/api/orpc/server/{base/src/lib → src}/context.ts.hbs +6 -6
- package/templates/{backend/server/server-base → api/orpc/server}/src/routers/index.ts.hbs +2 -2
- package/templates/api/orpc/server/tsconfig.json.hbs +10 -0
- package/templates/api/orpc/server/tsdown.config.ts.hbs +7 -0
- package/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs +1 -1
- package/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs +4 -2
- package/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs +1 -1
- package/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs +1 -1
- package/templates/api/trpc/fullstack/next/src/app/api/trpc/[trpc]/route.ts.hbs +14 -0
- package/templates/api/trpc/server/_gitignore +34 -0
- package/templates/api/trpc/server/package.json.hbs +23 -0
- package/templates/api/trpc/server/{base/src/lib → src}/context.ts.hbs +6 -6
- package/templates/api/trpc/server/src/routers/index.ts.hbs +55 -0
- package/templates/api/trpc/server/tsconfig.json.hbs +13 -0
- package/templates/api/trpc/server/tsdown.config.ts.hbs +7 -0
- package/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs +6 -4
- package/templates/auth/better-auth/{server/next/src/app/api/auth/[...all]/route.ts → fullstack/next/src/app/api/auth/[...all]/route.ts.hbs} +1 -1
- package/templates/auth/better-auth/server/base/_gitignore +34 -0
- package/templates/auth/better-auth/server/base/package.json.hbs +24 -0
- package/templates/auth/better-auth/server/base/src/{lib/auth.ts.hbs → index.ts.hbs} +7 -7
- package/templates/auth/better-auth/server/base/tsconfig.json.hbs +13 -0
- package/templates/auth/better-auth/server/base/tsdown.config.ts.hbs +7 -0
- package/templates/auth/clerk/convex/web/react/tanstack-start/src/server.ts.hbs +1 -0
- package/templates/backend/server/{server-base → base}/package.json.hbs +0 -1
- package/templates/backend/server/{server-base → base}/tsconfig.json.hbs +5 -10
- package/templates/backend/server/base/tsdown.config.ts.hbs +14 -0
- package/templates/backend/server/elysia/src/index.ts.hbs +6 -6
- package/templates/backend/server/express/src/index.ts.hbs +6 -6
- package/templates/backend/server/fastify/src/index.ts.hbs +6 -6
- package/templates/backend/server/hono/src/index.ts.hbs +7 -7
- package/templates/base/_gitignore +47 -1
- package/templates/base/package.json.hbs +1 -3
- package/templates/base/tsconfig.base.json +23 -0
- package/templates/db/base/_gitignore +34 -0
- package/templates/db/base/package.json.hbs +23 -0
- package/templates/db/base/tsconfig.json.hbs +13 -0
- package/templates/db/base/tsdown.config.ts.hbs +7 -0
- package/templates/db/drizzle/mysql/drizzle.config.ts.hbs +7 -2
- package/templates/db/drizzle/mysql/src/{db/index.ts.hbs → index.ts.hbs} +1 -1
- package/templates/db/drizzle/postgres/drizzle.config.ts.hbs +7 -2
- package/templates/db/drizzle/postgres/src/{db/index.ts.hbs → index.ts.hbs} +1 -1
- package/templates/db/drizzle/sqlite/drizzle.config.ts.hbs +7 -2
- package/templates/db/drizzle/sqlite/src/{db/index.ts.hbs → index.ts.hbs} +1 -1
- package/templates/db/prisma/mongodb/prisma.config.ts.hbs +5 -1
- package/templates/db/prisma/mongodb/src/index.ts.hbs +5 -0
- package/templates/db/prisma/mysql/prisma.config.ts.hbs +5 -1
- package/templates/db/prisma/mysql/src/{db/index.ts.hbs → index.ts.hbs} +1 -1
- package/templates/db/prisma/postgres/prisma.config.ts.hbs +7 -3
- package/templates/db/prisma/postgres/src/{db/index.ts.hbs → index.ts.hbs} +1 -1
- package/templates/db/prisma/sqlite/prisma.config.ts.hbs +5 -1
- package/templates/db/prisma/sqlite/src/{db/index.ts.hbs → index.ts.hbs} +3 -3
- package/templates/deploy/wrangler/web/react/tanstack-start/wrangler.jsonc.hbs +1 -1
- package/templates/examples/ai/fullstack/next/src/app/api/ai/route.ts.hbs +15 -0
- package/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs +7 -7
- package/templates/examples/todo/server/mongoose/base/src/routers/todo.ts.hbs +4 -4
- package/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs +4 -4
- package/templates/frontend/react/next/package.json.hbs +1 -1
- package/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs +1 -1
- package/templates/frontend/react/tanstack-start/package.json.hbs +7 -7
- package/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs +5 -5
- package/templates/frontend/react/tanstack-start/vite.config.ts.hbs +1 -1
- package/templates/api/orpc/server/next/src/app/rpc/[...all]/route.ts.hbs +0 -52
- package/templates/api/trpc/server/next/src/app/trpc/[trpc]/route.ts +0 -14
- package/templates/backend/server/next/next-env.d.ts +0 -5
- package/templates/backend/server/next/next.config.ts +0 -7
- package/templates/backend/server/next/package.json.hbs +0 -27
- package/templates/backend/server/next/src/app/route.ts +0 -5
- package/templates/backend/server/next/src/middleware.ts +0 -19
- package/templates/backend/server/next/tsconfig.json.hbs +0 -33
- package/templates/db/prisma/mongodb/src/db/index.ts.hbs +0 -5
- package/templates/examples/ai/server/next/src/app/ai/route.ts.hbs +0 -15
- /package/templates/api/orpc/server/{base/src/lib/orpc.ts.hbs → src/index.ts.hbs} +0 -0
- /package/templates/api/trpc/server/{base/src/lib/trpc.ts.hbs → src/index.ts.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/drizzle/mysql/src/{db/schema/auth.ts → schema/auth.ts.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/drizzle/postgres/src/{db/schema/auth.ts → schema/auth.ts.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/drizzle/sqlite/src/{db/schema/auth.ts → schema/auth.ts.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/mongoose/mongodb/src/{db/models/auth.model.ts → models/auth.model.ts.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/prisma/mongodb/prisma/schema/{auth.prisma → auth.prisma.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/prisma/mysql/prisma/schema/{auth.prisma → auth.prisma.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/prisma/postgres/prisma/schema/{auth.prisma → auth.prisma.hbs} +0 -0
- /package/templates/auth/better-auth/server/db/prisma/sqlite/prisma/schema/{auth.prisma → auth.prisma.hbs} +0 -0
- /package/templates/auth/better-auth/web/nuxt/app/middleware/{auth.ts → auth.ts.hbs} +0 -0
- /package/templates/backend/server/{server-base → base}/_gitignore +0 -0
- /package/templates/db/mongoose/mongodb/src/{db/index.ts.hbs → index.ts.hbs} +0 -0
- /package/templates/examples/todo/server/drizzle/mysql/src/{db/schema → schema}/todo.ts +0 -0
- /package/templates/examples/todo/server/drizzle/postgres/src/{db/schema → schema}/todo.ts +0 -0
- /package/templates/examples/todo/server/drizzle/sqlite/src/{db/schema → schema}/todo.ts +0 -0
- /package/templates/examples/todo/server/mongoose/mongodb/src/{db/models/todo.model.ts → models/todo.model.ts.hbs} +0 -0
- /package/templates/examples/todo/server/prisma/mongodb/prisma/schema/{todo.prisma → todo.prisma.hbs} +0 -0
- /package/templates/examples/todo/server/prisma/mysql/prisma/schema/{todo.prisma → todo.prisma.hbs} +0 -0
- /package/templates/examples/todo/server/prisma/postgres/prisma/schema/{todo.prisma → todo.prisma.hbs} +0 -0
- /package/templates/examples/todo/server/prisma/sqlite/prisma/schema/{todo.prisma → todo.prisma.hbs} +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineConfig } from 'tsdown';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
entry: './src/index.ts',
|
|
5
|
+
format: 'esm',
|
|
6
|
+
outDir: './dist',
|
|
7
|
+
clean: true,
|
|
8
|
+
noExternal: [/@{{projectName}}\/.*/],
|
|
9
|
+
{{#if (and (eq orm "drizzle") (eq database "sqlite") (or (eq dbSetup "turso") (eq dbSetup "none")))}}
|
|
10
|
+
external: [
|
|
11
|
+
/^@libsql\/(linux|darwin|win32).*/
|
|
12
|
+
]
|
|
13
|
+
{{/if}}
|
|
14
|
+
});
|
|
@@ -9,8 +9,8 @@ import { google } from "@ai-sdk/google";
|
|
|
9
9
|
import { convertToModelMessages, streamText } from "ai";
|
|
10
10
|
{{/if}}
|
|
11
11
|
{{#if (eq api "trpc")}}
|
|
12
|
-
import { createContext } from "
|
|
13
|
-
import { appRouter } from "
|
|
12
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
13
|
+
import { appRouter } from "@{{projectName}}/api/routers/index";
|
|
14
14
|
import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
|
|
15
15
|
{{/if}}
|
|
16
16
|
{{#if (eq api "orpc")}}
|
|
@@ -19,11 +19,11 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins";
|
|
|
19
19
|
import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4";
|
|
20
20
|
import { RPCHandler } from "@orpc/server/fetch";
|
|
21
21
|
import { onError } from "@orpc/server";
|
|
22
|
-
import { appRouter } from "
|
|
23
|
-
import { createContext } from "
|
|
22
|
+
import { appRouter } from "@{{projectName}}/api/routers/index";
|
|
23
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
24
24
|
{{/if}}
|
|
25
25
|
{{#if (eq auth "better-auth")}}
|
|
26
|
-
import { auth } from "
|
|
26
|
+
import { auth } from "@{{projectName}}/auth";
|
|
27
27
|
{{/if}}
|
|
28
28
|
|
|
29
29
|
{{#if (eq api "orpc")}}
|
|
@@ -104,7 +104,7 @@ const app = new Elysia()
|
|
|
104
104
|
const body = await context.request.json();
|
|
105
105
|
const uiMessages = body.messages || [];
|
|
106
106
|
const result = streamText({
|
|
107
|
-
model: google("gemini-2.
|
|
107
|
+
model: google("gemini-2.5-flash"),
|
|
108
108
|
messages: convertToModelMessages(uiMessages)
|
|
109
109
|
});
|
|
110
110
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
{{#if (eq api "trpc")}}
|
|
3
3
|
import { createExpressMiddleware } from "@trpc/server/adapters/express";
|
|
4
|
-
import { createContext } from "
|
|
5
|
-
import { appRouter } from "
|
|
4
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
5
|
+
import { appRouter } from "@{{projectName}}/api/routers/index";
|
|
6
6
|
{{/if}}
|
|
7
7
|
{{#if (eq api "orpc")}}
|
|
8
8
|
import { OpenAPIHandler } from "@orpc/openapi/node";
|
|
@@ -10,9 +10,9 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins";
|
|
|
10
10
|
import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4";
|
|
11
11
|
import { RPCHandler } from "@orpc/server/node";
|
|
12
12
|
import { onError } from "@orpc/server";
|
|
13
|
-
import { appRouter } from "
|
|
13
|
+
import { appRouter } from "@{{projectName}}/api/routers/index";
|
|
14
14
|
{{#if (eq auth "better-auth")}}
|
|
15
|
-
import { createContext } from "
|
|
15
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
16
16
|
{{/if}}
|
|
17
17
|
{{/if}}
|
|
18
18
|
import cors from "cors";
|
|
@@ -22,7 +22,7 @@ import { streamText, type UIMessage, convertToModelMessages } from "ai";
|
|
|
22
22
|
import { google } from "@ai-sdk/google";
|
|
23
23
|
{{/if}}
|
|
24
24
|
{{#if (eq auth "better-auth")}}
|
|
25
|
-
import { auth } from "
|
|
25
|
+
import { auth } from "@{{projectName}}/auth";
|
|
26
26
|
import { toNodeHandler } from "better-auth/node";
|
|
27
27
|
{{/if}}
|
|
28
28
|
|
|
@@ -105,7 +105,7 @@ app.use(express.json());
|
|
|
105
105
|
app.post("/ai", async (req, res) => {
|
|
106
106
|
const { messages = [] } = (req.body || {}) as { messages: UIMessage[] };
|
|
107
107
|
const result = streamText({
|
|
108
|
-
model: google("gemini-
|
|
108
|
+
model: google("gemini-2.5-flash"),
|
|
109
109
|
messages: convertToModelMessages(messages),
|
|
110
110
|
});
|
|
111
111
|
result.pipeUIMessageStreamToResponse(res);
|
|
@@ -4,8 +4,8 @@ import fastifyCors from "@fastify/cors";
|
|
|
4
4
|
|
|
5
5
|
{{#if (eq api "trpc")}}
|
|
6
6
|
import { fastifyTRPCPlugin, type FastifyTRPCPluginOptions } from "@trpc/server/adapters/fastify";
|
|
7
|
-
import { createContext } from "
|
|
8
|
-
import { appRouter, type AppRouter } from "
|
|
7
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
8
|
+
import { appRouter, type AppRouter } from "@{{projectName}}/api/routers/index";
|
|
9
9
|
{{/if}}
|
|
10
10
|
|
|
11
11
|
{{#if (eq api "orpc")}}
|
|
@@ -15,10 +15,10 @@ import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4";
|
|
|
15
15
|
import { RPCHandler } from "@orpc/server/node";
|
|
16
16
|
import { CORSPlugin } from "@orpc/server/plugins";
|
|
17
17
|
import { onError } from "@orpc/server";
|
|
18
|
-
import { appRouter } from "
|
|
18
|
+
import { appRouter } from "@{{projectName}}/api/routers/index";
|
|
19
19
|
import { createServer } from "node:http";
|
|
20
20
|
{{#if (eq auth "better-auth")}}
|
|
21
|
-
import { createContext } from "
|
|
21
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
22
22
|
{{/if}}
|
|
23
23
|
{{/if}}
|
|
24
24
|
|
|
@@ -28,7 +28,7 @@ import { google } from "@ai-sdk/google";
|
|
|
28
28
|
{{/if}}
|
|
29
29
|
|
|
30
30
|
{{#if (eq auth "better-auth")}}
|
|
31
|
-
import { auth } from "
|
|
31
|
+
import { auth } from "@{{projectName}}/auth";
|
|
32
32
|
{{/if}}
|
|
33
33
|
|
|
34
34
|
const baseCorsConfig = {
|
|
@@ -161,7 +161,7 @@ interface AiRequestBody {
|
|
|
161
161
|
fastify.post('/ai', async function (request) {
|
|
162
162
|
const { messages } = request.body as AiRequestBody;
|
|
163
163
|
const result = streamText({
|
|
164
|
-
model: google('gemini-
|
|
164
|
+
model: google('gemini-2.5-flash'),
|
|
165
165
|
messages: convertToModelMessages(messages),
|
|
166
166
|
});
|
|
167
167
|
|
|
@@ -10,16 +10,16 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins";
|
|
|
10
10
|
import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4";
|
|
11
11
|
import { RPCHandler } from "@orpc/server/fetch";
|
|
12
12
|
import { onError } from "@orpc/server";
|
|
13
|
-
import { createContext } from "
|
|
14
|
-
import { appRouter } from "
|
|
13
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
14
|
+
import { appRouter } from "@{{projectName}}/api/routers/index";
|
|
15
15
|
{{/if}}
|
|
16
16
|
{{#if (eq api "trpc")}}
|
|
17
17
|
import { trpcServer } from "@hono/trpc-server";
|
|
18
|
-
import { createContext } from "
|
|
19
|
-
import { appRouter } from "
|
|
18
|
+
import { createContext } from "@{{projectName}}/api/context";
|
|
19
|
+
import { appRouter } from "@{{projectName}}/api/routers/index";
|
|
20
20
|
{{/if}}
|
|
21
21
|
{{#if (eq auth "better-auth")}}
|
|
22
|
-
import { auth } from "
|
|
22
|
+
import { auth } from "@{{projectName}}/auth";
|
|
23
23
|
{{/if}}
|
|
24
24
|
import { Hono } from "hono";
|
|
25
25
|
import { cors } from "hono/cors";
|
|
@@ -121,7 +121,7 @@ app.post("/ai", async (c) => {
|
|
|
121
121
|
const body = await c.req.json();
|
|
122
122
|
const uiMessages = body.messages || [];
|
|
123
123
|
const result = streamText({
|
|
124
|
-
model: google("gemini-
|
|
124
|
+
model: google("gemini-2.5-flash"),
|
|
125
125
|
messages: convertToModelMessages(uiMessages),
|
|
126
126
|
});
|
|
127
127
|
|
|
@@ -137,7 +137,7 @@ app.post("/ai", async (c) => {
|
|
|
137
137
|
apiKey: env.GOOGLE_GENERATIVE_AI_API_KEY,
|
|
138
138
|
});
|
|
139
139
|
const result = streamText({
|
|
140
|
-
model: google("gemini-
|
|
140
|
+
model: google("gemini-2.5-flash"),
|
|
141
141
|
messages: convertToModelMessages(uiMessages),
|
|
142
142
|
});
|
|
143
143
|
|
|
@@ -1,4 +1,50 @@
|
|
|
1
|
+
# Dependencies
|
|
1
2
|
node_modules
|
|
3
|
+
.pnp
|
|
4
|
+
.pnp.js
|
|
5
|
+
|
|
6
|
+
# Build outputs
|
|
7
|
+
dist
|
|
8
|
+
build
|
|
9
|
+
*.tsbuildinfo
|
|
10
|
+
|
|
11
|
+
# Environment variables
|
|
12
|
+
.env
|
|
13
|
+
.env*.local
|
|
14
|
+
|
|
15
|
+
# IDEs and editors
|
|
16
|
+
.vscode/*
|
|
17
|
+
!.vscode/settings.json
|
|
18
|
+
!.vscode/tasks.json
|
|
19
|
+
!.vscode/launch.json
|
|
20
|
+
!.vscode/extensions.json
|
|
21
|
+
.idea
|
|
22
|
+
*.swp
|
|
23
|
+
*.swo
|
|
24
|
+
*~
|
|
25
|
+
.DS_Store
|
|
26
|
+
|
|
27
|
+
# Logs
|
|
28
|
+
logs
|
|
29
|
+
*.log
|
|
30
|
+
npm-debug.log*
|
|
31
|
+
yarn-debug.log*
|
|
32
|
+
yarn-error.log*
|
|
33
|
+
lerna-debug.log*
|
|
34
|
+
.pnpm-debug.log*
|
|
35
|
+
|
|
36
|
+
# Turbo
|
|
2
37
|
.turbo
|
|
38
|
+
|
|
39
|
+
# Better-T-Stack
|
|
3
40
|
.alchemy
|
|
4
|
-
|
|
41
|
+
|
|
42
|
+
# Testing
|
|
43
|
+
coverage
|
|
44
|
+
.nyc_output
|
|
45
|
+
|
|
46
|
+
# Misc
|
|
47
|
+
*.tgz
|
|
48
|
+
.cache
|
|
49
|
+
tmp
|
|
50
|
+
temp
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "ESNext",
|
|
5
|
+
"module": "ESNext",
|
|
6
|
+
"moduleResolution": "bundler",
|
|
7
|
+
"lib": [
|
|
8
|
+
"ESNext"
|
|
9
|
+
],
|
|
10
|
+
"verbatimModuleSyntax": true,
|
|
11
|
+
"strict": true,
|
|
12
|
+
"skipLibCheck": true,
|
|
13
|
+
"resolveJsonModule": true,
|
|
14
|
+
"allowSyntheticDefaultImports": true,
|
|
15
|
+
"esModuleInterop": true,
|
|
16
|
+
"forceConsistentCasingInFileNames": true,
|
|
17
|
+
"isolatedModules": true,
|
|
18
|
+
"noUncheckedIndexedAccess": true,
|
|
19
|
+
"noUnusedLocals": true,
|
|
20
|
+
"noUnusedParameters": true,
|
|
21
|
+
"noFallthroughCasesInSwitch": true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# dependencies (bun install)
|
|
2
|
+
node_modules
|
|
3
|
+
|
|
4
|
+
# output
|
|
5
|
+
out
|
|
6
|
+
dist
|
|
7
|
+
*.tgz
|
|
8
|
+
|
|
9
|
+
# code coverage
|
|
10
|
+
coverage
|
|
11
|
+
*.lcov
|
|
12
|
+
|
|
13
|
+
# logs
|
|
14
|
+
logs
|
|
15
|
+
_.log
|
|
16
|
+
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
|
17
|
+
|
|
18
|
+
# dotenv environment variable files
|
|
19
|
+
.env
|
|
20
|
+
.env.development.local
|
|
21
|
+
.env.test.local
|
|
22
|
+
.env.production.local
|
|
23
|
+
.env.local
|
|
24
|
+
|
|
25
|
+
# caches
|
|
26
|
+
.eslintcache
|
|
27
|
+
.cache
|
|
28
|
+
*.tsbuildinfo
|
|
29
|
+
|
|
30
|
+
# IntelliJ based IDEs
|
|
31
|
+
.idea
|
|
32
|
+
|
|
33
|
+
# Finder (MacOS) folder config
|
|
34
|
+
.DS_Store
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@{{projectName}}/db",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"exports": {
|
|
5
|
+
".": {
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"default": "./src/index.ts"
|
|
8
|
+
},
|
|
9
|
+
"./*": {
|
|
10
|
+
"types": "./dist/*.d.ts",
|
|
11
|
+
"default": "./src/*.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsdown"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^24.5.2"
|
|
19
|
+
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"typescript": "^5"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { defineConfig } from "drizzle-kit";
|
|
2
|
+
import dotenv from "dotenv";
|
|
3
|
+
|
|
4
|
+
dotenv.config({
|
|
5
|
+
path: "../../apps/server/.env",
|
|
6
|
+
});
|
|
2
7
|
|
|
3
8
|
export default defineConfig({
|
|
4
|
-
schema: "./src/
|
|
5
|
-
out: "./src/
|
|
9
|
+
schema: "./src/schema",
|
|
10
|
+
out: "./src/migrations",
|
|
6
11
|
dialect: "mysql",
|
|
7
12
|
dbCredentials: {
|
|
8
13
|
url: process.env.DATABASE_URL || "",
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { defineConfig } from "drizzle-kit";
|
|
2
|
+
import dotenv from "dotenv";
|
|
3
|
+
|
|
4
|
+
dotenv.config({
|
|
5
|
+
path: "../../apps/server/.env",
|
|
6
|
+
});
|
|
2
7
|
|
|
3
8
|
export default defineConfig({
|
|
4
|
-
schema: "./src/
|
|
5
|
-
out: "./src/
|
|
9
|
+
schema: "./src/schema",
|
|
10
|
+
out: "./src/migrations",
|
|
6
11
|
dialect: "postgresql",
|
|
7
12
|
dbCredentials: {
|
|
8
13
|
url: process.env.DATABASE_URL || "",
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { defineConfig } from "drizzle-kit";
|
|
2
|
+
import dotenv from "dotenv";
|
|
3
|
+
|
|
4
|
+
dotenv.config({
|
|
5
|
+
path: "../../apps/server/.env",
|
|
6
|
+
});
|
|
2
7
|
|
|
3
8
|
export default defineConfig({
|
|
4
|
-
schema: "./src/
|
|
5
|
-
out: "./src/
|
|
9
|
+
schema: "./src/schema",
|
|
10
|
+
out: "./src/migrations",
|
|
6
11
|
{{#if (eq dbSetup "d1")}}
|
|
7
12
|
// DOCS: https://orm.drizzle.team/docs/guides/d1-http-with-drizzle-kit
|
|
8
13
|
dialect: "sqlite",
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
{{#unless (eq dbSetup "prisma-postgres")}}
|
|
2
|
-
import "dotenv/config";
|
|
3
|
-
{{/unless}}
|
|
4
1
|
import path from "node:path";
|
|
5
2
|
import type { PrismaConfig } from "prisma";
|
|
3
|
+
{{#unless (eq dbSetup "prisma-postgres")}}
|
|
4
|
+
import dotenv from "dotenv";
|
|
5
|
+
|
|
6
|
+
dotenv.config({
|
|
7
|
+
path: "../../apps/server/.env",
|
|
8
|
+
});
|
|
9
|
+
{{/unless}}
|
|
6
10
|
|
|
7
11
|
export default {
|
|
8
12
|
schema: path.join("prisma", "schema"),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{{#if (eq dbSetup "d1")}}
|
|
2
2
|
import { env } from "cloudflare:workers";
|
|
3
3
|
import { PrismaD1 } from "@prisma/adapter-d1";
|
|
4
|
-
import { PrismaClient } from "
|
|
4
|
+
import { PrismaClient } from "../prisma/generated/client";
|
|
5
5
|
|
|
6
6
|
const adapter = new PrismaD1(env.DB);
|
|
7
7
|
const prisma = new PrismaClient({ adapter });
|
|
@@ -9,7 +9,7 @@ const prisma = new PrismaClient({ adapter });
|
|
|
9
9
|
export default prisma;
|
|
10
10
|
{{else if (eq dbSetup "turso")}}
|
|
11
11
|
import { PrismaLibSQL } from "@prisma/adapter-libsql";
|
|
12
|
-
import { PrismaClient } from "
|
|
12
|
+
import { PrismaClient } from "../prisma/generated/client";
|
|
13
13
|
|
|
14
14
|
const adapter = new PrismaLibSQL({
|
|
15
15
|
url: process.env.DATABASE_URL || "",
|
|
@@ -20,7 +20,7 @@ const prisma = new PrismaClient({ adapter });
|
|
|
20
20
|
|
|
21
21
|
export default prisma;
|
|
22
22
|
{{else}}
|
|
23
|
-
import { PrismaClient } from "
|
|
23
|
+
import { PrismaClient } from "../prisma/generated/client";
|
|
24
24
|
|
|
25
25
|
const prisma = new PrismaClient();
|
|
26
26
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./node_modules/wrangler/config-schema.json",
|
|
3
3
|
"name": "{{projectName}}",
|
|
4
|
-
"main": "
|
|
4
|
+
"main": "@tanstack/react-start/server-entry",
|
|
5
5
|
"compatibility_date": "2025-07-05",
|
|
6
6
|
"compatibility_flags": ["nodejs_compat"],
|
|
7
7
|
"assets": {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { google } from "@ai-sdk/google";
|
|
2
|
+
import { streamText, type UIMessage, convertToModelMessages } from "ai";
|
|
3
|
+
|
|
4
|
+
export const maxDuration = 30;
|
|
5
|
+
|
|
6
|
+
export async function POST(req: Request) {
|
|
7
|
+
const { messages }: { messages: UIMessage[] } = await req.json();
|
|
8
|
+
|
|
9
|
+
const result = streamText({
|
|
10
|
+
model: google("gemini-2.5-flash"),
|
|
11
|
+
messages: convertToModelMessages(messages),
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
return result.toUIMessageStreamResponse();
|
|
15
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{{#if (eq api "orpc")}}
|
|
2
|
-
import { eq } from "
|
|
2
|
+
import { eq } from "@{{projectName}}/db";
|
|
3
3
|
import z from "zod";
|
|
4
|
-
import { db } from "
|
|
5
|
-
import { todo } from "
|
|
6
|
-
import { publicProcedure } from "../
|
|
4
|
+
import { db } from "@{{projectName}}/db";
|
|
5
|
+
import { todo } from "@{{projectName}}/db/schema/todo";
|
|
6
|
+
import { publicProcedure } from "../index";
|
|
7
7
|
|
|
8
8
|
export const todoRouter = {
|
|
9
9
|
getAll: publicProcedure.handler(async () => {
|
|
@@ -39,10 +39,10 @@ export const todoRouter = {
|
|
|
39
39
|
|
|
40
40
|
{{#if (eq api "trpc")}}
|
|
41
41
|
import z from "zod";
|
|
42
|
-
import { router, publicProcedure } from "../
|
|
43
|
-
import { todo } from "
|
|
42
|
+
import { router, publicProcedure } from "../index";
|
|
43
|
+
import { todo } from "@{{projectName}}/db/schema/todo";
|
|
44
44
|
import { eq } from "drizzle-orm";
|
|
45
|
-
import { db } from "
|
|
45
|
+
import { db } from "@{{projectName}}/db";
|
|
46
46
|
|
|
47
47
|
export const todoRouter = router({
|
|
48
48
|
getAll: publicProcedure.query(async () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{{#if (eq api "orpc")}}
|
|
2
2
|
import z from "zod";
|
|
3
|
-
import { publicProcedure } from "../
|
|
4
|
-
import { Todo } from "
|
|
3
|
+
import { publicProcedure } from "../index";
|
|
4
|
+
import { Todo } from "@{{projectName}}/db/models/todo.model";
|
|
5
5
|
|
|
6
6
|
export const todoRouter = {
|
|
7
7
|
getAll: publicProcedure.handler(async () => {
|
|
@@ -34,8 +34,8 @@ export const todoRouter = {
|
|
|
34
34
|
|
|
35
35
|
{{#if (eq api "trpc")}}
|
|
36
36
|
import z from "zod";
|
|
37
|
-
import { router, publicProcedure } from "../
|
|
38
|
-
import { Todo } from "
|
|
37
|
+
import { router, publicProcedure } from "../index";
|
|
38
|
+
import { Todo } from "@{{projectName}}/db/models/todo.model";
|
|
39
39
|
|
|
40
40
|
export const todoRouter = router({
|
|
41
41
|
getAll: publicProcedure.query(async () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{{#if (eq api "orpc")}}
|
|
2
2
|
import z from "zod";
|
|
3
|
-
import prisma from "
|
|
4
|
-
import { publicProcedure } from "../
|
|
3
|
+
import prisma from "@{{projectName}}/db";
|
|
4
|
+
import { publicProcedure } from "../index";
|
|
5
5
|
|
|
6
6
|
export const todoRouter = {
|
|
7
7
|
getAll: publicProcedure.handler(async () => {
|
|
@@ -52,8 +52,8 @@ export const todoRouter = {
|
|
|
52
52
|
{{#if (eq api "trpc")}}
|
|
53
53
|
import { TRPCError } from "@trpc/server";
|
|
54
54
|
import z from "zod";
|
|
55
|
-
import prisma from "
|
|
56
|
-
import { publicProcedure, router } from "../
|
|
55
|
+
import prisma from "@{{projectName}}/db";
|
|
56
|
+
import { publicProcedure, router } from "../index";
|
|
57
57
|
|
|
58
58
|
export const todoRouter = router({
|
|
59
59
|
getAll: publicProcedure.query(async () => {
|
|
@@ -8,7 +8,7 @@ import type { QueryClient } from "@tanstack/react-query";
|
|
|
8
8
|
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
|
|
9
9
|
import { useState } from "react";
|
|
10
10
|
import { createTanstackQueryUtils } from "@orpc/tanstack-query";
|
|
11
|
-
import type { AppRouterClient } from "
|
|
11
|
+
import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index";
|
|
12
12
|
import { createORPCClient } from "@orpc/client";
|
|
13
13
|
{{/if}}
|
|
14
14
|
{{#if (eq api "trpc")}}
|