From b0f4815ebabd2603a2091c4007f3265fd7edc4b8 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Wed, 18 Jun 2025 20:27:53 +0800 Subject: [PATCH] feat: setup Next.js homepage with app router, components, and Tailwind config --- ui/homepage/.gitignore | 18 + ui/homepage/Makefile | 34 + ui/homepage/app/globals.css | 12 + ui/homepage/app/layout.tsx | 0 ui/homepage/app/page.tsx | 21 + ui/homepage/components/DownloadSection.tsx | 57 ++ ui/homepage/components/Features.tsx | 97 ++ ui/homepage/components/Footer.tsx | 27 + ui/homepage/components/Hero.tsx | 25 + ui/homepage/components/LanguageToggle.tsx | 18 + ui/homepage/components/NavBar.tsx | 23 + ui/homepage/components/OpenSource.tsx | 83 ++ ui/homepage/i18n/LanguageProvider.tsx | 0 ui/homepage/i18n/translations.ts | 0 ui/homepage/next-env.d.ts | 5 + ui/homepage/next.config.js | 11 + ui/homepage/package.json | 26 + ui/homepage/postcss.config.js | 7 + ui/homepage/tailwind.config.js | 14 + ui/homepage/tsconfig.json | 49 + ui/homepage/yarn.lock | 982 +++++++++++++++++++++ 21 files changed, 1509 insertions(+) create mode 100644 ui/homepage/.gitignore create mode 100644 ui/homepage/Makefile create mode 100644 ui/homepage/app/globals.css create mode 100644 ui/homepage/app/layout.tsx create mode 100644 ui/homepage/app/page.tsx create mode 100644 ui/homepage/components/DownloadSection.tsx create mode 100644 ui/homepage/components/Features.tsx create mode 100644 ui/homepage/components/Footer.tsx create mode 100644 ui/homepage/components/Hero.tsx create mode 100644 ui/homepage/components/LanguageToggle.tsx create mode 100644 ui/homepage/components/NavBar.tsx create mode 100644 ui/homepage/components/OpenSource.tsx create mode 100644 ui/homepage/i18n/LanguageProvider.tsx create mode 100644 ui/homepage/i18n/translations.ts create mode 100644 ui/homepage/next-env.d.ts create mode 100644 ui/homepage/next.config.js create mode 100644 ui/homepage/package.json create mode 100644 ui/homepage/postcss.config.js create mode 100644 ui/homepage/tailwind.config.js create mode 100644 ui/homepage/tsconfig.json create mode 100644 ui/homepage/yarn.lock diff --git a/ui/homepage/.gitignore b/ui/homepage/.gitignore new file mode 100644 index 0000000..a1c88e9 --- /dev/null +++ b/ui/homepage/.gitignore @@ -0,0 +1,18 @@ + +# Build output +.next/ +out/ + +# Dependencies +node_modules/ + +# Logs +*.log + +# OS junk +.DS_Store + +# Editor junk +.vscode/ +.idea/ + diff --git a/ui/homepage/Makefile b/ui/homepage/Makefile new file mode 100644 index 0000000..41ebb2a --- /dev/null +++ b/ui/homepage/Makefile @@ -0,0 +1,34 @@ +# Makefile for src/homepage (Next.js static site) + +SHELL := /bin/bash +NODE_VERSION := $(shell node -v 2>/dev/null) +YARN := $(shell command -v yarn 2>/dev/null) + +.PHONY: init dev build export clean info + +init: + @echo "🔧 Installing dependencies for homepage..." + @if [ -z "$(YARN)" ]; then \ + echo "⚠️ Yarn not found. Installing via Homebrew..."; \ + brew install yarn; \ + fi + yarn install + +dev: + @echo "🚀 Starting Next.js dev server (homepage)..." + yarn next dev -p 3001 + +build: + @echo "🔨 Building homepage..." + yarn next build + +export: + @echo "📦 Exporting homepage static site to ./out ..." + yarn next build && yarn next export + +clean: + @echo "🧹 Cleaning .next and out directories..." + rm -rf .next out + +info: + @echo "🧾 Node.js version: $(NODE_VERSION)" diff --git a/ui/homepage/app/globals.css b/ui/homepage/app/globals.css new file mode 100644 index 0000000..ab47fbb --- /dev/null +++ b/ui/homepage/app/globals.css @@ -0,0 +1,12 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --font-geist-sans: 'Geist', sans-serif; + --font-geist-mono: 'Geist Mono', monospace; +} + +body { + font-family: var(--font-geist-sans); +} diff --git a/ui/homepage/app/layout.tsx b/ui/homepage/app/layout.tsx new file mode 100644 index 0000000..e69de29 diff --git a/ui/homepage/app/page.tsx b/ui/homepage/app/page.tsx new file mode 100644 index 0000000..b969f22 --- /dev/null +++ b/ui/homepage/app/page.tsx @@ -0,0 +1,21 @@ +import Hero from '@components/Hero' +import Features from '@components/Features' +import OpenSource from '@components/OpenSource' +import DownloadSection from '@components/DownloadSection' +import Footer from '@components/Footer' +import NavBar from '@components/NavBar' + +export default function Page() { + return ( + <> + +
+ + + + +
+