diff --git a/apps/web/components.json b/apps/web/components.json new file mode 100644 index 0000000..2a951fc --- /dev/null +++ b/apps/web/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/global.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/apps/web/package.json b/apps/web/package.json index 6f52db1..3356647 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -11,18 +11,21 @@ }, "dependencies": { "@heroicons/react": "^2.2.0", + "@radix-ui/react-scroll-area": "^1.2.5", "@xyflow/react": "^12.5.5", "babel-plugin-react-compiler": "^19.0.0-beta-e993439-20250405", - "canvas-confetti": "^1.9.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "fumadocs-core": "15.1.2", "fumadocs-mdx": "11.5.7", "fumadocs-ui": "15.1.2", - "lucide-react": "^0.485.0", + "lucide-react": "^0.501.0", "motion": "^12.7.4", "next": "15.2.3", "react": "^19.1.0", "react-dom": "^19.1.0", - "react-tweet": "^3.2.2" + "react-tweet": "^3.2.2", + "tailwind-merge": "^3.2.0" }, "devDependencies": { "@tailwindcss/postcss": "^4.1.3", diff --git a/apps/web/public/icon/orpc.svg b/apps/web/public/icon/orpc.svg new file mode 100644 index 0000000..74e4801 --- /dev/null +++ b/apps/web/public/icon/orpc.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/web/src/app/(home)/_components/BackgroundGradients.tsx b/apps/web/src/app/(home)/_components/BackgroundGradients.tsx deleted file mode 100644 index 9393b44..0000000 --- a/apps/web/src/app/(home)/_components/BackgroundGradients.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; - -const BackgroundGradients = () => { - return ( -
-
-
-
-
-
-
-
- ); -}; - -export default BackgroundGradients; diff --git a/apps/web/src/app/(home)/_components/CenterLines.tsx b/apps/web/src/app/(home)/_components/CenterLines.tsx deleted file mode 100644 index aead95a..0000000 --- a/apps/web/src/app/(home)/_components/CenterLines.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; - -const CenterLines = () => { - return ( - <> -
-
- - ); -}; - -export default CenterLines; diff --git a/apps/web/src/app/(home)/_components/CodeContainer.tsx b/apps/web/src/app/(home)/_components/CodeContainer.tsx index 8299283..523bcbe 100644 --- a/apps/web/src/app/(home)/_components/CodeContainer.tsx +++ b/apps/web/src/app/(home)/_components/CodeContainer.tsx @@ -1,4 +1,5 @@ "use client"; +import { cn } from "@/lib/utils"; import { Check, ClipboardCopy, Terminal } from "lucide-react"; import { motion } from "motion/react"; import { useEffect, useRef, useState } from "react"; @@ -51,28 +52,26 @@ const CodeContainer = () => { return (
-
-
+
+
-
- Terminal -
+
Terminal
-
+
- $ + $
- - {commands[selectedPM]} - + {commands[selectedPM]} {step === 0 && ( )}
-
{command}
-
-
- ); -} diff --git a/apps/web/src/app/(home)/_components/CustomizableSection.tsx b/apps/web/src/app/(home)/_components/CustomizableSection.tsx index 2d94c14..2ab0de7 100644 --- a/apps/web/src/app/(home)/_components/CustomizableSection.tsx +++ b/apps/web/src/app/(home)/_components/CustomizableSection.tsx @@ -1,3 +1,4 @@ +import { cn } from "@/lib/utils"; import { Code, Sliders, Terminal, TerminalSquare } from "lucide-react"; import { motion } from "motion/react"; import StackArchitect from "./StackArchitech"; @@ -14,11 +15,10 @@ export default function CustomizableSection() { className="relative" >

- + Your Stack, Your Choice

-
-

+

Configure your ideal TypeScript environment with all the options you need

-
-
+
+
Runtime Options --runtime
-
+
Framework Options --framework
-
+
Database Options --database
-
+
Addon Options @@ -68,12 +68,12 @@ export default function CustomizableSection() { transition={{ duration: 0.4, delay: 0.3 }} className="flex flex-wrap justify-center gap-2 pt-2 sm:gap-3" > - Bun or Node - Hono or Elysia - SQLite or PostgreSQL - Drizzle or Prisma - Authentication - Optional Addons + Bun or Node + Hono or Elysia + SQLite or PostgreSQL + Drizzle or Prisma + Authentication + Optional Addons
@@ -84,7 +84,6 @@ export default function CustomizableSection() { transition={{ duration: 0.6, delay: 0.2 }} className="relative" > -
@@ -95,26 +94,10 @@ function Badge({ children, color, }: { children: React.ReactNode; color: string }) { - const colorMap = { - amber: - "bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-300 border-amber-200 dark:border-amber-800/30", - blue: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300 border-blue-200 dark:border-blue-800/30", - indigo: - "bg-indigo-100 text-indigo-800 dark:bg-indigo-900/30 dark:text-indigo-300 border-indigo-200 dark:border-indigo-800/30", - cyan: "bg-cyan-100 text-cyan-800 dark:bg-cyan-900/30 dark:text-cyan-300 border-cyan-200 dark:border-cyan-800/30", - green: - "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300 border-green-200 dark:border-green-800/30", - violet: - "bg-violet-100 text-violet-800 dark:bg-violet-900/30 dark:text-violet-300 border-violet-200 dark:border-violet-800/30", - }; + const baseClasses = + "rounded-full border px-2.5 py-1 font-medium text-xs shadow-sm"; - return ( - - {children} - - ); + const colorClasses = `bg-[--color-${color}]/10 text-[--color-${color}] border-[--color-${color}]/30`; + + return {children}; } diff --git a/apps/web/src/app/(home)/_components/FeaturedSection.tsx b/apps/web/src/app/(home)/_components/FeaturedSection.tsx deleted file mode 100644 index 8aeffa4..0000000 --- a/apps/web/src/app/(home)/_components/FeaturedSection.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { ArrowRight, Code2, Shield, Zap } from "lucide-react"; -import React from "react"; - -const Featured = () => { - return ( - <> -
-
- {[ - { - icon: Shield, - title: "Type-Safe by Default", - description: - "End-to-end type safety from database to frontend. Catch errors before they happen.", - }, - { - icon: Zap, - title: "Lightning Fast", - description: - "Built on Bun's lightning-fast runtime with optimal configurations for performance.", - }, - { - icon: Code2, - title: "Developer Experience", - description: - "Modern tooling and intuitive APIs make development a breeze.", - }, - ].map((feature) => ( -
-
- -

- {feature.title} -

-

- {feature.description} -

-
- ))} -
-
- -
-
-
-

- Write Better Code, Faster -

-

- Leverage the power of TypeScript with our carefully selected tools - and frameworks. -

-
- -
-
- {[ - { - title: "Type-Safe API Calls", - description: - "No more guessing API shapes. tRPC ensures type safety across your stack.", - }, - { - title: "Database Type Safety", - description: - "Drizzle ORM provides type-safe database queries with great DX.", - }, - { - title: "Modern Authentication", - description: - "Secure authentication with Better-Auth, built for modern web apps.", - }, - ].map((item) => ( -
- -
-

- {item.title} -

-

- {item.description} -

-
-
- ))} -
- -
-
-
-
-									{`// Type-safe API endpoint
-export const userRouter = router({
-		get: publicProcedure
-				.input(z.string())
-				.query(async ({ input }) => {
-						const user = await db
-								.select()
-								.from(users)
-								.where(eq(users.id, input));
-
-						return user;
-				})
-});`}
-								
-
-
-
-
-
- -
-

- Ready to Build Something Amazing? -

-

- Start your next project with Better-T Stack and experience the future - of web development. -

- -
- - ); -}; - -export default Featured; diff --git a/apps/web/src/app/(home)/_components/Footer.tsx b/apps/web/src/app/(home)/_components/Footer.tsx index 8f028e5..4cba18e 100644 --- a/apps/web/src/app/(home)/_components/Footer.tsx +++ b/apps/web/src/app/(home)/_components/Footer.tsx @@ -3,14 +3,14 @@ import Link from "next/link"; const Footer = () => { return ( -