# GoodGo Platform - Web Client > **EN**: Enterprise-grade web client for GoodGo microservices platform > **VI**: Web client cấp doanh nghiệp cho nền tảng microservices GoodGo ## Features / Tính Năng - ✅ **Brand Identity System** - Complete logo suite, favicons, and illustrations - ✅ **Design System** - Professional design tokens with brand colors, gradients, and glassmorphism - ✅ **UI Component Library** - Enhanced components with brand variants (Button, EmptyState, Loading States, Logo) - ✅ **Dark/Light Theme** - Automatic theme switching with system preference - ✅ **Internationalization** - Multi-language support (i18n ready) - ✅ **TypeScript** - Full type safety - ✅ **Tailwind CSS 4** - Modern utility-first styling - ✅ **Next.js 14** - App Router with RSC - ✅ **Accessibility** - WCAG 2.1 AA compliant - ✅ **PWA Ready** - Progressive Web App support ## Tech Stack - **Framework**: Next.js 14 (App Router) - **Language**: TypeScript 5+ - **Styling**: Tailwind CSS 4 (CSS-first) - **State Management**: Zustand - **API Client**: `@goodgo/http-client` - **Testing**: Vitest + Playwright - **Component Development**: Storybook ##Development / Phát Triển ```bash # Install dependencies / Cài đặt dependencies pnpm install # Start dev server / Khởi động dev server pnpm dev # → http://localhost:3000 # Start Storybook / Khởi động Storybook pnpm storybook # → http://localhost:6006 # Build for production / Build cho production pnpm build # Type checking / Kiểm tra kiểu pnpm typecheck # Lint / Kiểm tra lỗi pnpm lint ``` ## Environment Variables / Biến Môi Trường Create `.env.local` file: ```bash # API URL NEXT_PUBLIC_API_URL=http://localhost/api/v1 ``` ## Brand Assets / Tài Sản Thương Hiệu Brand assets are located in `/public/brand-assets/`: - **Logos**: `/brand-assets/logo/` (full, icon, wordmark variants) - **Icons**: `/brand-assets/icons/` (favicon) - **Illustrations**: `/brand-assets/illustrations/` (empty state, error state) Usage in components: ```tsx import { BrandLogo } from '@/components/ui/brand-logo'; import { BRAND } from '@/lib/brand-constants'; // Logo component // Brand constants const primaryColor = BRAND.colors.primary.hex; // #3B82F6 ``` ## UI Components / Components Giao Diện ### BrandLogo ```tsx import { BrandLogo, BrandLogoLink } from '@/components/ui/brand-logo'; ``` ### Button with Brand Variants ```tsx import { Button } from '@/components/ui/button'; ``` ### Empty State ```tsx import { EmptyState, ErrorState } from '@/components/ui/empty-state'; ``` ### Loading States ```tsx import { BrandSpinner, Skeleton, SkeletonCard, LoadingOverlay, ProgressBar } from '@/components/ui/loading-states'; ``` ## Design System / Hệ Thống Thiết Kế ### Brand Colors ```css /* Primary (Blue) - Tech & Trust */ --brand-primary: #3B82F6; /* Secondary (Purple) - Innovation */ --brand-secondary: #8B5CF6; /* Accent (Cyan) - Energy */ --brand-accent: #06B6D4; ``` ### Tailwind Utilities ```tsx // Brand colors
// Glassmorphism
// Brand shadows
``` ## Project Structure / Cấu Trúc Dự Án ``` apps/web-client/ ├── public/ │ └── brand-assets/ # Brand logos, icons, illustrations ├── src/ │ ├── app/ # Next.js App Router pages │ ├── components/ │ │ └── ui/ # Reusable UI components │ ├── lib/ │ │ └── brand-constants.ts # Brand helper functions │ ├── styles/ │ │ └── theme.css # Design system tokens │ ├── contexts/ # React contexts (Theme, etc.) │ ├── hooks/ # Custom React hooks │ ├── providers/ # Provider components │ └── stores/ # Zustand stores └── tailwind.config.js # Tailwind configuration ``` ## Contributing / Đóng Góp Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) for details. ## License / Giấy Phép Proprietary - GoodGo Platform