Template — Next.js
+Clean Architecture Monorepo Template
+diff --git a/apps/web-next/next.config.mjs b/apps/web-next/next.config.mjs new file mode 100644 index 0000000..55b1bb9 --- /dev/null +++ b/apps/web-next/next.config.mjs @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + transpilePackages: ["@repo/api", "@repo/api-client", "@repo/core", "@repo/ui"], +}; + +export default nextConfig; diff --git a/apps/web-next/package.json b/apps/web-next/package.json index 58cee36..ee3b90f 100644 --- a/apps/web-next/package.json +++ b/apps/web-next/package.json @@ -4,17 +4,24 @@ "version": "0.0.0", "type": "module", "scripts": { - "build": "echo 'placeholder'", - "dev": "echo 'placeholder'", + "build": "next build", + "dev": "next dev --port 3000", "lint": "eslint .", "typecheck": "tsc --noEmit" }, "dependencies": { + "@repo/api": "workspace:*", "@repo/api-client": "workspace:*", - "@repo/ui": "workspace:*" + "@repo/ui": "workspace:*", + "next": "^15.3.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { "@repo/eslint-config": "workspace:*", - "@repo/typescript-config": "workspace:*" + "@repo/typescript-config": "workspace:*", + "@types/node": "^22.0.0", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0" } } diff --git a/apps/web-next/src/app/api/trpc/[trpc]/route.ts b/apps/web-next/src/app/api/trpc/[trpc]/route.ts new file mode 100644 index 0000000..376b8c3 --- /dev/null +++ b/apps/web-next/src/app/api/trpc/[trpc]/route.ts @@ -0,0 +1,12 @@ +import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; +import { appRouter } from "@repo/api"; + +const handler = (req: Request) => + fetchRequestHandler({ + endpoint: "/api/trpc", + req, + router: appRouter, + createContext: () => ({}), + }); + +export { handler as GET, handler as POST }; diff --git a/apps/web-next/src/app/layout.tsx b/apps/web-next/src/app/layout.tsx new file mode 100644 index 0000000..623df37 --- /dev/null +++ b/apps/web-next/src/app/layout.tsx @@ -0,0 +1,21 @@ +import type { Metadata } from "next"; +import { Providers } from "./providers"; + +export const metadata: Metadata = { + title: "Template — Next.js", + description: "Clean Architecture Monorepo Template", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + +
+Clean Architecture Monorepo Template
+