From 7254bdceced7e74001e9ded0c5532a095544cc13 Mon Sep 17 00:00:00 2001 From: andthezhang Date: Sun, 17 Mar 2024 13:16:59 -0700 Subject: [PATCH] init --- .env | 1 + bun.lockb | Bin 0 -> 194737 bytes drizzle.config.ts | 11 ++ kirimase.config.json | 16 ++ package.json | 29 +++- src/app/(app)/dashboard/page.tsx | 10 ++ src/app/(app)/layout.tsx | 15 ++ src/app/globals.css | 91 +++++++--- src/app/page.tsx | 282 +++++++++++++++++++------------ src/components/Navbar.tsx | 43 +++++ src/components/Sidebar.tsx | 16 ++ src/components/SidebarItems.tsx | 90 ++++++++++ src/config/nav.ts | 13 ++ src/lib/db/index.ts | 6 + src/lib/db/migrate.ts | 36 ++++ src/lib/env.mjs | 24 +++ src/lib/utils.ts | 2 + tailwind.config.ts | 35 ++++ tsconfig.json | 27 ++- 19 files changed, 605 insertions(+), 142 deletions(-) create mode 100644 .env create mode 100755 bun.lockb create mode 100644 drizzle.config.ts create mode 100644 kirimase.config.json create mode 100644 src/app/(app)/dashboard/page.tsx create mode 100644 src/app/(app)/layout.tsx create mode 100644 src/components/Navbar.tsx create mode 100644 src/components/Sidebar.tsx create mode 100644 src/components/SidebarItems.tsx create mode 100644 src/config/nav.ts create mode 100644 src/lib/db/index.ts create mode 100644 src/lib/db/migrate.ts create mode 100644 src/lib/env.mjs create mode 100644 src/lib/utils.ts diff --git a/.env b/.env new file mode 100644 index 0000000..498ab17 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +DATABASE_URL=postgres://postgres:postgres@localhost:5432/{DB_NAME} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..6172667a8113b3de1662cf15febb1622f0572947 GIT binary patch literal 194737 zcmeGF30%$F_dkvwIZ0B{q$p`pny7>*O)4eLDW%dp&vQZ|vl61nETKdi%w(1f5lIMT zh!Qd-_0;T0P;04}wVaPMHhzz|t3uF&H)($B& zyd_r|@bq+pYg%%?MTfOa2Wl}GZGF0d(Vqo>VG30*Z>AKw>w_4Kl%#N?3G{+E_dp%{LHL_NhI(rN(asVIV*!Pr?gNdOpJ1q? z-qT7#0}e867=g7;7AkfgH!94eHR96k|yS142nDrsNNx zj(NQSh;}bavGg|q;&?<4XJG);aU7V^tUP@IIr>wj@HNPhuRDUJ-;7mS%WJoG;_)NCpGCo>C8p`ML^-`3>-l4v!CG zFor9!{G?HK&qE#CVa@qQdovjEAjdjchdxlp`IP7x8Uo=mMnE0oasfp9=agCYEGb^F z3QHb=lLU$r)Nwu;LOYI+7Ns|e;=fU4+4G9>^oHri@Ka;)3jr~XEe$|iq|_JJUGzDGYa-gAD_Ueh|}N$<22V|&41$0Gb|DIaqj@nDF1GL zJ1kC|4-u>?qj)Se-u}2c7>wwMkiZzQ72&TIlNjL}eM_5VFCoS^40q}aP{;Xk7!dvK zr4aN3!(t{dc7r|4FVrK#!$TNrppJP@qx>XLXa%-#-TT7+7#71|9G%3<-vJ84bXj#D z3PXJ3!mtAlP{;Uve0?L-0;3s|ppN_bHsE2t{<*FXOlH|x2kp2{!vSH+rUXT+bx$S8 zON3`sw67<~u|G2aG5$dRu<$5f24gzZaU5}wJwu`y(+pX4zrZjbwb%$oHPli60)-KH z3xypEFfcSQhH=4&)vgD2Fzy+~tazdVL!&(X7!0yc@l9d1hlhECSD61%o)Hl+a|6Qy ze4_$mq65SHLIV8*Vi=%@{$Oc#Pl!AdR^2beGbYB@hoKIBFb}@bu`z)VuWxi@tZ!5z zqt=w=*Ec#M$`?Eg13g?%HfF5;czTCNVS)ugj(Lio%94Mb$QnPNaPOF?z%XAQU$0o4 zI-xLEu)xd;2?o4n&dMLGZ#9U;-!q6cUt^;J)q+4bA~r11JKV=N&w^!d1t4rqDNn&Z zOzD)1fUsqz6aWsxx+UyMfZL&t>pK$=^H(~Z755%MjMEDy5~3p@&daxeI9>^$kMqI> z5bd_KmaBOE6_7B|qTA^0Nx+=r;%u{pPu_czs-1;|b?6 zH8>gtM9pNi7do@-jF`pB<9g7?aeo1IQNRQ@R-6YwAL9*xI_A#_5aY3;+8=;E`db8i zA;2S`F8~+{bsU!&6i%Vql>vu>TnG?u4JqFs4)psSc<8qc5bLlnM)~^tCOm{X`U{MP zy~;C@Q4MwM=S4sq*Bn61$1*^SZ!RE?r#B$lnF)w`#(=1&3W#w@QSDn`E@QlWP{;UR zKs*@7Eeg*9qTNhDoL7l};(*b

