diff --git a/README.md b/README.md index e215bc4..fa0b112 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,250 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +# RustFS Console -## Getting Started +A modern, responsive web management console for RustFS distributed file system, built with Next.js 16 (App Router) + React 19 + TypeScript + Tailwind CSS v4 + shadcn/ui. -First, run the development server: +## โœจ Features -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev +### Core Features +- **File Browser** - Visual file/object management interface with upload, download, delete operations +- **Access Keys Management** - Create and manage service account access keys +- **Policy Management** - Configure and manage IAM policies for fine-grained access control +- **User Management** - Create, edit, enable/disable, and delete user accounts +- **User Groups Management** - Create and manage user groups to simplify permission assignment + +### Advanced Features +- **Import/Export** - Import and export system configurations +- **Performance Monitoring** - Real-time system status, server information, and performance metrics +- **Tiered Storage** - Configure and manage tiered storage policies +- **Event Destinations** - Configure event destinations for event notifications +- **SSE Settings** - Server-side encryption configuration +- **License Management** - View and manage system license information + +## ๐Ÿ› ๏ธ Tech Stack + +### Core Framework +- **[Next.js 16](https://nextjs.org/)** - React full-stack framework with App Router +- **[React 19](https://react.dev/)** - UI library +- **[TypeScript 5](https://www.typescriptlang.org/)** - Type safety + +### UI & Styling +- **[Tailwind CSS v4](https://tailwindcss.com/)** - Utility-first CSS framework +- **[shadcn/ui](https://ui.shadcn.com/)** - High-quality component library based on Radix UI +- **[Remix Icon](https://remixicon.com/)** - Icon library +- **[next-themes](https://github.com/pacocoursey/next-themes)** - Theme switching support + +### Data Management +- **[TanStack Table](https://tanstack.com/table)** - Powerful table component +- **[TanStack Virtual](https://tanstack.com/virtual)** - Virtual scrolling support +- **[AWS SDK v3](https://aws.amazon.com/sdk-for-javascript/)** - S3 client integration + +### Other Tools +- **[i18next](https://www.i18next.com/)** - Internationalization support (12 languages) +- **[Recharts](https://recharts.org/)** - Chart visualization +- **[Sonner](https://sonner.emilkowal.ski/)** - Toast notifications +- **[date-fns](https://date-fns.org/)** / **[dayjs](https://day.js.org/)** - Date handling + +## ๐Ÿ“ Project Structure + +``` +console/ +โ”œโ”€โ”€ app/ # Next.js App Router pages and layouts +โ”‚ โ”œโ”€โ”€ (auth)/ # Authentication pages +โ”‚ โ””โ”€โ”€ (dashboard)/ # Dashboard pages +โ”œโ”€โ”€ components/ # React components +โ”‚ โ”œโ”€โ”€ ui/ # shadcn/ui base components +โ”‚ โ””โ”€โ”€ ... # Business components +โ”œโ”€โ”€ hooks/ # Custom React Hooks +โ”œโ”€โ”€ contexts/ # React Context providers +โ”œโ”€โ”€ lib/ # Utility functions and library code +โ”‚ โ””โ”€โ”€ feedback/ # Global feedback APIs (toast, dialog) +โ”œโ”€โ”€ types/ # TypeScript type definitions +โ”œโ”€โ”€ i18n/ # Internationalization resource files +โ”‚ โ””โ”€โ”€ locales/ # Multi-language files (12 languages) +โ”œโ”€โ”€ config/ # Configuration files +โ”œโ”€โ”€ public/ # Static assets +โ””โ”€โ”€ tests/ # Test files (mirror source structure) ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +## ๐Ÿš€ Quick Start -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. +### Prerequisites -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. +- **Node.js** >= 20 +- **pnpm** >= 10.19.0 (recommended to use the version specified in the project) +- **Docker** - For running RustFS service -## Learn More +### Start RustFS Service -To learn more about Next.js, take a look at the following resources: +The RustFS service must be started before development. Run it using Docker: -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +```bash +# Create data directory +mkdir rustfs-data -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! +# Run RustFS service +docker run -p 9000:9000 -p 9001:9001 -v ./rustfs-data:/data rustfs/rustfs:1.0.0-alpha.82 +``` -## Deploy on Vercel +The service will start on the following ports: +- **9000** - API port +- **9001** - Console port -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +### Install Dependencies -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +```bash +pnpm install +``` + +### Development Mode + +**Note**: Before starting the development server, ensure the RustFS service is running (see "Start RustFS Service" section above). + +Start the development server (with hot reload): + +```bash +pnpm dev +``` + +Visit [http://localhost:3000](http://localhost:3000) to view the application. + +### Build for Production + +```bash +pnpm build +``` + +### Run Production Build + +```bash +pnpm start +``` + +## ๐Ÿ’ป Development Guide + +### Code Quality Checks + +Before committing code, ensure all checks pass: + +#### 1. Lockfile Sync Check +```bash +pnpm install --frozen-lockfile +``` +Ensure `pnpm-lock.yaml` is in sync with `package.json`. After modifying `package.json`, you must run `pnpm install` and commit the updated lockfile. + +#### 2. TypeScript Type Check +```bash +pnpm type-check +# or +pnpm build +``` + +#### 3. ESLint Check +```bash +pnpm lint +``` + +#### 4. Code Formatting Check +```bash +pnpm format:check +``` + +#### 5. Auto-fix Formatting Issues +```bash +pnpm lint:fix +# or +pnpm format +``` + +### Naming Conventions + +- **Component files**: Use kebab-case (e.g., `bucket-selector.tsx`) +- **Component names**: Use PascalCase (e.g., ``) +- **Directory structure**: Group by feature/domain, use plural forms (e.g., `buckets/`, `users/`) +- **File naming**: Don't repeat directory name in filename (e.g., `buckets/info.tsx` instead of `buckets/bucket-info.tsx`) + +### UI Component Usage + +- **Declarative UI**: Use base components from `@/components/ui/*` +- **Imperative feedback**: Use `@/lib/feedback/message` and `@/lib/feedback/dialog` for global toast and dialog prompts + +### Testing + +When tests are configured: +- Test files should be placed in `tests/` directory, mirroring source structure +- Use `*.spec.ts` or `*.test.ts` naming +- Run tests: `pnpm test:run` + +## ๐ŸŒ Internationalization + +The project supports multiple languages. Currently supported languages: + +- ไธญๆ–‡๏ผˆ็ฎ€ไฝ“๏ผ‰(Chinese Simplified) +- English (US) +- Deutsch (DE) +- Espaรฑol (ES) +- Franรงais (FR) +- Bahasa Indonesia (ID) +- Italiano (IT) +- ๆ—ฅๆœฌ่ชž (JP) +- ํ•œ๊ตญ์–ด (KR) +- Portuguรชs (BR) +- ะ ัƒััะบะธะน (RU) +- Tรผrkรงe (TR) + +Language files are located in the `i18n/locales/` directory. + +## ๐Ÿ“ฆ Build & Deployment + +### Environment Variables + +Configure necessary environment variables according to your deployment environment (e.g., API endpoints, authentication configuration). + +### Build Configuration + +The project uses Next.js default build configuration. Custom configuration can be done via `next.config.ts`. + +### Deployment + +The project can be deployed to any platform that supports Next.js: + +- **Vercel** (Recommended) - Zero-config deployment +- **Docker** - Using official Next.js Docker image +- **Self-hosted** - Run `pnpm build && pnpm start` + +## ๐Ÿค Contributing + +### Commit Guidelines + +- Use conventional commit messages (Conventional Commits) +- Ensure all code quality checks pass before committing +- Each PR should include a clear description and related issue links + +### Code Review + +- Keep PR scope focused; coordinate large refactors in advance +- Commit messages and PR titles must be in English +- UI-related work should include screenshots + +## ๐Ÿ“„ License + +See `public/legal/LICENSE` for license information. + +## ๐Ÿ”— Resources + +- [Next.js Documentation](https://nextjs.org/docs) +- [React Documentation](https://react.dev/) +- [Tailwind CSS Documentation](https://tailwindcss.com/docs) +- [shadcn/ui Documentation](https://ui.shadcn.com/) +- [TypeScript Documentation](https://www.typescriptlang.org/docs/) + +## ๐Ÿ“ Development Notes + +- Follow the guidelines in `AGENTS.md` +- Keep code simple, readable, and maintainable +- Prefer using existing project tools and patterns +- Consider internationalization support when adding new features +- Ensure all changes pass type checking + +--- + +**Note**: This is a private project for internal use only. diff --git a/package.json b/package.json index a466776..0d5bf32 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { - "name": "console-new", + "name": "rustfs/console", "version": "0.1.0", - "private": true, "packageManager": "pnpm@10.19.0", "scripts": { "dev": "next dev",