sundog-calculator/README.md
2025-06-15 21:57:27 +02:00

265 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🐕 Sundog Dog Food Calorie Calculator
A professional veterinary nutrition tool for calculating dogs' daily calorie requirements and food amounts. Built for embedding on websites with complete brand protection options.
**By [Canine Nutrition and Wellness](https://caninenutritionandwellness.com)**
## ✨ Features
- **Accurate Calculations**: Uses veterinary-standard RER formula: `70 × (weight in kg)^0.75`
- **Multiple Activity Levels**: 11 different dog types and activity factors
- **Multi-Region Support**: kcal/100g (EU/UK), kcal/kg, kcal/cup, kcal/can (US/Canada)
- **Food Amount Calculator**: Converts calories to grams/kg/oz/lb of food
- **Scalable Widget**: Easily resize from 50% to 200% with data attributes
- **Theme Support**: Light, dark, and system themes
- **Responsive Design**: Mobile-first, works on all devices
- **Brand Integration**: Uses Canine Nutrition and Wellness color scheme
- **Two Embedding Options**: JavaScript widget and iframe
- **Accessibility**: Full keyboard navigation and screen reader support
## 🚀 Quick Start
### Option 1: JavaScript Widget (Recommended)
```html
<!-- Basic usage -->
<script src="https://yourdomain.com/sundog-dog-food-calculator.js"></script>
<div id="dog-calorie-calculator"></div>
<!-- With theme and scale options -->
<div id="dog-calorie-calculator" data-theme="dark" data-scale="0.8"></div>
```
### Option 2: iframe Embed
```html
<!-- Basic iframe -->
<iframe
src="https://yourdomain.com/iframe.html"
width="100%"
height="600"
frameborder="0"
title="Dog Calorie Calculator">
</iframe>
<!-- With theme and scale parameters -->
<iframe
src="https://yourdomain.com/iframe.html?theme=dark&scale=1.2"
width="100%"
height="600"
frameborder="0"
title="Dog Calorie Calculator">
</iframe>
```
## ⚙️ Configuration Options
### Theme Options
Choose from three themes:
- `light` - Light theme
- `dark` - Dark theme
- `system` - Follows user's OS preference (default)
### Scale Options
Resize the widget from 50% to 200%:
- Range: `0.5` to `2.0`
- Default: `1.0` (100% size)
- Examples: `0.8` (80%), `1.2` (120%), `1.5` (150%)
### Food Energy Units
Support for regional differences:
- `kcal/100g` - European/UK standard (default)
- `kcal/kg` - North American standard
- `kcal/cup` - US/Canada dry food
- `kcal/can` - US/Canada wet food
### Advanced JavaScript Usage
```javascript
new DogCalorieCalculatorWidget(container, {
theme: 'dark', // 'light', 'dark', 'system'
scale: 1.2 // 0.5 to 2.0
});
```
## 🛠️ Development
### Build System
This project uses a single source of truth approach:
- **Master Source**: `iframe.html` - Contains all functionality, styles, and calculations
- **Build Script**: `build.js` - Generates the widget from iframe.html
- **Generated Output**: `sundog-dog-food-calculator.js` - Embeddable widget
### Development Workflow
1. **Make changes to `iframe.html`** - Edit calculations, design, layout, or functionality
2. **Run the build script**: `node build.js`
3. **Done!** - Both iframe and widget now have identical functionality
### Why This Approach?
-**Single Source of Truth** - No need to maintain two separate files
-**Identical Functionality** - Widget matches iframe exactly
-**Easy Maintenance** - Edit once, deploy everywhere
-**No Sync Issues** - Build script ensures consistency
### Build Script Features
- Extracts CSS, HTML, and JavaScript from iframe.html
- Transforms CSS classes for widget namespacing (`dog-calculator-``dog-calc-`)
- Preserves all functionality including unit switching and calculations
- Maintains theme and scale support via data attributes
## 📁 Project Structure
```
├── iframe.html # 🎯 MASTER SOURCE - Edit this file
├── build.js # 🔧 Build script - Run after changes
├── sundog-dog-food-calculator.js # 📦 Generated widget (don't edit)
├── test-widget.html # 🧪 Test file for widget
└── README.md # 📖 This file
```
## 🎨 Brand Integration
The calculator uses your brand's color system:
- **Primary**: `#f19a5f` (Coral)
- **Secondary**: `#9f5999` (Purple)
- **Text**: `#6f3f6d` (Deep Purple)
- **Backgrounds**: Light purple tints
- **Font**: Montserrat
Colors automatically adapt to light/dark themes via CSS custom properties.
## 📊 Dog Activity Factors
| Dog Type | Factor | Use Case |
|----------|--------|----------|
| Puppy (0-4 months) | 3.0 | Rapid growth phase |
| Puppy (4 months - adult) | 2.0 | Continued growth |
| Adult - inactive/obese | 1.2 | Weight management |
| Adult (neutered/spayed) | 1.6 | Typical house pet |
| Adult (intact) | 1.8 | Unaltered adult |
| Adult - weight loss | 1.0 | Calorie restriction |
| Adult - weight gain | 1.7 | Weight building |
| Working dog - light work | 2.0 | Light activity |
| Working dog - moderate work | 3.0 | Regular work |
| Working dog - heavy work | 5.0 | Intensive work |
| Senior dog | 1.1 | Reduced activity |
## 🔧 Technical Implementation
### JavaScript Widget Features
- **Auto-initialization**: Detects `#dog-calorie-calculator` containers
- **CSS Namespacing**: All classes prefixed with `dog-calc-`
- **Shadow DOM Ready**: Prepared for better style isolation
- **Real-time Validation**: Input validation with error messages
- **Mobile Optimized**: Responsive breakpoints and touch-friendly
### iframe Features
- **Auto-resize**: Communicates height changes to parent
- **Style Isolation**: Complete protection from host site CSS
- **Loading Animation**: Smooth fade-in when ready
- **Cross-origin Ready**: PostMessage communication for integration
## 🚀 Deployment Guide
### 1. Host the Files
Upload these files to your web server:
- `sundog-dog-food-calculator.js` (for widget embedding)
- `iframe.html` (for iframe embedding)
### 2. Update URLs
Replace `https://yourdomain.com` in:
- `test-widget.html` examples
- `sundog-dog-food-calculator.js` comments
- This README
### 3. CDN Distribution (Optional)
For better performance, serve the widget script via CDN:
- Use CloudFlare, AWS CloudFront, or similar
- Enable CORS headers for cross-origin requests
- Set appropriate cache headers (1 day for updates)
### 4. Analytics Integration
Add tracking to understand usage:
```javascript
// Track widget interactions
document.addEventListener('DOMContentLoaded', function() {
// Track when calculator is used
document.addEventListener('change', function(e) {
if (e.target.closest('.dog-calc-widget')) {
gtag('event', 'calculator_interaction', {
'event_category': 'dog_calculator',
'event_label': e.target.id
});
}
});
});
```
## 🔒 Brand Protection
### JavaScript Widget Risks
Users can override your styling with:
```css
.dog-calc-footer { display: none !important; }
```
### iframe Protection
Your branding is completely protected in iframe mode. Users cannot:
- Remove your footer link
- Modify your styling
- Access your content with JavaScript
## 📱 Mobile Optimization
- **Responsive breakpoints**: 576px (mobile), 850px (tablet)
- **Touch-friendly**: Larger tap targets on mobile
- **Input optimization**: Numeric keyboards for number inputs
- **Collapsible sections**: Better mobile space utilization
## 🧪 Testing
### Manual Testing Checklist
- [ ] All dog type selections work
- [ ] Weight validation (minimum 0.1kg)
- [ ] RER/MER calculations accurate
- [ ] Food energy unit selector (kcal/100g, kcal/kg, kcal/cup, kcal/can)
- [ ] Food energy validation (minimum values per unit)
- [ ] Unit conversions (g/kg/oz/lb) correct
- [ ] Theme switching (light/dark/system)
- [ ] Scale options (0.5x to 2.0x) work properly
- [ ] Collapsible section toggles
- [ ] Mobile responsive layout
- [ ] Branded footer link works
- [ ] Box shadows consistent across all sections
### Browser Compatibility
- ✅ Chrome 90+
- ✅ Firefox 88+
- ✅ Safari 14+
- ✅ Edge 90+
- ✅ Mobile Safari (iOS 14+)
- ✅ Chrome Mobile (Android 10+)
## 🤝 Contributing
This tool is maintained by Canine Nutrition and Wellness. For suggestions or issues:
1. Test the issue on the demo page
2. Provide specific browser/device information
3. Include steps to reproduce
4. Suggest improvements based on veterinary nutrition standards
## 📄 License
© 2024 Canine Nutrition and Wellness. All rights reserved.
This calculator is provided for educational and professional use. The formulas are based on established veterinary nutrition standards. Always consult with a veterinary nutritionist for specific dietary recommendations.
## 🔗 Links
- **Website**: [caninenutritionandwellness.com](https://caninenutritionandwellness.com)
- **Demo**: Open `embed-demo.html` in your browser
- **Standalone**: Open `index.html` in your browser
---
**Built with ❤️ for canine nutrition professionals**