e)Zxc{>5S9vfW&`D?sAHTfC`<%I`@w+d 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�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 literal 0 HcmV?d00001 diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 0000000..2175e39 --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,11 @@ +import type { Config } from "drizzle-kit"; +import { env } from "@/lib/env.mjs"; + +export default { + schema: "./src/lib/db/schema", + out: "./src/lib/db/migrations", + driver: "pg", + dbCredentials: { + connectionString: env.DATABASE_URL, + } +} satisfies Config; \ No newline at end of file diff --git a/kirimase.config.json b/kirimase.config.json new file mode 100644 index 0000000..5f3a8c0 --- /dev/null +++ b/kirimase.config.json @@ -0,0 +1,16 @@ +{ + "hasSrc": true, + "packages": [ + "drizzle" + ], + "preferredPackageManager": "bun", + "t3": false, + "alias": "@", + "analytics": true, + "rootPath": "src/", + "componentLib": null, + "driver": "pg", + "provider": "postgresjs", + "orm": "drizzle", + "auth": null +} \ No newline at end of file diff --git a/package.json b/package.json index 233f80e..dcfa8fd 100644 --- a/package.json +++ b/package.json @@ -6,22 +6,39 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "next lint", + "db:generate": "drizzle-kit generate:pg", + "db:migrate": "tsx src/lib/db/migrate.ts", + "db:drop": "drizzle-kit drop", + "db:pull": "drizzle-kit introspect:pg", + "db:studio": "drizzle-kit studio", + "db:check": "drizzle-kit check:pg" }, "dependencies": { + "@t3-oss/env-nextjs": "^0.9.2", + "drizzle-orm": "^0.30.2", + "drizzle-zod": "^0.5.1", + "lucide-react": "^0.358.0", + "nanoid": "^5.0.6", + "next": "14.1.3", + "postgres": "^3.4.3", "react": "^18", "react-dom": "^18", - "next": "14.1.3" + "zod": "^3.22.4" }, "devDependencies": { - "typescript": "^5", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "autoprefixer": "^10.0.1", + "dotenv": "^16.4.5", + "drizzle-kit": "^0.20.14", + "eslint": "^8", + "eslint-config-next": "14.1.3", + "pg": "^8.11.3", "postcss": "^8", "tailwindcss": "^3.3.0", - "eslint": "^8", - "eslint-config-next": "14.1.3" + "tsx": "^4.7.1", + "typescript": "^5" } -} +} \ No newline at end of file diff --git a/src/app/(app)/dashboard/page.tsx b/src/app/(app)/dashboard/page.tsx new file mode 100644 index 0000000..13149b0 --- /dev/null +++ b/src/app/(app)/dashboard/page.tsx @@ -0,0 +1,10 @@ +export default function Home() { + return ( +

+

Home

+

+ Wow, that was easy. Now it's your turn. Building something cool! +

+
+ ); +} \ No newline at end of file diff --git a/src/app/(app)/layout.tsx b/src/app/(app)/layout.tsx new file mode 100644 index 0000000..3593884 --- /dev/null +++ b/src/app/(app)/layout.tsx @@ -0,0 +1,15 @@ +import Navbar from "@/components/Navbar"; +import Sidebar from "@/components/Sidebar"; +export default async function AppLayout({ + children, +}: { + children: React.ReactNode; +}) { + return (
+ +
+ +{children} +
+
) +} \ No newline at end of file diff --git a/src/app/globals.css b/src/app/globals.css index 875c01e..77d3522 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,33 +1,76 @@ @tailwind base; @tailwind components; @tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; -:root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; -} + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; } } - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} - -@layer utilities { - .text-balance { - text-wrap: balance; + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; } } diff --git a/src/app/page.tsx b/src/app/page.tsx index b81507d..0a69b41 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,113 +1,183 @@ -import Image from "next/image"; +/** + * v0 by Vercel. + * @see https://v0.dev/t/PmwTvNfrVgf + * Documentation: https://v0.dev/docs#integrating-generated-code-into-your-nextjs-app + */ +import Link from "next/link"; -export default function Home() { +export default function LandingPage() { return ( -
-
-

- Get started by editing  - src/app/page.tsx -

- -
- -
- Next.js Logo -
- -
- -

- Docs{" "} - - -> - -

-

- Find in-depth information about Next.js features and API. -

-
- - -

- Learn{" "} - - -> - -

-

- Learn about Next.js in an interactive course with quizzes! -

-
+ Features + + + Sign In + + + +
+
+
+
+
+
+
+

+ The complete platform
+ for building the Web +

+

+ Give your team the toolkit to stop configuring and start + innovating. Securely build, deploy, and scale the best web + experiences. +

+
+
+ + Get Started + + + Contact Sales + +
+
+
+
+
+
+
+
+
+
+ Key Features +
+

+ Faster iteration. More innovation. +

+

+ The platform for rapid progress. Let your team focus on + shipping features instead of managing infrastructure with + automated CI/CD. +

+
+
+
+
+
+
    +
  • +
    +

    Collaboration

    +

    + Make collaboration seamless with built-in code review + tools. +

    +
    +
  • +
  • +
    +

    Automation

    +

    + Automate your workflow with continuous integration. +

    +
    +
  • +
  • +
    +

    Scale

    +

    + Deploy to the cloud with a single click and scale with + ease. +

    +
    +
  • +
+
+
+
+
- -

- Templates{" "} - - -> - -

-

- Explore starter templates for Next.js. -

-
+
+
+
+
+

+ Sign Up for Updates +

+

+ Stay updated with the latest product news and updates. +

+
+
+
+ + +
+
+
+
+
+
+
+

+ © 2024 Acme Inc. All rights reserved. +

+ +
+
+ ); +} - -

- Deploy{" "} - - -> - -

-

- Instantly deploy your Next.js site to a shareable URL with Vercel. -

-
- -
+function MountainIcon(props: any) { + return ( + + + ); } diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx new file mode 100644 index 0000000..59f9bed --- /dev/null +++ b/src/components/Navbar.tsx @@ -0,0 +1,43 @@ +"use client"; + +import Link from "next/link"; +import { useState } from "react"; +import { usePathname } from "next/navigation"; + +import { AlignRight } from "lucide-react"; +import { defaultLinks } from "@/config/nav"; + +export default function Navbar() { + const [open, setOpen] = useState(false); + const pathname = usePathname(); + return ( +
+ + {open ? ( +
+
    + {defaultLinks.map((link) => ( +
  • setOpen(false)} className=""> + + {link.title} + +
  • + ))} +
+
+ ) : null} +
+ ); +} diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx new file mode 100644 index 0000000..df3925a --- /dev/null +++ b/src/components/Sidebar.tsx @@ -0,0 +1,16 @@ +import SidebarItems from "./SidebarItems"; + +const Sidebar = () => { + return ( + + ); +}; + +export default Sidebar; diff --git a/src/components/SidebarItems.tsx b/src/components/SidebarItems.tsx new file mode 100644 index 0000000..7f70867 --- /dev/null +++ b/src/components/SidebarItems.tsx @@ -0,0 +1,90 @@ +"use client"; + +import Link from "next/link"; +import { usePathname } from "next/navigation"; + +import { LucideIcon } from "lucide-react"; + + +import { defaultLinks, additionalLinks } from "@/config/nav"; + +export interface SidebarLink { + title: string; + href: string; + icon: LucideIcon; +} + +const SidebarItems = () => { + return ( + <> + + {additionalLinks.length > 0 + ? additionalLinks.map((l) => ( + + )) + : null} + + ); +}; +export default SidebarItems; + +const SidebarLinkGroup = ({ + links, + title, + border, +}: { + links: SidebarLink[]; + title?: string; + border?: boolean; +}) => { + const fullPathname = usePathname(); + const pathname = "/" + fullPathname.split("/")[1]; + + return ( +
+ {title ? ( +

+ {title} +

+ ) : null} +
    + {links.map((link) => ( +
  • + +
  • + ))} +
+
+ ); +}; +const SidebarLink = ({ + link, + active, +}: { + link: SidebarLink; + active: boolean; +}) => { + return ( + +
+
+ + {link.title} +
+ + ); +}; diff --git a/src/config/nav.ts b/src/config/nav.ts new file mode 100644 index 0000000..9127c48 --- /dev/null +++ b/src/config/nav.ts @@ -0,0 +1,13 @@ +import { SidebarLink } from "@/components/SidebarItems"; +import { Cog, Globe, HomeIcon } from "lucide-react"; + +type AdditionalLinks = { + title: string; + links: SidebarLink[]; +}; + +export const defaultLinks: SidebarLink[] = [ + { href: "/dashboard", title: "Home", icon: HomeIcon }, +]; + +export const additionalLinks: AdditionalLinks[] = []; diff --git a/src/lib/db/index.ts b/src/lib/db/index.ts new file mode 100644 index 0000000..d0c05ff --- /dev/null +++ b/src/lib/db/index.ts @@ -0,0 +1,6 @@ +import { drizzle } from "drizzle-orm/postgres-js"; +import postgres from "postgres"; +import { env } from "@/lib/env.mjs"; + +export const client = postgres(env.DATABASE_URL); +export const db = drizzle(client); \ No newline at end of file diff --git a/src/lib/db/migrate.ts b/src/lib/db/migrate.ts new file mode 100644 index 0000000..03b3bb6 --- /dev/null +++ b/src/lib/db/migrate.ts @@ -0,0 +1,36 @@ +import { env } from "@/lib/env.mjs"; + +import { drizzle } from "drizzle-orm/postgres-js"; +import { migrate } from "drizzle-orm/postgres-js/migrator"; +import postgres from "postgres"; + + +const runMigrate = async () => { + if (!env.DATABASE_URL) { + throw new Error("DATABASE_URL is not defined"); + } + + +const connection = postgres(env.DATABASE_URL, { max: 1 }); + +const db = drizzle(connection); + + + console.log("⏳ Running migrations..."); + + const start = Date.now(); + + await migrate(db, { migrationsFolder: 'src/lib/db/migrations' }); + + const end = Date.now(); + + console.log("✅ Migrations completed in", end - start, "ms"); + + process.exit(0); +}; + +runMigrate().catch((err) => { + console.error("❌ Migration failed"); + console.error(err); + process.exit(1); +}); \ No newline at end of file diff --git a/src/lib/env.mjs b/src/lib/env.mjs new file mode 100644 index 0000000..6a0a110 --- /dev/null +++ b/src/lib/env.mjs @@ -0,0 +1,24 @@ +import { createEnv } from "@t3-oss/env-nextjs"; +import { z } from "zod"; + +export const env = createEnv({ + server: { + NODE_ENV: z + .enum(["development", "test", "production"]) + .default("development"), + DATABASE_URL: z.string().min(1), + + }, + client: { + // NEXT_PUBLIC_PUBLISHABLE_KEY: z.string().min(1), + }, + // If you're using Next.js < 13.4.4, you'll need to specify the runtimeEnv manually + // runtimeEnv: { + // DATABASE_URL: process.env.DATABASE_URL, + // NEXT_PUBLIC_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_PUBLISHABLE_KEY, + // }, + // For Next.js >= 13.4.4, you only need to destructure client variables: + experimental__runtimeEnv: { + // NEXT_PUBLIC_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_PUBLISHABLE_KEY, + }, +}); diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..d9c327c --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,2 @@ +import { customAlphabet } from "nanoid"; +export const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789"); \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts index e9a0944..4767d43 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -8,6 +8,41 @@ const config: Config = { ], theme: { extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, backgroundImage: { "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", "gradient-conic": diff --git a/tsconfig.json b/tsconfig.json index 7b28589..c5a7b07 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -18,9 +22,20 @@ } ], "paths": { - "@/*": ["./src/*"] - } + "@/*": [ + "./src/*" + ] + }, + "target": "esnext", + "baseUrl": "./" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file