Skip to content

Commit 0067075

Browse files
authored
Remove npm legacy errors, created single source of truth for ESlint. updated analytics url. updated script background (#5498)
* Update ScriptAccordion and ScriptItem components for improved styling * Add README.md for Proxmox VE Helper-Scripts Frontend * Remove testing dependencies and related test files from the frontend project * Update analytics URL in siteConfig to point to community-scripts.org * Refactor ESLint configuration to have one source of truth and run "npm lint" to apply new changes * Update lint script in package.json to remove npm * Add 'next' option to ESLint configuration for improved compatibility * Update package dependencies and versions in package.json and package-lock.json * Refactor theme provider import and enhance calendar component for dynamic icon rendering * rename sidebar, alerts and buttons * rename description and interfaces files * rename more files * change folder name * Refactor tooltip logic to improve updateable condition handling * Enhance CommandMenu to prevent duplicate scripts across categories * Remove test step from frontend CI/CD workflow
1 parent d60911a commit 0067075

File tree

91 files changed

+8150
-4144
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+8150
-4144
lines changed

.github/workflows/frontend-cicd.yml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/.eslintrc.json

Lines changed: 0 additions & 5 deletions
This file was deleted.

frontend/.vscode/settings.json

Lines changed: 51 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/README.md

Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
# Proxmox VE Helper-Scripts Frontend
2+
3+
> 🚀 **Modern frontend for the Community-Scripts Proxmox VE Helper-Scripts repository**
4+
5+
A comprehensive, user-friendly interface built with Next.js that provides access to 300+ automation scripts for Proxmox Virtual Environment management. This frontend serves as the official website for the Community-Scripts organization's Proxmox VE Helper-Scripts repository.
6+
7+
![Next.js](https://img.shields.io/badge/Next.js-15.2.4-black?style=flat-square&logo=next.js)
8+
![React](https://img.shields.io/badge/React-19.0.0-blue?style=flat-square&logo=react)
9+
![TypeScript](https://img.shields.io/badge/TypeScript-5.8.2-blue?style=flat-square&logo=typescript)
10+
![Tailwind CSS](https://img.shields.io/badge/Tailwind-3.4.17-06B6D4?style=flat-square&logo=tailwindcss)
11+
![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)
12+
13+
## 🌟 Features
14+
15+
### Core Functionality
16+
17+
- **📜 Script Management**: Browse, search, and filter 300+ Proxmox VE scripts
18+
- **📱 Responsive Design**: Mobile-first approach with modern UI/UX
19+
- **🔍 Advanced Search**: Fuzzy search with category filtering
20+
- **📊 Analytics Integration**: Built-in analytics for usage tracking
21+
- **🌙 Dark/Light Mode**: Theme switching with system preference detection
22+
- **⚡ Performance Optimized**: Static site generation for lightning-fast loading
23+
24+
### Technical Features
25+
26+
- **🎨 Modern UI Components**: Built with Radix UI and shadcn/ui
27+
- **📈 Data Visualization**: Charts and metrics using Chart.js
28+
- **🔄 State Management**: React Query for efficient data fetching
29+
- **📝 Type Safety**: Full TypeScript implementation
30+
- **🚀 Static Export**: Optimized for GitHub Pages deployment
31+
32+
## 🛠️ Tech Stack
33+
34+
### Frontend Framework
35+
36+
- **[Next.js 15.2.4](https://nextjs.org/)** - React framework with App Router
37+
- **[React 19.0.0](https://react.dev/)** - Latest React with concurrent features
38+
- **[TypeScript 5.8.2](https://www.typescriptlang.org/)** - Type-safe JavaScript
39+
40+
### Styling & UI
41+
42+
- **[Tailwind CSS 3.4.17](https://tailwindcss.com/)** - Utility-first CSS framework
43+
- **[Radix UI](https://www.radix-ui.com/)** - Unstyled, accessible UI components
44+
- **[shadcn/ui](https://ui.shadcn.com/)** - Re-usable components built on Radix UI
45+
- **[Framer Motion](https://www.framer.com/motion/)** - Animation library
46+
- **[Lucide React](https://lucide.dev/)** - Icon library
47+
48+
### Data & State Management
49+
50+
- **[TanStack Query 5.71.1](https://tanstack.com/query)** - Powerful data synchronization
51+
- **[Zod 3.24.2](https://zod.dev/)** - TypeScript-first schema validation
52+
- **[nuqs 2.4.1](https://nuqs.47ng.com/)** - Type-safe search params state manager
53+
54+
### Development Tools
55+
56+
- **[Vitest 3.1.1](https://vitest.dev/)** - Fast unit testing framework
57+
- **[React Testing Library](https://testing-library.com/react)** - Simple testing utilities
58+
- **[ESLint](https://eslint.org/)** - Code linting and formatting
59+
- **[Prettier](https://prettier.io/)** - Code formatting
60+
61+
### Additional Libraries
62+
63+
- **[Chart.js](https://www.chartjs.org/)** - Data visualization
64+
- **[Fuse.js](https://fusejs.io/)** - Fuzzy search
65+
- **[date-fns](https://date-fns.org/)** - Date utility library
66+
- **[Next Themes](https://github.com/pacocoursey/next-themes)** - Theme management
67+
68+
## 🚀 Getting Started
69+
70+
### Prerequisites
71+
72+
- **Node.js 18+** (recommend using the latest LTS version)
73+
- **npm**, **yarn**, **pnpm**, or **bun** package manager
74+
- **Git** for version control
75+
76+
### Installation
77+
78+
1. **Clone the repository**
79+
80+
```bash
81+
git clone https://github.com/community-scripts/ProxmoxVE.git
82+
cd ProxmoxVE/frontend
83+
```
84+
85+
2. **Install dependencies**
86+
87+
```bash
88+
# Using npm
89+
npm install
90+
91+
# Using yarn
92+
yarn install
93+
94+
# Using pnpm
95+
pnpm install
96+
97+
# Using bun
98+
bun install
99+
```
100+
101+
3. **Start the development server**
102+
103+
```bash
104+
npm run dev
105+
# or
106+
yarn dev
107+
# or
108+
pnpm dev
109+
# or
110+
bun dev
111+
```
112+
113+
4. **Open your browser**
114+
115+
Navigate to [http://localhost:3000](http://localhost:3000) to see the application running.
116+
117+
### Environment Configuration
118+
119+
The application uses the following environment variables:
120+
121+
- `BASE_PATH`: Set to "ProxmoxVE" for GitHub Pages deployment
122+
- Analytics configuration is handled in `src/config/siteConfig.tsx`
123+
124+
## 🧪 Development
125+
126+
### Available Scripts
127+
128+
```bash
129+
# Development
130+
npm run dev # Start development server with Turbopack
131+
npm run build # Build for production
132+
npm run start # Start production server (after build)
133+
134+
# Code Quality
135+
npm run lint # Run ESLint
136+
npm run typecheck # Run TypeScript type checking
137+
npm run format:write # Format code with Prettier
138+
npm run format:check # Check code formatting
139+
140+
# Deployment
141+
npm run deploy # Build and deploy to GitHub Pages
142+
```
143+
144+
### Development Workflow
145+
146+
1. **Feature Development**
147+
148+
- Create a new branch for your feature
149+
- Follow the established TypeScript and React patterns
150+
- Use the existing component library (shadcn/ui)
151+
- Ensure responsive design principles
152+
153+
2. **Code Standards**
154+
155+
- Follow TypeScript strict mode
156+
- Use functional components with hooks
157+
- Implement proper error boundaries
158+
- Write descriptive variable and function names
159+
- Use early returns for better readability
160+
161+
3. **Styling Guidelines**
162+
163+
- Use Tailwind CSS utility classes
164+
- Follow mobile-first responsive design
165+
- Implement dark/light mode considerations
166+
- Use CSS variables from the design system
167+
168+
4. **Testing**
169+
- Write unit tests for utility functions
170+
- Test React components with React Testing Library
171+
- Ensure accessibility standards are met
172+
- Run tests before committing
173+
174+
### Component Development
175+
176+
The project uses a component-driven development approach:
177+
178+
```typescript
179+
// Example component structure
180+
import { cn } from "@/lib/utils";
181+
import { Button } from "@/components/ui/button";
182+
183+
interface ComponentProps {
184+
title: string;
185+
className?: string;
186+
}
187+
188+
export const Component = ({ title, className }: ComponentProps) => {
189+
return (
190+
<div className={cn("default-classes", className)}>
191+
<Button>{title}</Button>
192+
</div>
193+
);
194+
};
195+
```
196+
197+
### Configuration for Static Export
198+
199+
The application is configured for static export in `next.config.mjs`:
200+
201+
```javascript
202+
const nextConfig = {
203+
output: "export",
204+
basePath: `/ProxmoxVE`,
205+
images: {
206+
unoptimized: true // Required for static export
207+
}
208+
};
209+
```
210+
211+
## 🤝 Contributing
212+
213+
We welcome contributions from the community! Here's how you can help:
214+
215+
### Getting Started
216+
217+
1. **Fork the repository** on GitHub
218+
2. **Clone your fork** locally
219+
3. **Create a new branch** for your feature or bugfix
220+
4. **Make your changes** following our coding standards
221+
5. **Submit a pull request** with a clear description
222+
223+
### Contribution Guidelines
224+
225+
#### Code Style
226+
227+
- Follow the existing TypeScript and React patterns
228+
- Use descriptive variable and function names
229+
- Implement proper error handling
230+
- Write self-documenting code with appropriate comments
231+
232+
#### Component Guidelines
233+
234+
- Use functional components with hooks
235+
- Implement proper TypeScript types
236+
- Follow accessibility best practices
237+
- Ensure responsive design
238+
- Use the existing design system components
239+
240+
#### Pull Request Process
241+
242+
1. Update documentation if needed
243+
2. Update the README if you've added new features
244+
3. Request review from maintainers
245+
246+
### Areas for Contribution
247+
248+
- **🐛 Bug fixes**: Report and fix issues
249+
- **✨ New features**: Enhance functionality
250+
- **📚 Documentation**: Improve guides and examples
251+
- **🎨 UI/UX**: Improve design and user experience
252+
- **♿ Accessibility**: Enhance accessibility features
253+
- **🚀 Performance**: Optimize loading and runtime performance
254+
255+
## 📄 License
256+
257+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
258+
259+
## 🙏 Acknowledgments
260+
261+
- **[tteck](https://github.com/tteck)** - Original creator of the Proxmox VE Helper-Scripts
262+
- **[Community-Scripts Organization](https://github.com/community-scripts)** - Maintaining and expanding the project
263+
- **[Proxmox Community](https://forum.proxmox.com/)** - For continuous feedback and support
264+
- **All Contributors** - Thank you for your valuable contributions!
265+
266+
## 📚 Additional Resources
267+
268+
- **[Proxmox VE Documentation](https://pve.proxmox.com/pve-docs/)**
269+
- **[Community Scripts Repository](https://github.com/community-scripts/ProxmoxVE)**
270+
- **[Discord Community](https://discord.gg/2wvnMDgdnU)**
271+
- **[GitHub Discussions](https://github.com/community-scripts/ProxmoxVE/discussions)**
272+
273+
## 🔗 Links
274+
275+
- **🌐 Live Website**: [https://community-scripts.github.io/ProxmoxVE/](https://community-scripts.github.io/ProxmoxVE/)
276+
- **💬 Discord Server**: [https://discord.gg/2wvnMDgdnU](https://discord.gg/2wvnMDgdnU)
277+
- **📝 Change Log**: [https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md](https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md)
278+
279+
---
280+
281+
**Made with ❤️ by the Community-Scripts team and contributors**

frontend/eslint.config.mjs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import antfu from "@antfu/eslint-config";
2+
3+
export default antfu(
4+
{
5+
type: "app",
6+
typescript: true,
7+
formatters: true,
8+
next: true,
9+
stylistic: {
10+
indent: 2,
11+
semi: true,
12+
quotes: "double",
13+
},
14+
ignores: ["src/components/ui/**", "README.md", "public/json/**"],
15+
},
16+
{
17+
rules: {
18+
"ts/no-redeclare": "off",
19+
"ts/consistent-type-definitions": ["error", "type"],
20+
"no-console": ["warn"],
21+
"antfu/no-top-level-await": ["off"],
22+
"node/prefer-global/process": ["off"],
23+
"node/no-process-env": ["error"],
24+
"perfectionist/sort-imports": [
25+
"error",
26+
{
27+
type: "line-length",
28+
order: "desc",
29+
},
30+
],
31+
32+
"unicorn/filename-case": [
33+
"error",
34+
{
35+
case: "kebabCase",
36+
ignore: ["README.md"],
37+
},
38+
],
39+
},
40+
},
41+
);

0 commit comments

Comments
 (0)