feat: implement core application structure, UI components, internationalization, and database seeding.
This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
{
|
||||
"/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js",
|
||||
"/api/auth/register/route": "app/api/auth/register/route.js",
|
||||
"/api/projects/route": "app/api/projects/route.js",
|
||||
"/api/user/profile/route": "app/api/user/profile/route.js",
|
||||
"/dashboard/page": "app/dashboard/page.js",
|
||||
"/login/page": "app/login/page.js",
|
||||
"/api/plans/route": "app/api/plans/route.js",
|
||||
"/features/page": "app/features/page.js",
|
||||
"/page": "app/page.js",
|
||||
"/signup/page": "app/signup/page.js"
|
||||
"/pricing/page": "app/pricing/page.js"
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
var R=require("../../../chunks/[turbopack]_runtime.js")("server/app/api/plans/route.js")
|
||||
R.c("server/chunks/[root-of-the-server]__596609d2._.js")
|
||||
R.c("server/chunks/[root-of-the-server]__f07a6d6f._.js")
|
||||
R.c("server/chunks/[root-of-the-server]__174f1a89._.js")
|
||||
R.c("server/chunks/80b94_00 - projet_plumeia__next-internal_server_app_api_plans_route_actions_6db30635.js")
|
||||
R.m("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/build/templates/app-route.js { INNER_APP_ROUTE => \"[project]/Documents/00 - projet/plumeia/src/app/api/plans/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)")
|
||||
|
||||
@@ -4,7 +4,7 @@ R.c("server/chunks/ssr/[root-of-the-server]__8a903a6f._.js")
|
||||
R.c("server/chunks/ssr/549ce_next_dist_a9a2f161._.js")
|
||||
R.c("server/chunks/ssr/[externals]__7f148858._.js")
|
||||
R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__31132813._.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__f4e881ac._.js")
|
||||
R.c("server/chunks/ssr/549ce_next_dist_client_components_5ea51078._.js")
|
||||
R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js")
|
||||
R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js")
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -50,8 +50,11 @@ __turbopack_context__.s([
|
||||
"default",
|
||||
()=>__TURBOPACK__default__export__,
|
||||
"getDB",
|
||||
()=>getDB
|
||||
()=>getDB,
|
||||
"prisma",
|
||||
()=>prisma
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$server$2d$only$2f$empty$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/server-only/empty.js [app-route] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$externals$5d2f40$prisma$2f$client__$5b$external$5d$__$2840$prisma$2f$client$2c$__cjs$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$client$29$__ = __turbopack_context__.i("[externals]/@prisma/client [external] (@prisma/client, cjs, [project]/Documents/00 - projet/plumeia/node_modules/@prisma/client)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$adapter$2d$pg$2f$dist$2f$index$2e$mjs__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/@prisma/adapter-pg/dist/index.mjs [app-route] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$externals$5d2f$pg__$5b$external$5d$__$28$pg$2c$__esm_import$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$pg$29$__ = __turbopack_context__.i("[externals]/pg [external] (pg, esm_import, [project]/Documents/00 - projet/plumeia/node_modules/pg)");
|
||||
@@ -63,6 +66,7 @@ var __turbopack_async_dependencies__ = __turbopack_handle_async_dependencies__([
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
const globalForPrisma = globalThis;
|
||||
function getDB() {
|
||||
if (!globalForPrisma.prisma) {
|
||||
@@ -77,6 +81,14 @@ function getDB() {
|
||||
}
|
||||
return globalForPrisma.prisma;
|
||||
}
|
||||
if ("TURBOPACK compile-time truthy", 1) {
|
||||
globalForPrisma.prisma = getDB();
|
||||
}
|
||||
const prisma = new Proxy({}, {
|
||||
get (target, prop, receiver) {
|
||||
return Reflect.get(getDB(), prop, receiver);
|
||||
}
|
||||
});
|
||||
const __TURBOPACK__default__export__ = getDB;
|
||||
__turbopack_async_result__();
|
||||
} catch(e) { __turbopack_async_result__(e); } }, false);}),
|
||||
@@ -102,8 +114,8 @@ var __turbopack_async_dependencies__ = __turbopack_handle_async_dependencies__([
|
||||
const dynamic = 'force-dynamic';
|
||||
async function GET() {
|
||||
try {
|
||||
const prisma = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"])();
|
||||
const plans = await prisma.plan.findMany({
|
||||
//const prisma = getDB();
|
||||
const plans = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["prisma"].plan.findMany({
|
||||
orderBy: {
|
||||
price: 'asc'
|
||||
}
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": [
|
||||
{"offset": {"line": 48, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/prisma.ts"],"sourcesContent":["import { PrismaClient } from '@prisma/client';\r\nimport { PrismaPg } from '@prisma/adapter-pg';\r\nimport { Pool } from 'pg';\r\n\r\nconst globalForPrisma = globalThis as unknown as {\r\n prisma: PrismaClient | undefined;\r\n};\r\n\r\n/**\r\n * Returns a singleton PrismaClient instance using the Prisma v7 adapter pattern.\r\n * Uses @prisma/adapter-pg with a pg Pool for direct PostgreSQL connections.\r\n */\r\nexport function getDB(): PrismaClient {\r\n if (!globalForPrisma.prisma) {\r\n const connectionString = process.env.DATABASE_URL;\r\n const pool = new Pool({ connectionString });\r\n const adapter = new PrismaPg(pool);\r\n\r\n globalForPrisma.prisma = new PrismaClient({ adapter });\r\n }\r\n return globalForPrisma.prisma;\r\n}\r\n\r\nexport default getDB;\r\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AACA;;;;;;;;;AAEA,MAAM,kBAAkB;AAQjB,SAAS;IACZ,IAAI,CAAC,gBAAgB,MAAM,EAAE;QACzB,MAAM,mBAAmB,QAAQ,GAAG,CAAC,YAAY;QACjD,MAAM,OAAO,IAAI,iMAAI,CAAC;YAAE;QAAiB;QACzC,MAAM,UAAU,IAAI,qNAAQ,CAAC;QAE7B,gBAAgB,MAAM,GAAG,IAAI,kPAAY,CAAC;YAAE;QAAQ;IACxD;IACA,OAAO,gBAAgB,MAAM;AACjC;uCAEe"}},
|
||||
{"offset": {"line": 87, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/api/plans/route.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\r\nimport getDB from '@/lib/prisma';\r\n\r\nexport const dynamic = 'force-dynamic';\r\n\r\nexport async function GET() {\r\n try {\r\n const prisma = getDB();\r\n const plans = await prisma.plan.findMany({\r\n orderBy: { price: 'asc' }\r\n });\r\n const response = NextResponse.json(plans);\r\n response.headers.set('Cache-Control', 'no-store, max-age=0');\r\n return response;\r\n } catch (error) {\r\n console.error('Failed to fetch plans', error);\r\n return NextResponse.json({ error: 'Failed to fetch plans' }, { status: 500 });\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;AAAA;AACA;;;;;;;AAEO,MAAM,UAAU;AAEhB,eAAe;IAClB,IAAI;QACA,MAAM,SAAS,IAAA,6KAAK;QACpB,MAAM,QAAQ,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC;YACrC,SAAS;gBAAE,OAAO;YAAM;QAC5B;QACA,MAAM,WAAW,4LAAY,CAAC,IAAI,CAAC;QACnC,SAAS,OAAO,CAAC,GAAG,CAAC,iBAAiB;QACtC,OAAO;IACX,EAAE,OAAO,OAAO;QACZ,QAAQ,KAAK,CAAC,yBAAyB;QACvC,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAwB,GAAG;YAAE,QAAQ;QAAI;IAC/E;AACJ"}}]
|
||||
{"offset": {"line": 48, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/prisma.ts"],"sourcesContent":["import 'server-only';\r\nimport { PrismaClient } from '@prisma/client';\r\nimport { PrismaPg } from '@prisma/adapter-pg';\r\nimport { Pool } from 'pg';\r\n\r\nconst globalForPrisma = globalThis as unknown as {\r\n prisma: PrismaClient | undefined;\r\n};\r\n\r\nexport function getDB(): PrismaClient {\r\n if (!globalForPrisma.prisma) {\r\n const connectionString = process.env.DATABASE_URL;\r\n const pool = new Pool({ connectionString });\r\n const adapter = new PrismaPg(pool);\r\n\r\n globalForPrisma.prisma = new PrismaClient({ adapter });\r\n }\r\n return globalForPrisma.prisma;\r\n}\r\n\r\nif (process.env.NODE_ENV !== 'production') {\r\n globalForPrisma.prisma = getDB();\r\n}\r\n\r\nexport const prisma = new Proxy({} as any, {\r\n get(target, prop, receiver) {\r\n return Reflect.get(getDB(), prop, receiver);\r\n }\r\n}) as PrismaClient;\r\n\r\nexport default getDB;"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;;;;;;;;;AAEA,MAAM,kBAAkB;AAIjB,SAAS;IACZ,IAAI,CAAC,gBAAgB,MAAM,EAAE;QACzB,MAAM,mBAAmB,QAAQ,GAAG,CAAC,YAAY;QACjD,MAAM,OAAO,IAAI,iMAAI,CAAC;YAAE;QAAiB;QACzC,MAAM,UAAU,IAAI,qNAAQ,CAAC;QAE7B,gBAAgB,MAAM,GAAG,IAAI,kPAAY,CAAC;YAAE;QAAQ;IACxD;IACA,OAAO,gBAAgB,MAAM;AACjC;AAEA,wCAA2C;IACvC,gBAAgB,MAAM,GAAG;AAC7B;AAEO,MAAM,SAAS,IAAI,MAAM,CAAC,GAAU;IACvC,KAAI,MAAM,EAAE,IAAI,EAAE,QAAQ;QACtB,OAAO,QAAQ,GAAG,CAAC,SAAS,MAAM;IACtC;AACJ;uCAEe"}},
|
||||
{"offset": {"line": 99, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/api/plans/route.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\r\nimport { prisma } from '@/lib/prisma';\r\n\r\nexport const dynamic = 'force-dynamic';\r\n\r\nexport async function GET() {\r\n try {\r\n //const prisma = getDB();\r\n const plans = await prisma.plan.findMany({\r\n orderBy: { price: 'asc' }\r\n });\r\n const response = NextResponse.json(plans);\r\n response.headers.set('Cache-Control', 'no-store, max-age=0');\r\n return response;\r\n } catch (error) {\r\n console.error('Failed to fetch plans', error);\r\n return NextResponse.json({ error: 'Failed to fetch plans' }, { status: 500 });\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;AAAA;AACA;;;;;;;AAEO,MAAM,UAAU;AAEhB,eAAe;IAClB,IAAI;QACA,yBAAyB;QACzB,MAAM,QAAQ,MAAM,4KAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,SAAS;gBAAE,OAAO;YAAM;QAC5B;QACA,MAAM,WAAW,4LAAY,CAAC,IAAI,CAAC;QACnC,SAAS,OAAO,CAAC,GAAG,CAAC,iBAAiB;QACtC,OAAO;IACX,EAAE,OAAO,OAAO;QACZ,QAAQ,KAAK,CAAC,yBAAyB;QACvC,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAwB,GAAG;YAAE,QAAQ;QAAI;IAC/E;AACJ"}}]
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/login/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/signup/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"
|
||||
self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/00 - projet/plumeia/src/app/features/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/pricing/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"
|
||||
@@ -1,10 +1,6 @@
|
||||
{
|
||||
"app": {
|
||||
"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page": [
|
||||
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
|
||||
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
|
||||
],
|
||||
"[project]/Documents/00 - projet/plumeia/src/app/login/page": [
|
||||
"[project]/Documents/00 - projet/plumeia/src/app/features/page": [
|
||||
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
|
||||
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
|
||||
],
|
||||
@@ -12,7 +8,7 @@
|
||||
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
|
||||
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
|
||||
],
|
||||
"[project]/Documents/00 - projet/plumeia/src/app/signup/page": [
|
||||
"[project]/Documents/00 - projet/plumeia/src/app/pricing/page": [
|
||||
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
|
||||
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user