From 9afb1e2d039308ee7318fcb4feebf4ab0a8044af Mon Sep 17 00:00:00 2001 From: Adamu Jethro <45628811+JayWebtech@users.noreply.github.com> Date: Mon, 6 Oct 2025 06:35:09 -0700 Subject: [PATCH] Revert "feat : docs" --- docs/.gitignore | 36 - docs/DOCS_GUIDE.md | 291 ----- docs/README.md | 2 +- docs/next.config.ts | 7 - docs/package-lock.json | 1667 ------------------------- docs/package.json | 2 +- docs/postcss.config.mjs | 5 - docs/public/file.svg | 1 - docs/public/globe.svg | 1 - docs/public/next.svg | 1 - docs/public/vercel.svg | 1 - docs/public/window.svg | 1 - docs/src/app/clients/page.tsx | 254 ---- docs/src/app/commands/page.tsx | 157 --- docs/src/app/configuration/page.tsx | 331 ----- docs/src/app/contributing/page.tsx | 265 ---- docs/src/app/favicon.ico | Bin 25931 -> 0 bytes docs/src/app/getting-started/page.tsx | 228 ---- docs/src/app/globals.css | 93 -- docs/src/app/installation/page.tsx | 179 --- docs/src/app/layout.tsx | 40 - docs/src/app/page.tsx | 144 --- docs/src/app/requirements/page.tsx | 319 ----- docs/src/app/validator/page.tsx | 239 ---- docs/src/components/CodeBlock.tsx | 35 - docs/src/components/Header.tsx | 41 - docs/src/components/Sidebar.tsx | 60 - docs/tailwind.config.ts | 16 - docs/tsconfig.json | 27 - 29 files changed, 2 insertions(+), 4441 deletions(-) delete mode 100644 docs/.gitignore delete mode 100644 docs/DOCS_GUIDE.md delete mode 100644 docs/next.config.ts delete mode 100644 docs/package-lock.json delete mode 100644 docs/postcss.config.mjs delete mode 100644 docs/public/file.svg delete mode 100644 docs/public/globe.svg delete mode 100644 docs/public/next.svg delete mode 100644 docs/public/vercel.svg delete mode 100644 docs/public/window.svg delete mode 100644 docs/src/app/clients/page.tsx delete mode 100644 docs/src/app/commands/page.tsx delete mode 100644 docs/src/app/configuration/page.tsx delete mode 100644 docs/src/app/contributing/page.tsx delete mode 100644 docs/src/app/favicon.ico delete mode 100644 docs/src/app/getting-started/page.tsx delete mode 100644 docs/src/app/globals.css delete mode 100644 docs/src/app/installation/page.tsx delete mode 100644 docs/src/app/layout.tsx delete mode 100644 docs/src/app/page.tsx delete mode 100644 docs/src/app/requirements/page.tsx delete mode 100644 docs/src/app/validator/page.tsx delete mode 100644 docs/src/components/CodeBlock.tsx delete mode 100644 docs/src/components/Header.tsx delete mode 100644 docs/src/components/Sidebar.tsx delete mode 100644 docs/tailwind.config.ts delete mode 100644 docs/tsconfig.json diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index fd3dbb5..0000000 --- a/docs/.gitignore +++ /dev/null @@ -1,36 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js -.yarn/install-state.gz - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/docs/DOCS_GUIDE.md b/docs/DOCS_GUIDE.md deleted file mode 100644 index 160be49..0000000 --- a/docs/DOCS_GUIDE.md +++ /dev/null @@ -1,291 +0,0 @@ -# Starknode-kit Documentation Guide - -This guide explains how to run and develop the starknode-kit documentation site. - -## Quick Start - -### Installation - -```bash -cd docs -npm install -``` - -### Development Server - -Run the development server: - -```bash -npm run dev -``` - -Open [http://localhost:3000](http://localhost:3000) in your browser to see the documentation. - -The page auto-updates as you edit files. - -### Production Build - -Build for production: - -```bash -npm run build -npm start -``` - -## Documentation Structure - -``` -docs/ -├── src/ -│ ├── app/ # Next.js pages (App Router) -│ │ ├── page.tsx # Homepage -│ │ ├── layout.tsx # Root layout with sidebar/header -│ │ ├── globals.css # Global styles -│ │ ├── getting-started/ # Getting started guide -│ │ ├── installation/ # Installation guide -│ │ ├── configuration/ # Configuration docs -│ │ ├── commands/ # Command reference -│ │ ├── clients/ # Client documentation -│ │ ├── validator/ # Validator setup guide -│ │ ├── requirements/ # Requirements page -│ │ └── contributing/ # Contributing guide -│ └── components/ # Reusable components -│ ├── Sidebar.tsx # Navigation sidebar -│ ├── Header.tsx # Top header with search -│ └── CodeBlock.tsx # Code block component -├── public/ # Static assets -├── package.json # Dependencies -└── README.md # Documentation README - -``` - -## Features - -### GitBook-Style Layout - -- **Fixed Sidebar** - Navigation always visible on the left -- **Header** - Search and links at the top -- **Content Area** - Main documentation content -- **Responsive** - Works on mobile and desktop - -### Components - -#### Sidebar (`components/Sidebar.tsx`) - -- Hierarchical navigation -- Active page highlighting -- Collapsible sections -- Links to all documentation pages - -#### Header (`components/Header.tsx`) - -- Search bar (placeholder, can be enhanced) -- GitHub link -- Telegram link -- Dark mode support - -#### CodeBlock (`components/CodeBlock.tsx`) - -- Syntax-highlighted code blocks -- Copy-to-clipboard button -- Language support -- Dark theme optimized - -### Styling - -- **Tailwind CSS** - Utility-first CSS framework -- **Dark Mode** - Automatic based on system preference -- **Custom Scrollbars** - Styled for better UX -- **Prose** - Typography optimized for documentation - -## Adding New Pages - -### 1. Create Page File - -Create a new `page.tsx` in the appropriate directory: - -```bash -mkdir -p src/app/your-page -``` - -```tsx -// src/app/your-page/page.tsx -import CodeBlock from '@/components/CodeBlock'; - -export default function YourPage() { - return ( -
-

Your Page Title

-

Your content here...

