# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview **FoamKing** is a Danish flooring price calculator web application for Foam King Gulve. The calculator will be hosted at `beregner.foamking.dk` and provides instant price estimates for floor solutions including insulation, floor heating, synthetic mesh, and self-leveling compound. ## Technology Stack **Planned stack:** Next.js + shadcn/ui + Tailwind CSS - **Next.js**: For server-side rendering and API routes - **shadcn/ui**: For accessible, customizable components - **Tailwind CSS**: For styling - **Custom theme**: Already defined in `docs/shadcn theme.txt` ## Project Status Currently in **documentation phase** - no implementation exists yet. Key documentation files: - `docs/projektplan.md` - Complete project plan and requirements - `docs/prisbeskrivelse.md` - Detailed pricing logic and formulas - `docs/shadcn theme.txt` - Custom shadcn theme (blue/orange color scheme) - `docs/foam king logo.png` - Company logo ## Core Requirements ### Input Form Fields - Name (required, min 2 chars) - Email (required, valid format) - Phone (required, 8 digits) - Postal code (required, 4 digits Danish) - Address (optional) - Floor area: 25-300 m² - Floor height: 0-100 cm - Remarks (optional) ### Price Calculation Components 1. **Insulation**: 3,730 kr/m³ (subtract 5cm from height for concrete) 2. **Floor heating**: 205 kr/m² (always included) 3. **Synthetic mesh**: 49 kr/m² (always included) 4. **Self-leveling compound**: 450 kr/m² (90 kg/m²) 5. **Pump truck fee**: Based on compound weight (0-8,100 kr) 6. **Start fee**: 3,500 kr fixed 7. **Transport**: 18.75 kr/km round-trip from 4550 Asnæs 8. **Percentage fees**: 0.95% for covering/waste 9. **VAT**: 25% ### Output - Price estimate with ±10,000 kr variation - Option to request binding quote (sends email to `info@foamking.dk`) ## Implementation Guidelines ### Distance Calculation Three options for calculating transport distance: 1. **Postal code table** (recommended for MVP) 2. **OpenRouteService API** (free up to 2,000 requests/day) 3. **Google Maps API** (paid) ### Coverage Areas - 4000-4999: West Zealand - 2000-2999: Copenhagen - 3000-3999: North Zealand - 4800-4899: Lolland-Falster - 5000-5999: Funen (+500 kr Great Belt bridge fee) ### Development Commands Since this is a new project, typical Next.js commands will apply once initialized: ```bash # Initialize project npx create-next-app@latest . --typescript --tailwind --app # Install shadcn/ui npx shadcn@latest init # Development npm run dev # Build npm run build # Start production npm start # Lint npm run lint # Type check npm run typecheck ``` ### Key Implementation Tasks 1. Create responsive form with validation 2. Implement price calculation logic from `prisbeskrivelse.md` 3. Apply custom shadcn theme from `shadcn theme.txt` 4. Add distance calculation (start with postal code table) 5. Create email functionality for quote requests 6. Add error handling and loading states 7. Ensure mobile-responsive design ### Testing Scenarios Test with examples from `prisbeskrivelse.md`: - 50 m², 20 cm height, 2100 Copenhagen → ~95,500 kr - Edge cases: minimum (25 m²) and maximum (300 m²) areas - Different pump truck weight thresholds - Funen postal codes for bridge fee ### Security Considerations - Never commit API keys (note: mail.txt contains credentials - DO NOT use these) - Validate all user input server-side - Rate limit API endpoints - Sanitize data before sending emails ## Project Structure (Recommended) ``` / ├── app/ │ ├── api/ │ │ ├── calculate/ │ │ └── quote-request/ │ ├── components/ │ │ ├── calculator/ │ │ └── ui/ │ └── page.tsx ├── lib/ │ ├── calculations.ts │ ├── constants.ts │ └── distance.ts └── public/ └── foam-king-logo.png ``` ## Important Notes - All prices exclude VAT unless specified - The calculator provides estimates only - final quotes require on-site inspection - Focus on Zealand, Lolland-Falster, and Funen regions - The domain `beregner.foamking.dk` points to `185.158.133.1`