create-carlonicora-app 1.0.0 → 1.3.2
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/utils/files.d.ts.map +1 -1
- package/dist/utils/files.js +14 -1
- package/dist/utils/files.js.map +1 -1
- package/package.json +6 -1
- package/template/apps/api/package.json +1 -1
- package/template/apps/web/next-env.d.ts +6 -0
- package/template/apps/web/package.json +1 -1
- package/template/apps/web/src/app/[locale]/(admin)/administration/companies/[id]/page.tsx +1 -3
- package/template/apps/web/src/app/[locale]/(admin)/layout.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(auth)/activation/[code]/page.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(auth)/auth/page.tsx +1 -1
- package/template/apps/web/src/app/[locale]/(auth)/invitation/[code]/page.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(auth)/login/page.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(auth)/register/page.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(auth)/reset/[code]/page.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(main)/(foundations)/roles/[id]/page.tsx +1 -3
- package/template/apps/web/src/app/[locale]/(main)/(foundations)/users/[id]/loading.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(main)/(foundations)/users/[id]/page.tsx +1 -3
- package/template/apps/web/src/app/[locale]/(main)/(foundations)/users/page.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(main)/error.tsx +1 -2
- package/template/apps/web/src/app/[locale]/(main)/layout.tsx +1 -3
- package/template/apps/web/src/app/[locale]/(main)/page.tsx +2 -2
- package/template/apps/web/src/app/[locale]/layout.tsx +2 -3
- package/template/apps/web/src/config/Bootstrapper.ts +6 -6
- package/template/apps/web/src/config/env.ts +2 -1
- package/template/apps/web/src/features/common/components/details/LayoutDetails.tsx +2 -2
- package/template/apps/web/src/features/common/components/navigations/CommonSidebar.tsx +4 -5
- package/template/apps/web/src/features/common/components/navigations/CreationDropDown.tsx +3 -3
- package/template/apps/web/src/features/common/components/navigations/UserSidebarFooter.tsx +8 -6
- package/template/gitignore +91 -0
- package/template/npmrc +1 -0
- package/template/package.json +4 -2
- package/template/scripts/apply-production-versions.js +37 -0
- package/template/.vscode/settings.json +0 -16
- /package/template/apps/api/{.prettierrc → prettierrc} +0 -0
- /package/template/apps/web/{.swcrc → swcrc} +0 -0
- /package/template/{.env.example → env.example} +0 -0
- /package/template/{.gitmodules → gitmodules} +0 -0
- /package/template/{.prettierignore → prettierignore} +0 -0
- /package/template/{.prettierrc → prettierrc} +0 -0
- /package/template/{.releaserc → releaserc} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAsD3D,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAuBD,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/D;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE"}
|
package/dist/utils/files.js
CHANGED
|
@@ -38,11 +38,24 @@ function isBinaryFile(filePath) {
|
|
|
38
38
|
const ext = path.extname(filePath).toLowerCase();
|
|
39
39
|
return BINARY_EXTENSIONS.has(ext);
|
|
40
40
|
}
|
|
41
|
+
// Files that need to be renamed from "name" to ".name" (npm strips dotfiles)
|
|
42
|
+
const DOTFILE_RENAMES = {
|
|
43
|
+
gitignore: '.gitignore',
|
|
44
|
+
gitmodules: '.gitmodules',
|
|
45
|
+
prettierrc: '.prettierrc',
|
|
46
|
+
prettierignore: '.prettierignore',
|
|
47
|
+
npmrc: '.npmrc',
|
|
48
|
+
releaserc: '.releaserc',
|
|
49
|
+
swcrc: '.swcrc',
|
|
50
|
+
'env.example': '.env.example',
|
|
51
|
+
};
|
|
41
52
|
export async function copyTemplate(srcDir, destDir, config) {
|
|
42
53
|
const entries = await fs.readdir(srcDir, { withFileTypes: true });
|
|
43
54
|
for (const entry of entries) {
|
|
44
55
|
const srcPath = path.join(srcDir, entry.name);
|
|
45
|
-
|
|
56
|
+
// Rename dotfiles back to their proper names
|
|
57
|
+
const destName = DOTFILE_RENAMES[entry.name] || entry.name;
|
|
58
|
+
const destPath = path.join(destDir, destName);
|
|
46
59
|
if (entry.isDirectory()) {
|
|
47
60
|
await fs.ensureDir(destPath);
|
|
48
61
|
await copyTemplate(srcPath, destPath, config);
|
package/dist/utils/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,YAAY;IACZ,MAAM;IACN,mDAAmD;IACnD,OAAO;IACP,uBAAuB;IACvB,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;CACT,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,OAAe,EACf,MAAyB;IAEzB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-carlonicora-app",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "Create a NestJS + Next.js monorepo project with Neo4j and JSON:API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -45,8 +45,13 @@
|
|
|
45
45
|
"ora": "^8.0.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
49
|
+
"@semantic-release/git": "^10.0.1",
|
|
50
|
+
"@semantic-release/github": "^11.0.0",
|
|
48
51
|
"@types/fs-extra": "^11.0.4",
|
|
49
52
|
"@types/node": "^22.0.0",
|
|
53
|
+
"conventional-changelog-conventionalcommits": "^8.0.0",
|
|
54
|
+
"semantic-release": "^24.0.0",
|
|
50
55
|
"typescript": "^5.6.0"
|
|
51
56
|
}
|
|
52
57
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@hello-pangea/dnd": "^18.0.1",
|
|
33
33
|
"@hookform/resolvers": "^5.2.2",
|
|
34
34
|
"@next/third-parties": "16.0.10",
|
|
35
|
-
"@carlonicora/nextjs-jsonapi": "
|
|
35
|
+
"@carlonicora/nextjs-jsonapi": "workspace:*",
|
|
36
36
|
"@{{name}}/shared": "workspace:*",
|
|
37
37
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
38
38
|
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { generateSpecificMetadata } from "@/utils/metadata";
|
|
2
2
|
import { AdminCompanyContainer, PageContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
3
|
import { CompanyProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
4
|
-
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
5
|
-
import { CompanyInterface, CompanyService } from "@carlonicora/nextjs-jsonapi/features";
|
|
6
|
-
import { Action } from "@carlonicora/nextjs-jsonapi/permissions";
|
|
4
|
+
import { Action, CompanyInterface, CompanyService, Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
7
5
|
import { ServerSession } from "@carlonicora/nextjs-jsonapi/server";
|
|
8
6
|
import { RoleId } from "@{{name}}/shared";
|
|
9
7
|
import { Metadata } from "next";
|
|
@@ -3,9 +3,8 @@ import "react-horizontal-scrolling-menu/dist/styles.css";
|
|
|
3
3
|
|
|
4
4
|
import LayoutDetails from "@/features/common/components/details/LayoutDetails";
|
|
5
5
|
import { routing } from "@/i18n/routing";
|
|
6
|
-
import { PushNotificationProvider, RefreshUser } from "@carlonicora/nextjs-jsonapi/components";
|
|
6
|
+
import { PushNotificationProvider, RefreshUser, SidebarProvider } from "@carlonicora/nextjs-jsonapi/components";
|
|
7
7
|
import { NotificationContextProvider, SocketProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
8
|
-
import { SidebarProvider } from "@carlonicora/nextjs-jsonapi/shadcnui";
|
|
9
8
|
import { hasLocale } from "next-intl";
|
|
10
9
|
import { getMessages, setRequestLocale } from "next-intl/server";
|
|
11
10
|
import { Inter } from "next/font/google";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { generateSpecificMetadata } from "@/utils/metadata";
|
|
2
|
-
import { AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
|
-
import { AuthComponent } from "@carlonicora/nextjs-jsonapi/features";
|
|
2
|
+
import { AuthComponent, AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
4
3
|
import { Metadata } from "next";
|
|
5
4
|
|
|
6
5
|
export async function generateMetadata(): Promise<Metadata> {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Cookies } from "@carlonicora/nextjs-jsonapi/components";
|
|
2
|
-
import { AuthInterface, AuthService } from "@carlonicora/nextjs-jsonapi/
|
|
2
|
+
import { AuthInterface, AuthService } from "@carlonicora/nextjs-jsonapi/core";
|
|
3
3
|
|
|
4
4
|
export default async function AuthPage(props: { searchParams: Promise<{ code: string }> }) {
|
|
5
5
|
const searchParams = await props.searchParams;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
2
|
-
import { AuthComponent } from "@carlonicora/nextjs-jsonapi/features";
|
|
1
|
+
import { AuthComponent, AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
2
|
|
|
4
3
|
export default async function InvitationPage(props: { params: Promise<{ code: string }> }) {
|
|
5
4
|
const params = await props.params;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
2
|
-
import { AuthComponent } from "@carlonicora/nextjs-jsonapi/features";
|
|
1
|
+
import { AuthComponent, AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
2
|
|
|
4
3
|
export default async function LoginPage() {
|
|
5
4
|
return <AuthContainer componentType={AuthComponent.Login} />;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
2
|
-
import { AuthComponent } from "@carlonicora/nextjs-jsonapi/features";
|
|
1
|
+
import { AuthComponent, AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
2
|
|
|
4
3
|
export default async function RegisterPage() {
|
|
5
4
|
return <AuthContainer componentType={AuthComponent.Register} />;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
2
|
-
import { AuthComponent } from "@carlonicora/nextjs-jsonapi/features";
|
|
1
|
+
import { AuthComponent, AuthContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
2
|
|
|
4
3
|
export default async function ResetPage(props: { params: Promise<{ code: string }> }) {
|
|
5
4
|
const params = await props.params;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { PageContainer, RoleContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
2
2
|
import { RoleProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
3
|
-
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
4
|
-
import { RoleInterface, RoleService } from "@carlonicora/nextjs-jsonapi/features";
|
|
5
|
-
import { Action } from "@carlonicora/nextjs-jsonapi/permissions";
|
|
3
|
+
import { Action, Modules, RoleInterface, RoleService } from "@carlonicora/nextjs-jsonapi/core";
|
|
6
4
|
import { ServerSession } from "@carlonicora/nextjs-jsonapi/server";
|
|
7
5
|
|
|
8
6
|
export default async function RolePage(props: { params: Promise<{ id: string }> }) {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use server";
|
|
2
2
|
|
|
3
|
-
import { PageContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
|
+
import { PageContainer, Skeleton } from "@carlonicora/nextjs-jsonapi/components";
|
|
4
4
|
import { UserProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
5
|
-
import { Skeleton } from "@carlonicora/nextjs-jsonapi/shadcnui";
|
|
6
5
|
|
|
7
6
|
export default async function Loading() {
|
|
8
7
|
return (
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { generateSpecificMetadata } from "@/utils/metadata";
|
|
2
2
|
import { PageContainer, UserContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
3
|
import { CompanyProvider, UserProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
4
|
-
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
5
|
-
import { UserInterface, UserService } from "@carlonicora/nextjs-jsonapi/features";
|
|
6
|
-
import { Action } from "@carlonicora/nextjs-jsonapi/permissions";
|
|
4
|
+
import { Action, Modules, UserInterface, UserService } from "@carlonicora/nextjs-jsonapi/core";
|
|
7
5
|
import { ServerSession } from "@carlonicora/nextjs-jsonapi/server";
|
|
8
6
|
import { Metadata } from "next";
|
|
9
7
|
import { getTranslations } from "next-intl/server";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { PageContainer, UsersListContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
2
2
|
import { UserProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
3
|
-
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
4
|
-
import { Action } from "@carlonicora/nextjs-jsonapi/permissions";
|
|
3
|
+
import { Action, Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
5
4
|
import { ServerSession } from "@carlonicora/nextjs-jsonapi/server";
|
|
6
5
|
|
|
7
6
|
export default async function UsersListPage() {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { ErrorDetails, Logout } from "@carlonicora/nextjs-jsonapi/components";
|
|
4
|
-
import { Button } from "@carlonicora/nextjs-jsonapi/shadcnui";
|
|
3
|
+
import { Button, ErrorDetails, Logout } from "@carlonicora/nextjs-jsonapi/components";
|
|
5
4
|
import { useMessages } from "next-intl";
|
|
6
5
|
import { useEffect } from "react";
|
|
7
6
|
|
|
@@ -2,10 +2,8 @@ import { ServerSession } from "@carlonicora/nextjs-jsonapi/server";
|
|
|
2
2
|
import "react-horizontal-scrolling-menu/dist/styles.css";
|
|
3
3
|
|
|
4
4
|
import LayoutDetails from "@/features/common/components/details/LayoutDetails";
|
|
5
|
-
import { AuthContainer, PushNotificationProvider, RefreshUser } from "@carlonicora/nextjs-jsonapi/components";
|
|
5
|
+
import { AuthComponent, AuthContainer, PushNotificationProvider, RefreshUser, SidebarProvider } from "@carlonicora/nextjs-jsonapi/components";
|
|
6
6
|
import { NotificationContextProvider, SocketProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
7
|
-
import { AuthComponent } from "@carlonicora/nextjs-jsonapi/features";
|
|
8
|
-
import { SidebarProvider } from "@carlonicora/nextjs-jsonapi/shadcnui";
|
|
9
7
|
import { cookies } from "next/headers";
|
|
10
8
|
|
|
11
9
|
export default async function MainLayout(props: { children: React.ReactNode; params: Promise<{ locale: string }> }) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import IndexContainer from "@/features/common/components/containers/IndexContainer";
|
|
2
2
|
import { generateSpecificMetadata } from "@/utils/metadata";
|
|
3
|
-
import { AuthContainer, CompaniesList, PageContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
|
+
import { AuthComponent, AuthContainer, CompaniesList, PageContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
4
4
|
import { CommonProvider, CompanyProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
5
|
-
import {
|
|
5
|
+
import { ContentInterface, ContentService } from "@carlonicora/nextjs-jsonapi/core";
|
|
6
6
|
import { ServerSession } from "@carlonicora/nextjs-jsonapi/server";
|
|
7
7
|
import { RoleId } from "@{{name}}/shared";
|
|
8
8
|
import { Metadata } from "next";
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { BootstrapProvider } from "@/config/BootstrapProvider";
|
|
2
2
|
import "@/config/env"; // Server-side bootstrap
|
|
3
|
+
import { TooltipProvider } from "@carlonicora/nextjs-jsonapi/components";
|
|
3
4
|
import { CurrentUserProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
5
|
+
import { cn } from "@carlonicora/nextjs-jsonapi/core";
|
|
4
6
|
import { Provider } from "jotai";
|
|
5
7
|
import "react-horizontal-scrolling-menu/dist/styles.css";
|
|
6
8
|
|
|
7
9
|
import { routing } from "@/i18n/routing";
|
|
8
|
-
// import { cn } from "@/lib/utils";
|
|
9
|
-
import { TooltipProvider } from "@carlonicora/nextjs-jsonapi/shadcnui";
|
|
10
|
-
import { cn } from "@carlonicora/nextjs-jsonapi/utils";
|
|
11
10
|
import { hasLocale, NextIntlClientProvider } from "next-intl";
|
|
12
11
|
import { getMessages, setRequestLocale } from "next-intl/server";
|
|
13
12
|
import { ThemeProvider } from "next-themes";
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { FeatureIds } from "@/enums/feature.ids";
|
|
2
|
-
import { DataClassRegistry, FieldSelector, ModuleRegistry } from "@carlonicora/nextjs-jsonapi/core";
|
|
3
|
-
import { ModuleWithPermissions } from "@carlonicora/nextjs-jsonapi/permissions";
|
|
4
|
-
import { LucideIcon } from "lucide-react";
|
|
5
|
-
|
|
6
|
-
// Foundation module imports (from app - code stays in app)
|
|
7
2
|
import {
|
|
8
3
|
AuthModule,
|
|
9
4
|
AuthorModule,
|
|
10
5
|
CompanyModule,
|
|
11
6
|
ContentModule,
|
|
7
|
+
DataClassRegistry,
|
|
12
8
|
FeatureModule,
|
|
9
|
+
FieldSelector,
|
|
13
10
|
ModuleModule,
|
|
11
|
+
ModuleRegistry,
|
|
12
|
+
ModuleWithPermissions,
|
|
14
13
|
NotificationModule,
|
|
15
14
|
PushModule,
|
|
16
15
|
RoleModule,
|
|
17
16
|
S3Module,
|
|
18
17
|
UserModule,
|
|
19
|
-
} from "@carlonicora/nextjs-jsonapi/
|
|
18
|
+
} from "@carlonicora/nextjs-jsonapi/core";
|
|
19
|
+
import { LucideIcon } from "lucide-react";
|
|
20
20
|
|
|
21
21
|
// Feature module imports
|
|
22
22
|
|
|
@@ -3,7 +3,8 @@ import { ENV } from "@/config/middleware-env";
|
|
|
3
3
|
import { Link, usePathname, useRouter } from "@/i18n/routing";
|
|
4
4
|
import { useDateFnsLocale } from "@/i18n/useDateFnsLocale";
|
|
5
5
|
import { removeToken, updateToken } from "@/server-actions/auth-cookies";
|
|
6
|
-
import { configureAuth, configureI18n, configureJsonApi, configureRoles
|
|
6
|
+
import { configureAuth, configureI18n, configureJsonApi, configureRoles } from "@carlonicora/nextjs-jsonapi";
|
|
7
|
+
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
7
8
|
import { RoleId } from "@{{name}}/shared";
|
|
8
9
|
import { useLocale, useTranslations } from "next-intl";
|
|
9
10
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import CommonSidebar from "@/features/common/components/navigations/CommonSidebar";
|
|
4
|
+
import { useNotificationSync, usePageTracker } from "@carlonicora/nextjs-jsonapi/client";
|
|
4
5
|
import { useCurrentUserContext, useNotificationContext } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
5
|
-
import { RoleInterface, UserInterface } from "@carlonicora/nextjs-jsonapi/
|
|
6
|
-
import { useNotificationSync, usePageTracker } from "@carlonicora/nextjs-jsonapi/hooks";
|
|
6
|
+
import { RoleInterface, UserInterface } from "@carlonicora/nextjs-jsonapi/core";
|
|
7
7
|
import { RoleId } from "@{{name}}/shared";
|
|
8
8
|
import { useEffect } from "react";
|
|
9
9
|
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import CreationDropDown from "@/features/common/components/navigations/CreationDropDown";
|
|
4
4
|
import { useRouter } from "@/i18n/routing";
|
|
5
|
-
import {
|
|
6
|
-
import { RecentPagesNavigator } from "@carlonicora/nextjs-jsonapi/components";
|
|
7
|
-
import { useCurrentUserContext, useNotificationContext } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
8
|
-
import { usePageUrlGenerator } from "@carlonicora/nextjs-jsonapi/hooks";
|
|
5
|
+
import { usePageUrlGenerator } from "@carlonicora/nextjs-jsonapi/client";
|
|
9
6
|
import {
|
|
10
7
|
Link,
|
|
8
|
+
RecentPagesNavigator,
|
|
11
9
|
Sidebar,
|
|
12
10
|
SidebarContent,
|
|
13
11
|
SidebarFooter,
|
|
@@ -21,7 +19,8 @@ import {
|
|
|
21
19
|
TooltipContent,
|
|
22
20
|
TooltipTrigger,
|
|
23
21
|
useSidebar,
|
|
24
|
-
} from "@carlonicora/nextjs-jsonapi/
|
|
22
|
+
} from "@carlonicora/nextjs-jsonapi/components";
|
|
23
|
+
import { recentPagesAtom, useCurrentUserContext, useNotificationContext } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
25
24
|
|
|
26
25
|
import { UserSidebarFooter } from "@/features/common/components/navigations/UserSidebarFooter";
|
|
27
26
|
import { useAtomValue } from "jotai";
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCurrentUserContext } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
4
|
-
import { UserInterface } from "@carlonicora/nextjs-jsonapi/features";
|
|
5
3
|
import {
|
|
6
4
|
Button,
|
|
7
5
|
DropdownMenu,
|
|
@@ -10,7 +8,9 @@ import {
|
|
|
10
8
|
DropdownMenuSeparator,
|
|
11
9
|
DropdownMenuTrigger,
|
|
12
10
|
useSidebar,
|
|
13
|
-
} from "@carlonicora/nextjs-jsonapi/
|
|
11
|
+
} from "@carlonicora/nextjs-jsonapi/components";
|
|
12
|
+
import { useCurrentUserContext } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
13
|
+
import { UserInterface } from "@carlonicora/nextjs-jsonapi/core";
|
|
14
14
|
import { PlusCircleIcon } from "lucide-react";
|
|
15
15
|
import { useTranslations } from "next-intl";
|
|
16
16
|
import { useState } from "react";
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import VersionDisplay from "@/features/common/components/navigations/VersionDisplay";
|
|
4
|
-
import { Modules } from "@carlonicora/nextjs-jsonapi";
|
|
5
|
-
import {
|
|
6
|
-
import { useCurrentUserContext } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
7
|
-
import { UserInterface } from "@carlonicora/nextjs-jsonapi/features";
|
|
8
|
-
import { usePageUrlGenerator } from "@carlonicora/nextjs-jsonapi/hooks";
|
|
4
|
+
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
5
|
+
import { usePageUrlGenerator } from "@carlonicora/nextjs-jsonapi/client";
|
|
9
6
|
import {
|
|
10
7
|
DropdownMenu,
|
|
11
8
|
DropdownMenuContent,
|
|
@@ -15,11 +12,16 @@ import {
|
|
|
15
12
|
DropdownMenuSeparator,
|
|
16
13
|
DropdownMenuTrigger,
|
|
17
14
|
Link,
|
|
15
|
+
ModeToggleSwitch,
|
|
16
|
+
NotificationModal,
|
|
18
17
|
SidebarMenu,
|
|
19
18
|
SidebarMenuButton,
|
|
20
19
|
SidebarMenuItem,
|
|
20
|
+
UserAvatar,
|
|
21
21
|
useSidebar,
|
|
22
|
-
} from "@carlonicora/nextjs-jsonapi/
|
|
22
|
+
} from "@carlonicora/nextjs-jsonapi/components";
|
|
23
|
+
import { useCurrentUserContext } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
24
|
+
import { UserInterface } from "@carlonicora/nextjs-jsonapi/core";
|
|
23
25
|
import { RoleId } from "@{{name}}/shared";
|
|
24
26
|
import { ChevronsUpDown, LogOut, SettingsIcon, UserIcon } from "lucide-react";
|
|
25
27
|
import { useTranslations } from "next-intl";
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
.pnp
|
|
4
|
+
.pnp.js
|
|
5
|
+
|
|
6
|
+
# Testing
|
|
7
|
+
coverage/
|
|
8
|
+
*.lcov
|
|
9
|
+
.nyc_output
|
|
10
|
+
|
|
11
|
+
# Production builds
|
|
12
|
+
dist/
|
|
13
|
+
build/
|
|
14
|
+
out/
|
|
15
|
+
.next/
|
|
16
|
+
*.tsbuildinfo
|
|
17
|
+
next-env.d.ts
|
|
18
|
+
|
|
19
|
+
# Logs
|
|
20
|
+
logs
|
|
21
|
+
*.log
|
|
22
|
+
npm-debug.log*
|
|
23
|
+
yarn-debug.log*
|
|
24
|
+
yarn-error.log*
|
|
25
|
+
pnpm-debug.log*
|
|
26
|
+
lerna-debug.log*
|
|
27
|
+
|
|
28
|
+
# Environment variables
|
|
29
|
+
.env
|
|
30
|
+
.env.local
|
|
31
|
+
.env.development.local
|
|
32
|
+
.env.test.local
|
|
33
|
+
.env.production.local
|
|
34
|
+
.env*.local
|
|
35
|
+
|
|
36
|
+
# IDE
|
|
37
|
+
.vscode/*
|
|
38
|
+
!.vscode/settings.json
|
|
39
|
+
!.vscode/tasks.json
|
|
40
|
+
!.vscode/launch.json
|
|
41
|
+
!.vscode/extensions.json
|
|
42
|
+
.idea/
|
|
43
|
+
*.swp
|
|
44
|
+
*.swo
|
|
45
|
+
*~
|
|
46
|
+
.DS_Store
|
|
47
|
+
|
|
48
|
+
# Turborepo
|
|
49
|
+
.turbo/
|
|
50
|
+
|
|
51
|
+
# Vercel
|
|
52
|
+
.vercel
|
|
53
|
+
|
|
54
|
+
# Playwright
|
|
55
|
+
playwright-report/
|
|
56
|
+
playwright/.cache/
|
|
57
|
+
playwright/.auth/
|
|
58
|
+
test-results/
|
|
59
|
+
|
|
60
|
+
# Debug
|
|
61
|
+
debug/
|
|
62
|
+
.vscode-test
|
|
63
|
+
|
|
64
|
+
# Misc
|
|
65
|
+
*.pem
|
|
66
|
+
.cache
|
|
67
|
+
.parcel-cache
|
|
68
|
+
.nuxt
|
|
69
|
+
.cache/
|
|
70
|
+
.vuepress/dist
|
|
71
|
+
.temp
|
|
72
|
+
.docusaurus
|
|
73
|
+
|
|
74
|
+
# Lock files (keep only pnpm-lock.yaml)
|
|
75
|
+
package-lock.json
|
|
76
|
+
yarn.lock
|
|
77
|
+
|
|
78
|
+
# Backup files
|
|
79
|
+
api-git-backup*.tar.gz
|
|
80
|
+
.env-backup/
|
|
81
|
+
|
|
82
|
+
# OS files
|
|
83
|
+
Thumbs.db
|
|
84
|
+
.DS_Store
|
|
85
|
+
|
|
86
|
+
# Temporary files
|
|
87
|
+
tmp/
|
|
88
|
+
temp/
|
|
89
|
+
|
|
90
|
+
# REST test files
|
|
91
|
+
REST.http
|
package/template/npmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
link-workspace-packages=true
|
package/template/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "{{name}}",
|
|
3
3
|
"version": "0.1.0",
|
|
4
4
|
"private": true,
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=22.0.0",
|
|
8
8
|
"pnpm": ">=10.0.0"
|
|
@@ -29,7 +29,9 @@
|
|
|
29
29
|
"structure": "bash scripts/import-structure.sh",
|
|
30
30
|
"prepare": "husky",
|
|
31
31
|
"preinstall": "npx only-allow pnpm",
|
|
32
|
-
"neo4jsonapi-migrate": "node ./packages/nestjs-neo4jsonapi/dist/tools/migrate-entity/index.js"
|
|
32
|
+
"neo4jsonapi-migrate": "node ./packages/nestjs-neo4jsonapi/dist/tools/migrate-entity/index.js",
|
|
33
|
+
"generate-module": "node ./packages/nestjs-neo4jsonapi/dist/scripts/generate-module/index.js",
|
|
34
|
+
"generate-web-module": "node ./packages/nextjs-jsonapi/dist/scripts/generate-web-module/index.js"
|
|
33
35
|
},
|
|
34
36
|
"dependencies": {
|
|
35
37
|
"dotenv-cli": "^11.0.0",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Replaces workspace:* dependencies with pinned npm versions
|
|
4
|
+
* for production Docker builds.
|
|
5
|
+
*/
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
const path = require('path');
|
|
8
|
+
|
|
9
|
+
const versionsFile = path.join(__dirname, '..', 'versions.production.json');
|
|
10
|
+
const versions = JSON.parse(fs.readFileSync(versionsFile, 'utf8'));
|
|
11
|
+
|
|
12
|
+
const packageFiles = [
|
|
13
|
+
'apps/api/package.json',
|
|
14
|
+
'apps/web/package.json',
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
for (const file of packageFiles) {
|
|
18
|
+
const filePath = path.join(__dirname, '..', file);
|
|
19
|
+
if (!fs.existsSync(filePath)) continue;
|
|
20
|
+
|
|
21
|
+
const pkg = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
22
|
+
let modified = false;
|
|
23
|
+
|
|
24
|
+
for (const [dep, version] of Object.entries(versions)) {
|
|
25
|
+
if (pkg.dependencies?.[dep] === 'workspace:*') {
|
|
26
|
+
pkg.dependencies[dep] = version;
|
|
27
|
+
modified = true;
|
|
28
|
+
console.log(`${file}: ${dep} → ${version}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (modified) {
|
|
33
|
+
fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2) + '\n');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
console.log('Production versions applied.');
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"typescript.tsdk": "node_modules/typescript/lib",
|
|
3
|
-
"typescript.enablePromptUseWorkspaceTsdk": true,
|
|
4
|
-
"typescript.preferences.includePackageJsonAutoImports": "on",
|
|
5
|
-
"i18n-ally.localesPaths": [
|
|
6
|
-
"apps/web/messages",
|
|
7
|
-
"apps/api/src/i18n"
|
|
8
|
-
],
|
|
9
|
-
"i18n-ally.sourceLanguage": "en",
|
|
10
|
-
"i18n-ally.displayLanguage": "en",
|
|
11
|
-
"i18n-ally.enabledFrameworks": [
|
|
12
|
-
"next-intl",
|
|
13
|
-
"i18next"
|
|
14
|
-
],
|
|
15
|
-
"i18n-ally.keystyle": "nested"
|
|
16
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|