- - -
- ); -} -``` - -### 2. Add to Navigation - -Update `src/components/Sidebar.tsx`: - -```tsx -const navigation: NavItem[] = [ - // ... existing items - { title: 'Your Page', href: '/your-page' }, -]; -``` - -### 3. Test - -```bash -npm run dev -``` - -Visit `http://localhost:3000/your-page` - -## Deployment - -### Vercel (Recommended) - -1. Push to GitHub -2. Import project in Vercel -3. Deploy automatically - -### Self-Hosted - -```bash -npm run build -npm start -``` - -Or use a process manager like PM2: - -```bash -pm2 start npm --name "starknode-docs" -- start -``` - -### Static Export - -For static hosting (GitHub Pages, etc.): - -```bash -# Add to next.config.ts: -# output: 'export' - -npm run build -# Output will be in 'out/' directory -``` - -## Customization - -### Colors - -Edit `src/app/globals.css`: - -```css -:root { - --background: #ffffff; - --foreground: #171717; -} -``` - -### Fonts - -Edit `src/app/layout.tsx`: - -```tsx -import { Inter } from "next/font/google"; - -const inter = Inter({ - subsets: ["latin"], - variable: "--font-inter", -}); -``` - -### Navigation - -Edit `src/components/Sidebar.tsx`: - -```tsx -const navigation: NavItem[] = [ - // Add/remove/reorder items -]; -``` - -## Tips - -### Use CodeBlock Component - -```tsx -import CodeBlock from '@/components/CodeBlock'; - - -``` - -### Use Prose Styling - -Always wrap content in prose div: - -```tsx -
- {/* Your content */} -
-``` - -### Add Info Boxes - -```tsx -
-

💡 Tip

-

Your tip here

-
-``` - -### Link Between Pages - -```tsx -import Link from 'next/link'; - -Other Page -``` - -## Troubleshooting - -### Port Already in Use - -```bash -# Kill process on port 3000 -lsof -i :3000 -kill -9 [PID] - -# Or use different port -PORT=3001 npm run dev -``` - -### Build Errors - -```bash -# Clean and rebuild -rm -rf .next node_modules -npm install -npm run build -``` - -### Styling Not Updating - -```bash -# Clear Next.js cache -rm -rf .next -npm run dev -``` - -## Resources - -- [Next.js Documentation](https://nextjs.org/docs) -- [Tailwind CSS](https://tailwindcss.com/docs) -- [React Documentation](https://react.dev/) - -## Contributing - -See the main [Contributing Guide](../CONTRIBUTING.md) for guidelines on contributing to the documentation. - diff --git a/docs/README.md b/docs/README.md index f787ecc..d394eff 100644 --- a/docs/README.md +++ b/docs/README.md @@ -72,4 +72,4 @@ This project is licensed under the MIT License - see the [LICENSE](https://githu --- -*Built with ❤️ by The Buidl Grid* +*Built with ❤️ by The Buidl Grid* \ No newline at end of file diff --git a/docs/next.config.ts b/docs/next.config.ts deleted file mode 100644 index e9ffa30..0000000 --- a/docs/next.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NextConfig } from "next"; - -const nextConfig: NextConfig = { - /* config options here */ -}; - -export default nextConfig; diff --git a/docs/package-lock.json b/docs/package-lock.json deleted file mode 100644 index 281b15d..0000000 --- a/docs/package-lock.json +++ /dev/null @@ -1,1667 +0,0 @@ -{ - "name": "docs", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "docs", - "version": "0.1.0", - "dependencies": { - "next": "15.5.4", - "react": "19.1.0", - "react-dom": "19.1.0" - }, - "devDependencies": { - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "tailwindcss": "^4", - "typescript": "^5" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", - "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", - "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", - "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", - "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", - "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", - "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", - "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", - "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", - "cpu": [ - "ppc64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", - "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", - "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", - "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", - "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", - "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", - "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", - "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", - "cpu": [ - "ppc64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", - "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", - "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", - "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", - "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", - "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.5.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", - "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", - "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", - "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@next/env": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.4.tgz", - "integrity": "sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==", - "license": "MIT" - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.4.tgz", - "integrity": "sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.4.tgz", - "integrity": "sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.4.tgz", - "integrity": "sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.4.tgz", - "integrity": "sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.4.tgz", - "integrity": "sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.4.tgz", - "integrity": "sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.4.tgz", - "integrity": "sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.4.tgz", - "integrity": "sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.14.tgz", - "integrity": "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", - "jiti": "^2.6.0", - "lightningcss": "1.30.1", - "magic-string": "^0.30.19", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.14" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz", - "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.4", - "tar": "^7.5.1" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.14", - "@tailwindcss/oxide-darwin-arm64": "4.1.14", - "@tailwindcss/oxide-darwin-x64": "4.1.14", - "@tailwindcss/oxide-freebsd-x64": "4.1.14", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", - "@tailwindcss/oxide-linux-x64-musl": "4.1.14", - "@tailwindcss/oxide-wasm32-wasi": "4.1.14", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.14.tgz", - "integrity": "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.14.tgz", - "integrity": "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.14.tgz", - "integrity": "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.14.tgz", - "integrity": "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.14.tgz", - "integrity": "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.14.tgz", - "integrity": "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.14.tgz", - "integrity": "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.14.tgz", - "integrity": "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.14.tgz", - "integrity": "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.14.tgz", - "integrity": "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.5.0", - "@emnapi/runtime": "^1.5.0", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.0.5", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.14.tgz", - "integrity": "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz", - "integrity": "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.14.tgz", - "integrity": "sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.14", - "@tailwindcss/oxide": "4.1.14", - "postcss": "^8.4.41", - "tailwindcss": "4.1.14" - } - }, - "node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.0.tgz", - "integrity": "sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001747", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001747.tgz", - "integrity": "sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/detect-libc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", - "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", - "devOptional": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/lightningcss": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", - "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.30.1", - "lightningcss-darwin-x64": "1.30.1", - "lightningcss-freebsd-x64": "1.30.1", - "lightningcss-linux-arm-gnueabihf": "1.30.1", - "lightningcss-linux-arm64-gnu": "1.30.1", - "lightningcss-linux-arm64-musl": "1.30.1", - "lightningcss-linux-x64-gnu": "1.30.1", - "lightningcss-linux-x64-musl": "1.30.1", - "lightningcss-win32-arm64-msvc": "1.30.1", - "lightningcss-win32-x64-msvc": "1.30.1" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", - "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", - "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", - "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", - "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", - "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", - "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", - "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", - "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", - "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", - "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/next": { - "version": "15.5.4", - "resolved": "https://registry.npmjs.org/next/-/next-15.5.4.tgz", - "integrity": "sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==", - "license": "MIT", - "dependencies": { - "@next/env": "15.5.4", - "@swc/helpers": "0.5.15", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.5.4", - "@next/swc-darwin-x64": "15.5.4", - "@next/swc-linux-arm64-gnu": "15.5.4", - "@next/swc-linux-arm64-musl": "15.5.4", - "@next/swc-linux-x64-gnu": "15.5.4", - "@next/swc-linux-x64-musl": "15.5.4", - "@next/swc-win32-arm64-msvc": "15.5.4", - "@next/swc-win32-x64-msvc": "15.5.4", - "sharp": "^0.34.3" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.51.1", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.0" - } - }, - "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", - "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.0", - "semver": "^7.7.2" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.4", - "@img/sharp-darwin-x64": "0.34.4", - "@img/sharp-libvips-darwin-arm64": "1.2.3", - "@img/sharp-libvips-darwin-x64": "1.2.3", - "@img/sharp-libvips-linux-arm": "1.2.3", - "@img/sharp-libvips-linux-arm64": "1.2.3", - "@img/sharp-libvips-linux-ppc64": "1.2.3", - "@img/sharp-libvips-linux-s390x": "1.2.3", - "@img/sharp-libvips-linux-x64": "1.2.3", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", - "@img/sharp-libvips-linuxmusl-x64": "1.2.3", - "@img/sharp-linux-arm": "0.34.4", - "@img/sharp-linux-arm64": "0.34.4", - "@img/sharp-linux-ppc64": "0.34.4", - "@img/sharp-linux-s390x": "0.34.4", - "@img/sharp-linux-x64": "0.34.4", - "@img/sharp-linuxmusl-arm64": "0.34.4", - "@img/sharp-linuxmusl-x64": "0.34.4", - "@img/sharp-wasm32": "0.34.4", - "@img/sharp-win32-arm64": "0.34.4", - "@img/sharp-win32-ia32": "0.34.4", - "@img/sharp-win32-x64": "0.34.4" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "license": "MIT", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/tailwindcss": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", - "integrity": "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tar": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", - "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - } - } -} diff --git a/docs/package.json b/docs/package.json index 38c5f8e..60823cd 100644 --- a/docs/package.json +++ b/docs/package.json @@ -30,4 +30,4 @@ "engines": { "node": ">=16.0.0" } -} +} \ No newline at end of file diff --git a/docs/postcss.config.mjs b/docs/postcss.config.mjs deleted file mode 100644 index c7bcb4b..0000000 --- a/docs/postcss.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -const config = { - plugins: ["@tailwindcss/postcss"], -}; - -export default config; diff --git a/docs/public/file.svg b/docs/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/docs/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/public/globe.svg b/docs/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/docs/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/public/next.svg b/docs/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/docs/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/public/vercel.svg b/docs/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/docs/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/public/window.svg b/docs/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/docs/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/src/app/clients/page.tsx b/docs/src/app/clients/page.tsx deleted file mode 100644 index e83e87c..0000000 --- a/docs/src/app/clients/page.tsx +++ /dev/null @@ -1,254 +0,0 @@ -import Link from 'next/link'; - -export default function Clients() { - return ( -
-

Supported Clients

- -

- starknode-kit supports multiple client implementations for both Ethereum - and Starknet networks. -

- -

Why Multiple Clients?

- -

- Running diverse client implementations is crucial for network health and - resilience. Client diversity prevents single points of failure and - reduces the impact of bugs in any one implementation. -

- -

Ethereum Clients

- -

- To run an Ethereum node, you need both an{" "} - execution client and a consensus client - . They work together to validate and process Ethereum blocks post-merge. -

- -
-
-

Execution Clients

-

Handle transaction execution and state management

-
    -
  • • Geth (Go)
  • -
  • • Reth (Rust)
  • -
-
- -
-

Consensus Clients

-

Handle proof-of-stake consensus mechanism

-
    -
  • • Lighthouse (Rust)
  • -
  • • Prysm (Go)
  • -
-
-
- -

Starknet Clients

- -

- Starknet clients allow you to run a Starknet full node, enabling interaction with the Starknet Layer 2 network. -

- -
-
-

Starknet Clients

-

Full node implementations for Starknet

-
    -
  • • Juno (Go) - Full node client
  • -
  • • Starknet Validator - Validator client for staking
  • -
-
-
- -

Client Combinations

- -

Popular client combinations for Ethereum nodes:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExecutionConsensusCharacteristics
GethLighthouseMost popular, well-tested
RethLighthouseHigh performance, modern
GethPrysmStable, feature-rich
RethPrysmPerformance-focused
-
- -

Choosing Clients

- -

Execution Clients

- -

Geth

- - -

Reth

- - -

Consensus Clients

- -

Lighthouse

- - -

Prysm

- - -

Starknet Clients

- -

Juno

- - -

Resource Requirements by Client

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClientRAMDiskCPU
Geth16+ GB~1.2 TB4+ cores
Reth16+ GB~900 GB4+ cores
Lighthouse8+ GB~200 GB2+ cores
Prysm8+ GB~250 GB2+ cores
Juno8+ GB~300 GB2+ cores
-
- -
-

💡 Recommendation

-

- For most users, we recommend Reth + Lighthouse for Ethereum (best performance) - and Juno for Starknet. -

-
- -

Client Diversity

- -

- Client diversity is critical for network health. If a single client has a bug and it's used by the majority of nodes, - it could cause network issues or even finality problems. -

- -

Current client distribution matters! Consider using minority clients to help decentralize the network.

- -

Switching Clients

- -

You can switch clients at any time:

- -
    -
  1. Stop your current clients: starknode-kit stop
  2. -
  3. Remove old client: starknode-kit remove --execution_client geth
  4. -
  5. Add new client: starknode-kit add --execution_client reth
  6. -
  7. Start nodes: starknode-kit start
  8. -
- -
-

⚠️ Note

-

- Switching clients may require re-syncing from scratch, which can take several days. - Plan accordingly and ensure you have sufficient disk space. -

-
- -
-

📖 Next Steps

-

- Ready to dive deeper? Check out our validator guide: -

-
- Validator Guide -
-
-
- ); -} - diff --git a/docs/src/app/commands/page.tsx b/docs/src/app/commands/page.tsx deleted file mode 100644 index 3fd0b4f..0000000 --- a/docs/src/app/commands/page.tsx +++ /dev/null @@ -1,157 +0,0 @@ -import Link from 'next/link'; -import CodeBlock from '@/components/CodeBlock'; - -export default function Commands() { - return ( -
-

Commands Reference

- -

- Complete reference for all starknode-kit commands. Each command helps - you manage different aspects of your Ethereum and Starknet nodes. -

- -

Command Overview

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CommandDescription
addAdd an Ethereum or Starknet client to the config
completionGenerate the autocompletion script for the specified shell
configCreate, show, and update your Starknet node configuration
monitorLaunch real-time monitoring dashboard
removeRemove a specified resource
runRun a specific local infrastructure service
startRun the configured Ethereum clients
statusDisplay status of running clients
stopStop the configured Ethereum clients
updateCheck for and install client updates
validatorManage the Starknet validator client
versionShow version of starknode-kit or a specific client
-
- -

Quick Examples

- -

Add Clients

- - -

Configure Network

- - -

- Start Ethereum Clients -

- - -

Monitor Nodes

- - -

Check Status

- - -

- Run Individual Client -

- - -

- Stop Ethereum Clients -

- - -

Check Version

- - -

Getting Help

- -

- For any command, you can use the --help flag to get - detailed usage information: -

- - - -

Shell Completion

- -

- Generate autocompletion scripts for your shell: -

- - /etc/bash_completion.d/starknode-kit - -# Zsh -starknode-kit completion zsh > "\${fpath[1]}/_starknode-kit" - -# Fish -starknode-kit completion fish > ~/.config/fish/completions/starknode-kit.fish`} - /> - -
-

📖 Next Steps

-

- Ready to dive deeper? Check out our comprehensive guides: -

-
- Supported Clients -
-
-
- ); -} - diff --git a/docs/src/app/configuration/page.tsx b/docs/src/app/configuration/page.tsx deleted file mode 100644 index 3cee155..0000000 --- a/docs/src/app/configuration/page.tsx +++ /dev/null @@ -1,331 +0,0 @@ -import CodeBlock from '@/components/CodeBlock'; -import Link from 'next/link'; - -export default function Configuration() { - return ( -
-

Configuration

- -

- Learn how to configure starknode-kit for your Ethereum and Starknet - nodes. -

- -

Configuration File

- -

- starknode-kit stores its configuration in a YAML file located at: -

- - - -

- Creating a Configuration -

- -

- Generate a new configuration file with default settings: -

- - - -

- Viewing Configuration -

- -

View your entire configuration:

- - - -

View specific sections:

- - - -

- Configuration Structure -

- -

- The configuration file has the following structure: -

- - - -

- Modifying Configuration -

- -

Change Network

- -

- Switch between mainnet, sepolia, or custom networks: -

- - - -

- Configure Execution Client -

- -

Set execution client and ports:

- - - -

- Configure Consensus Client -

- -

Set consensus client and checkpoint:

- - - -

- Configure Juno (Starknet) -

- -

Configure your Juno Starknet client:

- - - -

Network Settings

- -

starknode-kit supports multiple networks:

- -
    -
  • - mainnet - Ethereum and Starknet mainnet -
  • -
  • - sepolia - Ethereum Sepolia and Starknet Sepolia - testnet -
  • -
- -
-

⚠️ Important

-

- Changing the network will affect all clients. Make sure to stop your - nodes before changing networks. -

-
- -

- Port Configuration -

- -

Default Ports

- -

Default ports for each client:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClientPortsPurpose
Geth8545, 8546, 30303HTTP RPC, WS RPC, P2P
Reth8545, 8546, 30303HTTP RPC, WS RPC, P2P
Lighthouse5052, 9000HTTP API, P2P
Prysm4000, 13000HTTP API, P2P
Juno6060RPC
-
- -

- Validator Configuration -

- -

- For validator nodes, additional configuration is required. See the - Validator Setup page for details. -

- -

- Environment Variables -

- -

- Some sensitive data can be stored as environment variables: -

- -
    -
  • - STARKNET_WALLET - Wallet address -
  • -
  • - STARKNET_PRIVATE_KEY - Private key -
  • -
  • - STARKNET_PUBLIC_KEY - Public key -
  • -
  • - STARKNET_CLASS_HASH - Class hash -
  • -
  • - STARKNET_SALT - Salt value -
  • -
- -

- Configuration Best Practices -

- -
    -
  1. - Backup your config - Keep a backup of your - configuration file -
  2. -
  3. - Use environment variables - Store sensitive data in - environment variables -
  4. -
  5. - Document changes - Keep notes of any custom - configurations -
  6. -
  7. - Test on testnet - Always test configuration changes - on a testnet first -
  8. -
- -

Troubleshooting

- -

- Configuration not loading -

- -

- If your configuration isn't loading, check: -

- -
    -
  • - File exists at ~/.starknode-kit/starknode.yml -
  • -
  • File has correct YAML syntax
  • -
  • - File has correct permissions (readable by your user) -
  • -
- -

Port conflicts

- -

If you get port conflicts:

- -
    -
  • - Check if ports are already in use: lsof -i :[port] -
  • -
  • Configure different ports in your config
  • -
  • Stop conflicting services
  • -
- -
-

📖 Next Steps

-

- Ready to dive deeper? Check out our comprehensive guides: -

-
- Commands Reference -
-
-
- ); -} - diff --git a/docs/src/app/contributing/page.tsx b/docs/src/app/contributing/page.tsx deleted file mode 100644 index d003597..0000000 --- a/docs/src/app/contributing/page.tsx +++ /dev/null @@ -1,265 +0,0 @@ -import CodeBlock from '@/components/CodeBlock'; -import Link from 'next/link'; - -export default function Contributing() { - return ( -
-

Contributing

- -

- We welcome contributions to starknode-kit! This guide will help you get - started with contributing to the project. -

- -

Ways to Contribute

- -

There are many ways to contribute to starknode-kit:

- - - -

Getting Started

- -

1. Fork the Repository

- -

Start by forking the repository on GitHub:

- - - -

2. Clone Your Fork

- - - -

3. Set Up Development Environment

- -

Make sure you have the required tools:

- -
    -
  • Go 1.24 or later
  • -
  • Make
  • -
  • Git
  • -
- - - -

4. Create a Branch

- -

Create a branch for your changes:

- - - -

Development Workflow

- -

Project Structure

- - - -

Making Changes

- -
    -
  1. Write your code - Implement your feature or fix
  2. -
  3. Follow Go conventions - Use gofmt and follow Go best practices
  4. -
  5. Add tests - Write tests for your changes when applicable
  6. -
  7. Update documentation - Update README or add docs as needed
  8. -
- -

Testing

- -

Run tests before submitting:

- - - -

Code Style

- -

Format your code with gofmt:

- - - -

Submitting Changes

- -

1. Commit Your Changes

- -

Write clear, descriptive commit messages:

- - - -

2. Push to Your Fork

- - - -

3. Create a Pull Request

- -
    -
  1. Go to the original repository on GitHub
  2. -
  3. Click "New Pull Request"
  4. -
  5. Select your fork and branch
  6. -
  7. Fill out the PR template with: -
      -
    • Description of changes
    • -
    • Related issues
    • -
    • Testing performed
    • -
    • Screenshots (if UI changes)
    • -
    -
  8. -
  9. Submit the pull request
  10. -
- -

Pull Request Guidelines

- -

To increase the chances of your PR being accepted:

- -
    -
  • ✅ Make focused, single-purpose changes
  • -
  • ✅ Write clear commit messages
  • -
  • ✅ Include tests for new features
  • -
  • ✅ Update documentation as needed
  • -
  • ✅ Follow existing code style
  • -
  • ✅ Respond to review feedback promptly
  • -
  • ❌ Don't include unrelated changes
  • -
  • ❌ Don't submit untested code
  • -
  • ❌ Don't break existing functionality
  • -
- -

Reporting Bugs

- -

When reporting bugs, include:

- -
    -
  1. Description - Clear description of the bug
  2. -
  3. Steps to reproduce - How to trigger the bug
  4. -
  5. Expected behavior - What should happen
  6. -
  7. Actual behavior - What actually happens
  8. -
  9. Environment - OS, Go version, starknode-kit version
  10. -
  11. Logs - Relevant log output or error messages
  12. -
- - - -

Suggesting Features

- -

When suggesting features, include:

- -
    -
  • Clear description of the feature
  • -
  • Use case and motivation
  • -
  • Proposed implementation (if applicable)
  • -
  • Potential impact on existing functionality
  • -
- -

Code of Conduct

- -

We are committed to providing a welcoming and inclusive environment. Please:

- -
    -
  • ✅ Be respectful and considerate
  • -
  • ✅ Welcome newcomers and help them learn
  • -
  • ✅ Accept constructive criticism gracefully
  • -
  • ✅ Focus on what's best for the community
  • -
  • ❌ Don't harass or discriminate
  • -
  • ❌ Don't be disruptive or disrespectful
  • -
- -

Getting Help

- -

If you need help with contributing:

- - - -

Resources

- - - -
-

🎉 Thank You!

-

- Thank you for considering contributing to starknode-kit! Your contributions help make this tool better for everyone. -

-
- - -
- ); -} - diff --git a/docs/src/app/favicon.ico b/docs/src/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m diff --git a/docs/src/app/getting-started/page.tsx b/docs/src/app/getting-started/page.tsx deleted file mode 100644 index f7e0251..0000000 --- a/docs/src/app/getting-started/page.tsx +++ /dev/null @@ -1,228 +0,0 @@ -import Link from "next/link"; -import CodeBlock from "@/components/CodeBlock"; - -export default function GettingStarted() { - return ( -
-

Getting Started

- -

- Welcome to starknode-kit! This guide will help you get up and running - with your Ethereum and Starknet nodes in just a few minutes. -

- -

Prerequisites

- -

Before you begin, make sure you have:

- -
    -
  • - Operating System: Linux or macOS (Windows via WSL) -
  • -
  • - Go: Version 1.24 or later (if building from source) -
  • -
  • - Storage: At least 2TB of free SSD space -
  • -
  • - RAM: Minimum 32GB recommended -
  • -
  • - Network: Stable internet connection -
  • -
- -
-

📝 Note

-

- For detailed hardware requirements, check out our{" "} - - Requirements page - - . -

-
- -

Installation

- -

- The quickest way to install starknode-kit is using the installation - script: -

- - - -

This script will:

-
    -
  • - Download the latest version of starknode-kit -
  • -
  • - Install it to /usr/local/bin/ -
  • -
  • - Create necessary configuration directories -
  • -
- -

- Initial Configuration -

- -

- After installation, generate your initial configuration file: -

- - - -

- This creates a configuration file at{" "} - ~/.starknode-kit/starknode.yml with default settings. -

- -

- Add Your First Clients -

- -

- Ethereum Clients (Execution + Consensus) -

- -

- To run an Ethereum node, you need both an execution client and a - consensus client: -

- - - -

Or with Reth and Prysm:

- - - -

Starknet Client

- -

To add a Starknet client (Juno):

- - - -

Configure Network

- -

- By default, starknode-kit is configured for mainnet. To change to a - test network: -

- - - -

Start Your Nodes

- -

- Start Ethereum Clients -

- -

- To start your configured Ethereum execution and consensus clients: -

- - - -
-

⚠️ Important

-

- The start command only launches Ethereum clients - (execution + consensus). It does not start Starknet clients. -

-
- -

- Run Individual Clients -

- -

To run a specific client:

- - - -

Monitor Your Nodes

- -

- Launch the real-time monitoring dashboard to see the status of your - nodes: -

- - - -

The monitoring dashboard provides real-time insights:

- -
-
-
- 🔄 -
-

Node Sync Status

-

Real-time synchronization progress and health

-
-
-
- -
-
- 📊 -
-

Current Block Height

-

Latest block number and sync progress

-
-
-
- -
-
- 🌐 -
-

Network Statistics

-

Peer connections and network performance

-
-
-
- -
-
- 💻 -
-

System Resources

-

CPU, RAM, and disk usage metrics

-
-
-
-
- -

Check Status

- -

- For a quick status check of all running clients: -

- - - -
-

📖 Next Steps

-

- Ready to dive deeper? Check out our installation guide: -

-
- Installation Guide -
-
-
- ); -} - diff --git a/docs/src/app/globals.css b/docs/src/app/globals.css deleted file mode 100644 index b60e14f..0000000 --- a/docs/src/app/globals.css +++ /dev/null @@ -1,93 +0,0 @@ -@import "tailwindcss"; - -body { - font-family: var(--font-inter), system-ui, -apple-system, sans-serif; - line-height: 1.7; -} - -/* Scrollbar styling */ -::-webkit-scrollbar { - width: 8px; - height: 8px; -} - -::-webkit-scrollbar-track { - background: transparent; -} - -::-webkit-scrollbar-thumb { - background: #cbd5e0; - border-radius: 4px; -} - -::-webkit-scrollbar-thumb:hover { - background: #a0aec0; -} - -/* Prose styling for documentation */ -.prose { - max-width: none; - line-height: 1.8; -} - -.prose p { - margin-bottom: 1.5rem; -} - -.prose h2 { - margin-top: 3rem; - margin-bottom: 1.5rem; -} - -.prose h3 { - margin-bottom: 1.25rem; -} - -.prose a { - color: #2563eb; - text-decoration: none; - transition: color 0.2s; -} - -.prose a:hover { - color: #1d4ed8; - text-decoration: none; -} - -.prose code { - background: #f3f4f6; - padding: 0.2em 0.4em; - border-radius: 0.25rem; - font-size: 0.875em; - font-family: 'Courier New', monospace; -} - -.prose pre { - background: #1a202c !important; - padding: 1rem; - border-radius: 0.5rem; - overflow-x: auto; -} - -.prose pre code { - background: transparent; - padding: 0; - color: #e2e8f0; -} - -.prose table { - width: 100%; - border-collapse: collapse; -} - -.prose th { - text-align: left; - font-weight: 600; -} - -.prose blockquote { - border-left: 4px solid #e5e7eb; - padding-left: 1rem; - font-style: italic; - color: #6b7280; -} diff --git a/docs/src/app/installation/page.tsx b/docs/src/app/installation/page.tsx deleted file mode 100644 index 9dcd313..0000000 --- a/docs/src/app/installation/page.tsx +++ /dev/null @@ -1,179 +0,0 @@ -import Link from 'next/link'; -import CodeBlock from '@/components/CodeBlock'; - -export default function Installation() { - return ( -
-

Installation

- -

- There are multiple ways to install starknode-kit. Choose the method that - best suits your needs. -

- -

- Option 1: Install Script (Recommended) -

- -

- The easiest and recommended way to install starknode-kit: -

- - - -

- Or download the script first and then run it: -

- - - -

- Option 2: Install using Go -

- -

- If you have Go installed (version 1.24 or later), you can install - starknode-kit directly: -

- - - -

- This installs the latest version from the main branch. -

- -

- Option 3: Manual Installation from Source -

- -

- 1. Clone the Repository -

- - - -

2. Build and Install

- - - -

Verify Installation

- -

- After installation, verify that starknode-kit is working correctly: -

- - - -

You should see output similar to:

- - - -

Initial Setup

- -

- After successful installation, generate your configuration file: -

- - - -

- This creates a configuration file at{" "} - ~/.starknode-kit/starknode.yml. -

- -

Uninstallation

- -

- To uninstall starknode-kit, remove the binary and configuration - directory: -

- - - -
-

⚠️ Note

-

- This will not remove any client data (e.g., blockchain data). The data - is stored in the locations specified in your{" "} - ~/.starknode-kit/starknode.yml file. -

-
- -

Troubleshooting

- -

Command not found

- -

- If you get a "command not found" error, make sure{" "} - /usr/local/bin is in your PATH: -

- - - -

- Add this to your ~/.bashrc or ~/.zshrc to make - it permanent. -

- -

Permission denied

- -

- If you encounter permission issues during installation, make sure you - have sudo access or contact your system administrator. -

- -
-

📖 Next Steps

-

- Ready to dive deeper? Check out our configuration guide: -

-
- Configuration Guide -
-
-
- ); -} - diff --git a/docs/src/app/layout.tsx b/docs/src/app/layout.tsx deleted file mode 100644 index 66099db..0000000 --- a/docs/src/app/layout.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { Metadata } from "next"; -import { Inter, Source_Code_Pro } from "next/font/google"; -import "./globals.css"; -import Sidebar from "@/components/Sidebar"; -import Header from "@/components/Header"; - -const inter = Inter({ - subsets: ["latin"], - variable: "--font-inter", -}); - -const source_code_pro = Source_Code_Pro({ - subsets: ["latin"], - variable: "--font-source-code" -}) - -export const metadata: Metadata = { - title: "starknode-kit Documentation", - description: "Complete documentation for starknode-kit - A CLI tool for setting up and managing Ethereum and Starknet nodes", -}; - -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - return ( - - - -
-
-
- {children} -
-
- - - ); -} diff --git a/docs/src/app/page.tsx b/docs/src/app/page.tsx deleted file mode 100644 index ea7a66d..0000000 --- a/docs/src/app/page.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import Link from "next/link"; -import CodeBlock from "@/components/CodeBlock"; - -export default function Home() { - return ( -
-

Welcome to starknode-kit

- -

- A powerful command-line tool to help developers and node operators - easily set up, manage, and maintain Ethereum and Starknet nodes. -

- -
- -

- 🚀 Getting Started -

-

- Learn how to install and configure starknode-kit for your node - setup. -

- - - -

- 📘 Commands -

-

- Explore all available commands and their usage. -

- - - -

- ⚙️ Configuration -

-

- Configure your Ethereum and Starknet clients. -

- - - -

- 🔐 Validator Setup -

-

- Set up and manage your Starknet validator node. -

- -
- -

Quick Start

- -

Install starknode-kit with a single command:

- - - -

Generate your configuration file:

- - - -

Add your first client pair:

- - - -

Key Features

- -
    -
  • - ✅ Easy Setup - Get your node running in minutes -
  • -
  • - ✅ Multi-Client Support - Works with Geth, Reth, - Lighthouse, Prysm, and Juno -
  • -
  • - ✅ Real-time Monitoring - Built-in dashboard to - monitor your nodes -
  • -
  • - ✅ Auto Updates - Keep your clients up to date - automatically -
  • -
  • - ✅ Validator Management - Simplified Starknet - validator operations -
  • -
  • - ✅ Network Flexibility - Support for mainnet, - sepolia, and custom networks -
  • -
- -

Supported Clients

- -
-
-

Execution Layer

-
    -
  • • Geth
  • -
  • • Reth
  • -
-
-
-

Consensus Layer

-
    -
  • • Lighthouse
  • -
  • • Prysm
  • -
-
-
-

Starknet

-
    -
  • • Juno
  • -
  • • Starknet Validator
  • -
-
-
- -
-

📖 Next Steps

-

- Ready to dive deeper? Check out our comprehensive guides: -

-
- Installation Guide -
-
-
- ); -} diff --git a/docs/src/app/requirements/page.tsx b/docs/src/app/requirements/page.tsx deleted file mode 100644 index 8ef1256..0000000 --- a/docs/src/app/requirements/page.tsx +++ /dev/null @@ -1,319 +0,0 @@ -import Link from 'next/link'; -import CodeBlock from '@/components/CodeBlock'; - -export default function Requirements() { - return ( -
-

Requirements

- -

- Hardware and software requirements for running Ethereum and Starknet - nodes with starknode-kit. -

- -

Hardware Requirements

- -
-

📚 Reference

-

- For a detailed breakdown of node hardware requirements, see the Rocket Pool Hardware Guide. -

-
- -

Minimum Requirements

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ComponentRequirementNotes
CPU4+ coresIntel i3/i5 or AMD equivalent. Avoid Celeron.
RAM32 GBMinimum 16GB, 32GB recommended for comfort
Storage2+ TB NVMe SSDMust have DRAM cache, no QLC NAND
Network100+ MbpsStable connection, unlimited data preferred
Power24/7 uptimeUPS recommended for validators
-
- -

Recommended Specifications

- -
    -
  • CPU: Intel i5/i7 or AMD Ryzen 5/7 (6+ cores)
  • -
  • RAM: 64 GB DDR4
  • -
  • Storage: 4 TB NVMe SSD with DRAM cache
  • -
  • Network: 1 Gbps fiber connection
  • -
  • Backup Power: UPS with 30+ minutes runtime
  • -
- -

Storage Requirements

- -

Storage is the most critical component for node operation.

- -

Storage Size

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClientCurrent SizeGrowth Rate
Ethereum (Geth)~1.2 TB~150 GB/year
Ethereum (Reth)~900 GB~120 GB/year
Lighthouse~200 GB~50 GB/year
Prysm~250 GB~60 GB/year
Juno (Starknet)~300 GB~100 GB/year
-
- -

SSD Requirements

- -

Your SSD must have:

- -
    -
  • DRAM cache - Essential for performance
  • -
  • TLC or better NAND - No QLC (Quad-Level Cell)
  • -
  • High endurance rating - 600+ TBW recommended
  • -
  • NVMe interface - SATA SSDs are too slow
  • -
- -
-

⚠️ Warning

-

- Using a QLC SSD or SSD without DRAM cache will result in poor performance and potential node failures. - See the tested SSD list for recommendations. -

-
- -

Software Requirements

- -

Operating System

- -

Supported operating systems:

- -
    -
  • Linux: Ubuntu 20.04+, Debian 11+, or other modern distributions
  • -
  • macOS: macOS 12 (Monterey) or later
  • -
  • Windows: Windows 10/11 with WSL2 (Ubuntu)
  • -
- -

Linux is highly recommended for production use.

- -

Required Software

- -

Go (for building from source)

- -

Version 1.24 or later required:

- - - -

Install from: https://go.dev/dl/

- -

Rust (for Starknet clients)

- -

Recommended for building Juno and other Starknet clients:

- - - -

Make

- -

Required for building certain clients:

- - - -

Network Requirements

- -

Bandwidth

- -
    -
  • Download: 100+ Mbps
  • -
  • Upload: 25+ Mbps
  • -
  • Data Cap: Unlimited (or 2+ TB/month)
  • -
- -

Ports

- -

Ensure these ports are accessible:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PortProtocolPurpose
30303TCP/UDPEthereum execution P2P
9000TCP/UDPLighthouse consensus P2P
13000TCPPrysm consensus P2P
6060TCPJuno RPC (localhost only)
-
- -

For Validator Nodes

- -

Additional requirements for running a validator:

- -
    -
  • Uptime: 99.9%+ availability required
  • -
  • Backup Power: UPS mandatory
  • -
  • Monitoring: 24/7 monitoring and alerting
  • -
  • Backup Internet: Secondary connection recommended
  • -
  • Dedicated Hardware: No shared resources
  • -
- -

Tested Hardware Configurations

- -

Budget Build (~$800)

- -
    -
  • Intel NUC 13 PRO (i5)
  • -
  • 32 GB DDR4 RAM
  • -
  • 2 TB NVMe SSD (Samsung 980 PRO)
  • -
  • Ubuntu 22.04 LTS
  • -
- -

Recommended Build (~$1500)

- -
    -
  • Custom build: AMD Ryzen 7 or Intel i7
  • -
  • 64 GB DDR4 RAM
  • -
  • 4 TB NVMe SSD (Samsung 990 PRO)
  • -
  • 1 Gbps fiber connection
  • -
  • UPS with 30min+ runtime
  • -
  • Ubuntu 22.04 LTS
  • -
- -

Pro Build (~$3000+)

- -
    -
  • High-end workstation or server
  • -
  • 128 GB ECC RAM
  • -
  • 8 TB NVMe SSD (enterprise grade)
  • -
  • Redundant power supplies
  • -
  • Redundant network connections
  • -
  • Professional monitoring and alerting
  • -
- -

Cloud Providers

- -

If running in the cloud, recommended specifications:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
ProviderInstance TypeEst. Cost/Month
AWSm5.2xlarge + 4TB gp3~$500-700
Google Cloudn2-standard-8 + 4TB SSD~$600-800
AzureStandard_D8s_v3 + 4TB Premium SSD~$550-750
-
- -
-

💡 Cost Consideration

-

- Running on dedicated hardware is often more cost-effective long-term than cloud hosting, especially for validators. -

-
-
- ); -} - diff --git a/docs/src/app/validator/page.tsx b/docs/src/app/validator/page.tsx deleted file mode 100644 index 156aa27..0000000 --- a/docs/src/app/validator/page.tsx +++ /dev/null @@ -1,239 +0,0 @@ -import CodeBlock from '@/components/CodeBlock'; -import Link from 'next/link'; -export default function Validator() { - return ( -
-

Validator Setup

- -

- Set up and manage your Starknet validator node using starknode-kit. -

- -
-

⚠️ Important

-

- Running a validator requires significant responsibility. Make sure you - understand the requirements and risks before proceeding. -

-
- -

Prerequisites

- -

Before setting up a validator, ensure you have:

- -
    -
  • ✅ A fully synced Juno (Starknet) node
  • -
  • ✅ A Starknet wallet with sufficient funds for staking
  • -
  • ✅ Stable internet connection with 99.9%+ uptime
  • -
  • ✅ Understanding of validator responsibilities
  • -
- -

Installation

- -

The validator client is managed through starknode-kit. First, ensure you have starknode-kit installed and configured.

- -

Validator Commands

- -

Check Validator Status

- -

Check the status of your validator:

- - - -

Get Validator Version

- -

Check the installed version of the validator client:

- - - -

Set Juno RPC Endpoint

- -

Configure the Juno RPC endpoint for your validator:

- - - -

Or use a remote Juno node:

- - - -

Configuration

- -

Validator configuration is stored in your starknode-kit config file. Key settings include:

- - - -

Setting Up Environment Variables

- -

Store sensitive validator data in environment variables:

- - - -

Add these to your ~/.bashrc or ~/.zshrc to make them persistent.

- -

Starting Your Validator

- -

Step 1: Ensure Juno is Running

- -

Your Juno node must be fully synced and running:

- - - -

Step 2: Verify Configuration

- -

Check your validator configuration:

- - - -

Step 3: Start the Validator

- -

Start your validator client:

- - - -

Monitoring Your Validator

- -

Monitor your validator status:

- - - -

Validator Responsibilities

- -
    -
  1. Uptime - Maintain high availability (99.9%+)
  2. -
  3. Security - Keep your keys secure and never share them
  4. -
  5. Updates - Keep your validator software up to date
  6. -
  7. Monitoring - Actively monitor your validator performance
  8. -
  9. Backup - Maintain secure backups of your keys
  10. -
- -

Security Best Practices

- -
    -
  • ✅ Use hardware wallets when possible
  • -
  • ✅ Store keys in environment variables, not in config files
  • -
  • ✅ Use firewall to restrict access to validator ports
  • -
  • ✅ Enable SSH key-based authentication
  • -
  • ✅ Keep your server updated with security patches
  • -
  • ✅ Monitor for unusual activity
  • -
  • ✅ Have a disaster recovery plan
  • -
  • ❌ Never share your private keys
  • -
  • ❌ Don't run validators on shared hosting
  • -
  • ❌ Avoid storing keys in version control
  • -
- -

Staking and Commission

- -

Configure your validator's commission rate:

- - - -

This sets a 10% commission on staking rewards. Validators typically charge 5-15% commission.

- -

Troubleshooting

- -

Validator Not Connecting to Juno

- -

Check that:

-
    -
  • Juno is running: starknode-kit status
  • -
  • RPC endpoint is correct in config
  • -
  • Firewall allows connections to Juno port
  • -
- -

Keys Not Loading

- -

Verify environment variables are set:

- - - -

If empty, add to your shell profile and reload.

- -

Validator Offline

- -

If your validator goes offline:

-
    -
  1. ✅ Check system resources
  2. -
  3. ✅ Check network connectivity
  4. -
  5. ✅ Review validator logs
  6. -
  7. ✅ Restart validator if needed
  8. -
- -

Performance Metrics

- -

Monitor these key metrics:

- -
    -
  • Attestation rate - Percentage of successful attestations
  • -
  • Block proposals - Number of blocks proposed
  • -
  • Uptime - Validator availability percentage
  • -
  • Rewards - Staking rewards earned
  • -
- -

Validator Economics

- -

Understand the economics:

- -
    -
  • Minimum Stake - Required amount to become a validator
  • -
  • Rewards - Earned from successful validation
  • -
  • Commission - Your fee for running the validator
  • -
  • Penalties - For downtime or malicious behavior
  • -
- -
-

💡 Tip

-

- Start on the testnet (Sepolia) to familiarize yourself with validator operations before running on mainnet. -

-
- -

Resources

- - - -
-

📖 Next Steps

-

- Ready to dive deeper? Check out our comprehensive guides: -

-
- System Requirements -
-
-
- ); -} - diff --git a/docs/src/components/CodeBlock.tsx b/docs/src/components/CodeBlock.tsx deleted file mode 100644 index 8f6f33e..0000000 --- a/docs/src/components/CodeBlock.tsx +++ /dev/null @@ -1,35 +0,0 @@ -'use client'; - -import { useState } from 'react'; - -interface CodeBlockProps { - code: string; - language?: string; -} - -export default function CodeBlock({ code, language = 'bash' }: CodeBlockProps) { - const [copied, setCopied] = useState(false); - - const copyToClipboard = async () => { - await navigator.clipboard.writeText(code); - setCopied(true); - setTimeout(() => setCopied(false), 2000); - }; - - return ( -
-
- -
-
-        

{code}

-
-
- ); -} - diff --git a/docs/src/components/Header.tsx b/docs/src/components/Header.tsx deleted file mode 100644 index 7be998d..0000000 --- a/docs/src/components/Header.tsx +++ /dev/null @@ -1,41 +0,0 @@ -'use client'; - -import Link from 'next/link'; - -export default function Header() { - return ( -
-
-
- - - - - - - - - - -
-
-
- ); -} - diff --git a/docs/src/components/Sidebar.tsx b/docs/src/components/Sidebar.tsx deleted file mode 100644 index 0c7c350..0000000 --- a/docs/src/components/Sidebar.tsx +++ /dev/null @@ -1,60 +0,0 @@ -'use client'; - -import Link from 'next/link'; -import { usePathname } from 'next/navigation'; - -interface NavItem { - title: string; - href: string; -} - -const navigation: NavItem[] = [ - { title: 'Introduction', href: '/' }, - { title: 'Getting Started', href: '/getting-started' }, - { title: 'Installation', href: '/installation' }, - { title: 'Configuration', href: '/configuration' }, - { title: 'Commands', href: '/commands' }, - { title: 'Clients', href: '/clients' }, - { title: 'Validator Setup', href: '/validator' }, - { title: 'Requirements', href: '/requirements' }, - { title: 'Contributing', href: '/contributing' }, -]; - -export default function Sidebar() { - const pathname = usePathname(); - - const isActive = (href: string) => { - if (href === '/') return pathname === href; - return pathname.startsWith(href); - }; - - return ( - - ); -} - diff --git a/docs/tailwind.config.ts b/docs/tailwind.config.ts deleted file mode 100644 index f67c807..0000000 --- a/docs/tailwind.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { Config } from "tailwindcss"; - -const config: Config = { - content: [ - "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", - "./src/components/**/*.{js,ts,jsx,tsx,mdx}", - "./src/app/**/*.{js,ts,jsx,tsx,mdx}", - ], - theme: { - extend: {}, - }, - plugins: [], -}; - -export default config; - diff --git a/docs/tsconfig.json b/docs/tsconfig.json deleted file mode 100644 index c133409..0000000 --- a/docs/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -}