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.
- 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
- 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
- Next.js 16 - React full-stack framework with App Router
- React 19 - UI library
- TypeScript 5 - Type safety
- Tailwind CSS v4 - Utility-first CSS framework
- shadcn/ui - High-quality component library based on Radix UI
- Remix Icon - Icon library
- next-themes - Theme switching support
- TanStack Table - Powerful table component
- TanStack Virtual - Virtual scrolling support
- AWS SDK v3 - S3 client integration
- i18next - Internationalization support (12 languages)
- Recharts - Chart visualization
- Sonner - Toast notifications
- date-fns / dayjs - Date handling
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)
- Node.js >= 20
- pnpm >= 10.19.0 (recommended to use the version specified in the project)
- Docker - For running RustFS service
The RustFS service must be started before development. Run it using Docker:
# Create data directory
mkdir rustfs-data
# Run RustFS service
docker run -p 9000:9000 -p 9001:9001 -v ./rustfs-data:/data rustfs/rustfs:1.0.0-alpha.82The service will start on the following ports:
- 9000 - API port
- 9001 - Console port
pnpm installNote: Before starting the development server, ensure the RustFS service is running (see "Start RustFS Service" section above).
Start the development server (with hot reload):
pnpm devVisit http://localhost:3000 to view the application.
pnpm buildpnpm startBefore committing code, ensure all checks pass:
pnpm install --frozen-lockfileEnsure pnpm-lock.yaml is in sync with package.json. After modifying package.json, you must run pnpm install and commit the updated lockfile.
pnpm type-check
# or
pnpm buildpnpm lintpnpm format:checkpnpm lint:fix
# or
pnpm format- Component files: Use kebab-case (e.g.,
bucket-selector.tsx) - Component names: Use PascalCase (e.g.,
<BucketSelector />) - 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.tsxinstead ofbuckets/bucket-info.tsx)
- Declarative UI: Use base components from
@/components/ui/* - Imperative feedback: Use
@/lib/feedback/messageand@/lib/feedback/dialogfor global toast and dialog prompts
When tests are configured:
- Test files should be placed in
tests/directory, mirroring source structure - Use
*.spec.tsor*.test.tsnaming - Run tests:
pnpm test:run
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.
Configure necessary environment variables according to your deployment environment (e.g., API endpoints, authentication configuration).
The project uses Next.js default build configuration. Custom configuration can be done via next.config.ts.
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
- 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
- Keep PR scope focused; coordinate large refactors in advance
- Commit messages and PR titles must be in English
- UI-related work should include screenshots
Licensed under the Apache License 2.0. See LICENSE for details.
- Next.js Documentation
- React Documentation
- Tailwind CSS Documentation
- shadcn/ui Documentation
- TypeScript Documentation
- 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