create-apppaaaul 2.0.2 → 2.0.3

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 (50) hide show
  1. package/dist/index.js +164 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/templates/nextjs-ts-clean/project/.editorconfig +9 -0
  4. package/dist/templates/nextjs-ts-clean/project/.gitignore +39 -0
  5. package/dist/templates/nextjs-ts-clean/project/.vscode/launch.json +28 -0
  6. package/dist/templates/nextjs-ts-clean/project/.vscode/settings.json +8 -0
  7. package/dist/templates/nextjs-ts-clean/project/README.md +15 -0
  8. package/dist/templates/nextjs-ts-clean/project/eslint.config.mjs +172 -0
  9. package/dist/templates/nextjs-ts-clean/project/next.config.mjs +13 -0
  10. package/dist/templates/nextjs-ts-clean/project/package.json +46 -0
  11. package/dist/templates/nextjs-ts-clean/project/pnpm-lock.yaml +5463 -0
  12. package/dist/templates/nextjs-ts-clean/project/postcss.config.js +6 -0
  13. package/dist/templates/nextjs-ts-clean/project/public/next.svg +1 -0
  14. package/dist/templates/nextjs-ts-clean/project/public/vercel.svg +1 -0
  15. package/dist/templates/nextjs-ts-clean/project/src/app/favicon.ico +0 -0
  16. package/dist/templates/nextjs-ts-clean/project/src/app/globals.css +77 -0
  17. package/dist/templates/nextjs-ts-clean/project/src/app/layout.tsx +26 -0
  18. package/dist/templates/nextjs-ts-clean/project/src/app/page.tsx +5 -0
  19. package/dist/templates/nextjs-ts-clean/project/src/components/ui/button.tsx +49 -0
  20. package/dist/templates/nextjs-ts-clean/project/src/lib/utils.ts +6 -0
  21. package/dist/templates/nextjs-ts-clean/project/tailwind.config.ts +80 -0
  22. package/dist/templates/nextjs-ts-clean/project/tsconfig.json +27 -0
  23. package/dist/templates/nextjs-ts-landing/project/.editorconfig +9 -0
  24. package/dist/templates/nextjs-ts-landing/project/.eslintrc.mjs +172 -0
  25. package/dist/templates/nextjs-ts-landing/project/.gitignore +39 -0
  26. package/dist/templates/nextjs-ts-landing/project/.vscode/launch.json +28 -0
  27. package/dist/templates/nextjs-ts-landing/project/.vscode/settings.json +8 -0
  28. package/dist/templates/nextjs-ts-landing/project/README.md +15 -0
  29. package/dist/templates/nextjs-ts-landing/project/components.json +17 -0
  30. package/dist/templates/nextjs-ts-landing/project/docker-compose.yml +15 -0
  31. package/dist/templates/nextjs-ts-landing/project/drizzle.config.ts +11 -0
  32. package/dist/templates/nextjs-ts-landing/project/next.config.mjs +10 -0
  33. package/dist/templates/nextjs-ts-landing/project/package.json +57 -0
  34. package/dist/templates/nextjs-ts-landing/project/pnpm-lock.yaml +6248 -0
  35. package/dist/templates/nextjs-ts-landing/project/postcss.config.js +6 -0
  36. package/dist/templates/nextjs-ts-landing/project/public/next.svg +1 -0
  37. package/dist/templates/nextjs-ts-landing/project/public/vercel.svg +1 -0
  38. package/dist/templates/nextjs-ts-landing/project/src/app/api/auth/[...nextauth]/route.ts +3 -0
  39. package/dist/templates/nextjs-ts-landing/project/src/app/favicon.ico +0 -0
  40. package/dist/templates/nextjs-ts-landing/project/src/app/globals.css +47 -0
  41. package/dist/templates/nextjs-ts-landing/project/src/app/layout.tsx +20 -0
  42. package/dist/templates/nextjs-ts-landing/project/src/app/page.tsx +5 -0
  43. package/dist/templates/nextjs-ts-landing/project/src/auth.ts +79 -0
  44. package/dist/templates/nextjs-ts-landing/project/src/components/ui/button.tsx +49 -0
  45. package/dist/templates/nextjs-ts-landing/project/src/db/index.ts +25 -0
  46. package/dist/templates/nextjs-ts-landing/project/src/db/schema.ts +93 -0
  47. package/dist/templates/nextjs-ts-landing/project/src/lib/utils.ts +6 -0
  48. package/dist/templates/nextjs-ts-landing/project/tailwind.config.ts +80 -0
  49. package/dist/templates/nextjs-ts-landing/project/tsconfig.json +27 -0
  50. package/package.json +43 -43
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ };
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>
@@ -0,0 +1,77 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ @layer base {
6
+ :root {
7
+ --background: 0 0% 100%;
8
+ --foreground: 240 10% 3.9%;
9
+
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 240 10% 3.9%;
12
+
13
+ --popover: 0 0% 100%;
14
+ --popover-foreground: 240 10% 3.9%;
15
+
16
+ --primary: 240 5.9% 10%;
17
+ --primary-foreground: 0 0% 98%;
18
+
19
+ --secondary: 240 4.8% 95.9%;
20
+ --secondary-foreground: 240 5.9% 10%;
21
+
22
+ --muted: 240 4.8% 95.9%;
23
+ --muted-foreground: 240 3.8% 46.1%;
24
+
25
+ --accent: 240 4.8% 95.9%;
26
+ --accent-foreground: 240 5.9% 10%;
27
+
28
+ --destructive: 0 84.2% 60.2%;
29
+ --destructive-foreground: 0 0% 98%;
30
+
31
+ --border: 240 5.9% 90%;
32
+ --input: 240 5.9% 90%;
33
+ --ring: 240 10% 3.9%;
34
+
35
+ --radius: 0.5rem;
36
+ }
37
+
38
+ @media (prefers-color-scheme: dark) {
39
+ :root {
40
+ --background: 240 10% 3.9%;
41
+ --foreground: 0 0% 98%;
42
+
43
+ --card: 240 10% 3.9%;
44
+ --card-foreground: 0 0% 98%;
45
+
46
+ --popover: 240 10% 3.9%;
47
+ --popover-foreground: 0 0% 98%;
48
+
49
+ --primary: 0 0% 98%;
50
+ --primary-foreground: 240 5.9% 10%;
51
+
52
+ --secondary: 240 3.7% 15.9%;
53
+ --secondary-foreground: 0 0% 98%;
54
+
55
+ --muted: 240 3.7% 15.9%;
56
+ --muted-foreground: 240 5% 64.9%;
57
+
58
+ --accent: 240 3.7% 15.9%;
59
+ --accent-foreground: 0 0% 98%;
60
+
61
+ --destructive: 0 62.8% 30.6%;
62
+ --destructive-foreground: 0 0% 98%;
63
+
64
+ --border: 240 3.7% 15.9%;
65
+ --input: 240 3.7% 15.9%;
66
+ --ring: 240 4.9% 83.9%;
67
+ }
68
+ }
69
+
70
+ * {
71
+ @apply border-border;
72
+ }
73
+
74
+ body {
75
+ @apply bg-background text-foreground;
76
+ }
77
+ }
@@ -0,0 +1,26 @@
1
+ import type {Metadata} from "next";
2
+
3
+ import Link from "next/link";
4
+
5
+ import "./globals.css";
6
+
7
+ export const metadata: Metadata = {
8
+ title: "{{name}}",
9
+ description: "Generated by apppaaaul",
10
+ };
11
+
12
+ export default function RootLayout({children}: {children: React.ReactNode}) {
13
+ return (
14
+ <html lang="en">
15
+ <body className="container m-auto grid min-h-screen grid-rows-[auto,1fr,auto] bg-background px-4 font-sans antialiased">
16
+ <header className="text-xl font-bold leading-[4rem]">
17
+ <Link href="/">{{name}}</Link>
18
+ </header>
19
+ <main className="py-8">{children}</main>
20
+ <footer className="text-center leading-[4rem] opacity-70">
21
+ © {new Date().getFullYear()} {{name}}
22
+ </footer>
23
+ </body>
24
+ </html>
25
+ );
26
+ }
@@ -0,0 +1,5 @@
1
+ import {Button} from "@/components/ui/button";
2
+
3
+ export default function HomePage() {
4
+ return <Button>👋</Button>;
5
+ }
@@ -0,0 +1,49 @@
1
+ import * as React from "react";
2
+ import {Slot} from "@radix-ui/react-slot";
3
+ import {cva, type VariantProps} from "class-variance-authority";
4
+
5
+ import {cn} from "@/lib/utils";
6
+
7
+ const buttonVariants = cva(
8
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
13
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
14
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
15
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
16
+ ghost: "hover:bg-accent hover:text-accent-foreground",
17
+ link: "text-primary underline-offset-4 hover:underline",
18
+ },
19
+ size: {
20
+ default: "h-10 px-4 py-2",
21
+ sm: "h-9 rounded-md px-3",
22
+ lg: "h-11 rounded-md px-8",
23
+ icon: "h-10 w-10",
24
+ },
25
+ },
26
+ defaultVariants: {
27
+ variant: "default",
28
+ size: "default",
29
+ },
30
+ },
31
+ );
32
+
33
+ export interface ButtonProps
34
+ extends React.ButtonHTMLAttributes<HTMLButtonElement>,
35
+ VariantProps<typeof buttonVariants> {
36
+ asChild?: boolean;
37
+ }
38
+
39
+ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
40
+ ({className, variant, size, asChild = false, ...props}, ref) => {
41
+ const Comp = asChild ? Slot : "button";
42
+
43
+ return <Comp ref={ref} className={cn(buttonVariants({variant, size, className}))} {...props} />;
44
+ },
45
+ );
46
+
47
+ Button.displayName = "Button";
48
+
49
+ export {Button, buttonVariants};
@@ -0,0 +1,6 @@
1
+ import {type ClassValue, clsx} from "clsx";
2
+ import {twMerge} from "tailwind-merge";
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs));
6
+ }
@@ -0,0 +1,80 @@
1
+ import type {Config} from "tailwindcss";
2
+
3
+ const config = {
4
+ darkMode: ["class"],
5
+ content: [
6
+ "./pages/**/*.{ts,tsx}",
7
+ "./components/**/*.{ts,tsx}",
8
+ "./app/**/*.{ts,tsx}",
9
+ "./src/**/*.{ts,tsx}",
10
+ ],
11
+ prefix: "",
12
+ theme: {
13
+ container: {
14
+ center: true,
15
+ padding: "2rem",
16
+ screens: {
17
+ "2xl": "1400px",
18
+ },
19
+ },
20
+ extend: {
21
+ colors: {
22
+ border: "hsl(var(--border))",
23
+ input: "hsl(var(--input))",
24
+ ring: "hsl(var(--ring))",
25
+ background: "hsl(var(--background))",
26
+ foreground: "hsl(var(--foreground))",
27
+ primary: {
28
+ DEFAULT: "hsl(var(--primary))",
29
+ foreground: "hsl(var(--primary-foreground))",
30
+ },
31
+ secondary: {
32
+ DEFAULT: "hsl(var(--secondary))",
33
+ foreground: "hsl(var(--secondary-foreground))",
34
+ },
35
+ destructive: {
36
+ DEFAULT: "hsl(var(--destructive))",
37
+ foreground: "hsl(var(--destructive-foreground))",
38
+ },
39
+ muted: {
40
+ DEFAULT: "hsl(var(--muted))",
41
+ foreground: "hsl(var(--muted-foreground))",
42
+ },
43
+ accent: {
44
+ DEFAULT: "hsl(var(--accent))",
45
+ foreground: "hsl(var(--accent-foreground))",
46
+ },
47
+ popover: {
48
+ DEFAULT: "hsl(var(--popover))",
49
+ foreground: "hsl(var(--popover-foreground))",
50
+ },
51
+ card: {
52
+ DEFAULT: "hsl(var(--card))",
53
+ foreground: "hsl(var(--card-foreground))",
54
+ },
55
+ },
56
+ borderRadius: {
57
+ lg: "var(--radius)",
58
+ md: "calc(var(--radius) - 2px)",
59
+ sm: "calc(var(--radius) - 4px)",
60
+ },
61
+ keyframes: {
62
+ "accordion-down": {
63
+ from: {height: "0"},
64
+ to: {height: "var(--radix-accordion-content-height)"},
65
+ },
66
+ "accordion-up": {
67
+ from: {height: "var(--radix-accordion-content-height)"},
68
+ to: {height: "0"},
69
+ },
70
+ },
71
+ animation: {
72
+ "accordion-down": "accordion-down 0.2s ease-out",
73
+ "accordion-up": "accordion-up 0.2s ease-out",
74
+ },
75
+ },
76
+ },
77
+ plugins: [require("tailwindcss-animate")],
78
+ } satisfies Config;
79
+
80
+ export default config;
@@ -0,0 +1,27 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es6",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "paths": {
22
+ "@/*": ["./src/*"]
23
+ }
24
+ },
25
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26
+ "exclude": ["node_modules"]
27
+ }
@@ -0,0 +1,9 @@
1
+ root = true
2
+
3
+ [*]
4
+ insert_final_newline = true
5
+ charset = utf-8
6
+ indent_style = space
7
+ indent_size = 2
8
+ trim_trailing_whitespace = true
9
+ max_line_length = 80
@@ -0,0 +1,172 @@
1
+ import globals from "globals";
2
+ import tseslint from "typescript-eslint";
3
+ import eslintPluginReact from "eslint-plugin-react";
4
+ import eslintPluginReactHooks from "eslint-plugin-react-hooks";
5
+ import {fixupPluginRules} from "@eslint/compat";
6
+ import eslintPluginPrettier from "eslint-plugin-prettier/recommended";
7
+ import eslintPluginImport from "eslint-plugin-import";
8
+ import eslintPluginReactCompiler from "eslint-plugin-react-compiler";
9
+ import eslintPluginNext from "@next/eslint-plugin-next";
10
+ import eslintPluginJsxA11y from "eslint-plugin-jsx-a11y";
11
+ import vercelStyleGuideTypescript from "@vercel/style-guide/eslint/typescript";
12
+ import vercelStyleGuideReact from "@vercel/style-guide/eslint/rules/react";
13
+ import vercelStyleGuideNext from "@vercel/style-guide/eslint/next";
14
+
15
+ export default [
16
+ // Ignores configuration
17
+ {
18
+ ignores: ["node_modules", ".next", "out", "coverage", ".idea"],
19
+ },
20
+ // General configuration
21
+ {
22
+ rules: {
23
+ "padding-line-between-statements": [
24
+ "warn",
25
+ {blankLine: "always", prev: "*", next: ["return", "export"]},
26
+ {blankLine: "always", prev: ["const", "let", "var"], next: "*"},
27
+ {blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]},
28
+ ],
29
+ "no-console": "warn",
30
+ },
31
+ },
32
+ // React configuration
33
+ {
34
+ plugins: {
35
+ react: fixupPluginRules(eslintPluginReact),
36
+ "react-hooks": fixupPluginRules(eslintPluginReactHooks),
37
+ "react-compiler": fixupPluginRules(eslintPluginReactCompiler),
38
+ "jsx-a11y": fixupPluginRules(eslintPluginJsxA11y),
39
+ },
40
+ languageOptions: {
41
+ parserOptions: {
42
+ ecmaFeatures: {
43
+ jsx: true,
44
+ },
45
+ },
46
+ globals: {
47
+ ...globals.browser,
48
+ ...globals.serviceworker,
49
+ },
50
+ },
51
+ settings: {
52
+ react: {
53
+ version: "detect",
54
+ },
55
+ },
56
+ rules: {
57
+ ...eslintPluginReact.configs.recommended.rules,
58
+ ...eslintPluginJsxA11y.configs.recommended.rules,
59
+ ...eslintPluginReactHooks.configs.recommended.rules,
60
+ ...vercelStyleGuideReact.rules,
61
+ "react/prop-types": "off",
62
+ "react/jsx-uses-react": "off",
63
+ "react/react-in-jsx-scope": "off",
64
+ "react/self-closing-comp": "warn",
65
+ "react/jsx-sort-props": [
66
+ "warn",
67
+ {
68
+ callbacksLast: true,
69
+ shorthandFirst: true,
70
+ noSortAlphabetically: false,
71
+ reservedFirst: true,
72
+ },
73
+ ],
74
+ "react-compiler/react-compiler": "error",
75
+ "jsx-a11y/no-static-element-interactions": "off",
76
+ "jsx-a11y/click-events-have-key-events": "off",
77
+ },
78
+ },
79
+ // TypeScript configuration
80
+ ...[
81
+ ...tseslint.configs.recommended,
82
+ {
83
+ rules: {
84
+ ...vercelStyleGuideTypescript.rules,
85
+ "@typescript-eslint/no-non-null-assertion": "off",
86
+ "@typescript-eslint/no-shadow": "off",
87
+ "@typescript-eslint/explicit-function-return-type": "off",
88
+ "@typescript-eslint/require-await": "off",
89
+ "@typescript-eslint/no-floating-promises": "off",
90
+ "@typescript-eslint/no-confusing-void-expression": "off",
91
+ "@typescript-eslint/no-unused-vars": [
92
+ "warn",
93
+ {
94
+ args: "after-used",
95
+ ignoreRestSiblings: false,
96
+ argsIgnorePattern: "^_.*?$",
97
+ },
98
+ ],
99
+ },
100
+ },
101
+ ],
102
+ // Prettier configuration
103
+ ...[
104
+ eslintPluginPrettier,
105
+ {
106
+ rules: {
107
+ "prettier/prettier": [
108
+ "warn",
109
+ {
110
+ printWidth: 100,
111
+ trailingComma: "all",
112
+ tabWidth: 2,
113
+ semi: true,
114
+ singleQuote: false,
115
+ bracketSpacing: true,
116
+ arrowParens: "always",
117
+ endOfLine: "auto",
118
+ plugins: ["prettier-plugin-tailwindcss"],
119
+ },
120
+ ],
121
+ },
122
+ },
123
+ ],
124
+ // Import configuration
125
+ {
126
+ plugins: {
127
+ import: fixupPluginRules(eslintPluginImport),
128
+ },
129
+ rules: {
130
+ "import/no-default-export": "off",
131
+ "import/order": [
132
+ "warn",
133
+ {
134
+ groups: [
135
+ "type",
136
+ "builtin",
137
+ "object",
138
+ "external",
139
+ "internal",
140
+ "parent",
141
+ "sibling",
142
+ "index",
143
+ ],
144
+ pathGroups: [
145
+ {
146
+ pattern: "~/**",
147
+ group: "external",
148
+ position: "after",
149
+ },
150
+ ],
151
+ "newlines-between": "always",
152
+ },
153
+ ],
154
+ },
155
+ },
156
+ // Next configuration
157
+ {
158
+ plugins: {
159
+ next: fixupPluginRules(eslintPluginNext),
160
+ },
161
+ languageOptions: {
162
+ globals: {
163
+ ...globals.node,
164
+ ...globals.browser,
165
+ },
166
+ },
167
+ rules: {
168
+ ...vercelStyleGuideNext.rules,
169
+ "@next/next/no-img-element": "off",
170
+ },
171
+ },
172
+ ];
@@ -0,0 +1,39 @@
1
+ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
+
3
+ # dependencies
4
+ /node_modules
5
+ /.pnp
6
+ .pnp.js
7
+
8
+ # testing
9
+ /coverage
10
+
11
+ # next.js
12
+ /.next/
13
+ /out/
14
+
15
+ # production
16
+ /build
17
+
18
+ # misc
19
+ .DS_Store
20
+ *.pem
21
+
22
+ # debug
23
+ npm-debug.log*
24
+ yarn-debug.log*
25
+ yarn-error.log*
26
+
27
+ # local env files
28
+ .env*.local
29
+ .env
30
+
31
+ # vercel
32
+ .vercel
33
+
34
+ # typescript
35
+ *.tsbuildinfo
36
+ next-env.d.ts
37
+
38
+ # docker
39
+ docker-comppose.yml
@@ -0,0 +1,28 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Next.js: debug server-side",
6
+ "type": "node-terminal",
7
+ "request": "launch",
8
+ "command": "pnpm dev"
9
+ },
10
+ {
11
+ "name": "Next.js: debug client-side",
12
+ "type": "chrome",
13
+ "request": "launch",
14
+ "url": "http://localhost:3000"
15
+ },
16
+ {
17
+ "name": "Next.js: debug full stack",
18
+ "type": "node-terminal",
19
+ "request": "launch",
20
+ "command": "pnpm dev",
21
+ "serverReadyAction": {
22
+ "pattern": "started server on .+, url: (https?://.+)",
23
+ "uriFormat": "%s",
24
+ "action": "debugWithChrome"
25
+ }
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "editor.formatOnSave": false,
3
+ "typescript.tsdk": "node_modules\\typescript\\lib",
4
+ "typescript.enablePromptUseWorkspaceTsdk": true,
5
+ "editor.codeActionsOnSave": {
6
+ "source.fixAll.eslint": true
7
+ }
8
+ }
@@ -0,0 +1,15 @@
1
+ ## Getting Started with {{name}}
2
+
3
+ First, run the development server:
4
+
5
+ ```bash
6
+ npm run dev
7
+ # or
8
+ yarn dev
9
+ # or
10
+ pnpm dev
11
+ ```
12
+
13
+ Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
14
+
15
+ You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "default",
4
+ "rsc": true,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "tailwind.config.ts",
8
+ "css": "src/app/globals.css",
9
+ "baseColor": "zinc",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/lib/utils"
16
+ }
17
+ }
@@ -0,0 +1,15 @@
1
+ services:
2
+ paaauldev-db:
3
+ image: postgres
4
+ restart: always
5
+ container_name: db
6
+ ports:
7
+ - 5432:5432
8
+ environment:
9
+ POSTGRES_PASSWORD: 1234
10
+ PGDATA: /data/postgres
11
+ volumes:
12
+ - postgres:/data/postgres
13
+
14
+ volumes:
15
+ postgres:
@@ -0,0 +1,11 @@
1
+ import { config } from "dotenv";
2
+ import { defineConfig } from "drizzle-kit";
3
+ config({ path: ".env" });
4
+
5
+ export default defineConfig({
6
+ schema: "./src/db/schema.ts",
7
+ dialect: "postgresql",
8
+ dbCredentials: {
9
+ url: process.env.DATABASE_URL!,
10
+ },
11
+ });
@@ -0,0 +1,10 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ logging: {
4
+ fetches: {
5
+ fullUrl: true,
6
+ },
7
+ },
8
+ };
9
+
10
+ export default nextConfig;