Initial commit with translated description

This commit is contained in:
2026-03-29 10:21:57 +08:00
commit 87279e170c
11 changed files with 2625 additions and 0 deletions

154
scripts/init-nextjs.sh Normal file
View File

@@ -0,0 +1,154 @@
#!/bin/bash
# Initialize a Next.js + TypeScript + Tailwind + shadcn/ui project
# Usage: bash scripts/init-nextjs.sh <project-name>
set -e
PROJECT_NAME="${1:-my-site}"
# Check Node version
NODE_VERSION=$(node -v 2>/dev/null | cut -d'v' -f2 | cut -d'.' -f1)
if [ -z "$NODE_VERSION" ] || [ "$NODE_VERSION" -lt 18 ]; then
echo "❌ Error: Node.js 18+ is required. Current: $(node -v 2>/dev/null || echo 'not installed')"
exit 1
fi
echo "🚀 Creating Next.js project: $PROJECT_NAME"
# Create Next.js project with all options
npx create-next-app@latest "$PROJECT_NAME" \
--typescript \
--tailwind \
--eslint \
--app \
--src-dir \
--import-alias "@/*"
cd "$PROJECT_NAME"
# Create .nvmrc for Node version
echo "18" > .nvmrc
echo "📦 Installing additional dependencies..."
# Install animation library
npm install framer-motion
# Install shadcn/ui
echo "📦 Initializing shadcn/ui..."
npx shadcn@latest init -y -d
# Install common components
echo "📦 Installing common components..."
npx shadcn@latest add button badge card accordion dialog navigation-menu tabs sheet separator avatar alert -y || {
echo "⚠️ Warning: Some shadcn components may not have installed. Run 'npx shadcn@latest add [name]' manually."
}
# Install lucide icons
npm install lucide-react
# Create config directory
mkdir -p src/config
# Create site config
cat > src/config/site.ts << 'EOF'
export const siteConfig = {
name: "My Site",
tagline: "Build something amazing",
description: "A modern website built with Next.js, Tailwind, and shadcn/ui",
url: "https://mysite.com",
nav: {
links: [
{ label: "Features", href: "#features" },
{ label: "Pricing", href: "#pricing" },
{ label: "FAQ", href: "#faq" },
],
cta: { label: "Get Started", href: "/signup" },
},
// Add more sections as needed
}
export type SiteConfig = typeof siteConfig
EOF
# Update globals.css with custom animations
cat >> src/app/globals.css << 'EOF'
/* Custom animations */
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slide-up {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in {
animation: fade-in 0.5s ease-out;
}
.animate-slide-up {
animation: slide-up 0.5s ease-out;
}
/* Staggered animations */
.stagger-1 { animation-delay: 0.1s; }
.stagger-2 { animation-delay: 0.2s; }
.stagger-3 { animation-delay: 0.3s; }
.stagger-4 { animation-delay: 0.4s; }
.stagger-5 { animation-delay: 0.5s; }
EOF
# Create a basic page with animation example
cat > src/app/page.tsx << 'EOF'
import { Button } from "@/components/ui/button"
import { siteConfig } from "@/config/site"
export default function Home() {
return (
<main className="flex min-h-screen flex-col items-center justify-center p-24">
<h1 className="text-5xl font-bold mb-4 animate-slide-up">
{siteConfig.name}
</h1>
<p className="text-xl text-muted-foreground mb-8 animate-slide-up stagger-1">
{siteConfig.tagline}
</p>
<Button size="lg" className="animate-slide-up stagger-2">
Get Started
</Button>
</main>
)
}
EOF
echo ""
echo "✅ Next.js project created successfully!"
echo ""
echo "Installed:"
echo " ✓ Next.js 14+ with App Router"
echo " ✓ TypeScript + Tailwind CSS"
echo " ✓ shadcn/ui with 10 components"
echo " ✓ Framer Motion for animations"
echo " ✓ Site config pattern"
echo ""
echo "Next steps:"
echo " cd $PROJECT_NAME"
echo " npm run dev"
echo ""
echo "Add more components:"
echo " npx shadcn@latest add [component-name]"
echo " npx shadcn@latest add --all # Install all components"
echo ""
echo "Deploy to Vercel:"
echo " vercel"
echo ""