A modern web application for calculating storage system durability across different RAID configurations and erasure coding schemes. Built with Next.js, React, and Tailwind CSS.
- Calculate storage durability for various configurations:
- RAID 1 (Mirroring)
- RAID 5 (Single Parity)
- RAID 6 (Double Parity)
- RAID 10 (Striped Mirrors)
- Erasure Coding
- Configurable parameters:
- Number of data shards
- Number of parity shards
- Annual Failure Rate (AFR)
- Rebuild time
- Real-time calculations
- Modern, responsive UI with dark mode support
- Framework: Next.js 15
- UI Library: React 19
- Styling: Tailwind CSS
- Components: Radix UI
- Form Handling: React Hook Form
- Validation: Zod
- Charts: Recharts
- Type Safety: TypeScript
- Deployment: Cloudflare Pages
-
Clone the repository:
git clone https://github.com/yourusername/durability-calc.git cd durability-calc -
Install dependencies:
pnpm install
-
Run the development server:
pnpm dev
-
Open http://localhost:3000 in your browser.
The application is configured for deployment to Cloudflare Pages. Follow these steps to deploy:
-
Install Wrangler CLI if not already installed:
pnpm add -g wrangler
-
Build the project:
pnpm build
-
Deploy to Cloudflare Pages:
wrangler pages deploy out --project-name durability-calc --branch main
-
Configure Production Branch (in Cloudflare Dashboard):
- Go to Cloudflare Dashboard
- Navigate to Pages > durability-calc project
- Go to Settings > Git Integration
- Set "Production branch" to "main"
The deployment will be available at:
- Production URL: https://production.durability-calc.pages.dev
- Preview URL: https://[deployment-id].durability-calc.pages.dev
pnpm dev- Start development serverpnpm build- Build for productionpnpm start- Start production serverpnpm lint- Run ESLint
durability-calc/
├── app/ # Next.js app directory
├── components/ # Reusable UI components
├── hooks/ # Custom React hooks
├── lib/ # Utility functions and calculations
├── public/ # Static assets
└── styles/ # Global styles
This project is licensed under the terms of the MIT license. See the LICENSE file for details.