docs: update README with new features and test coverage info

## Updates

### Features Section
- Added tag organization system with quick tagging UX
- Highlighted recipe scaling functionality
- Documented cookbooks feature
- Added user authentication and backup/restore features
- Updated recipe import to mention 600+ supported sites

### New Sections
- **Testing**: Added comprehensive test coverage details (77.6% overall)
  - Test commands and coverage breakdown
  - 377+ tests across 21 test suites
- **Managing Tags**: Detailed guide on quick tag management
  - Inline tagging on recipe detail pages
  - Tag during import workflow
  - Focus retention for rapid tagging

### Prerequisites
- Added Python 3 requirement for recipe scraper
- Documented recipe-scrapers installation

### API Examples
- Added examples for creating recipes with tags
- Added tag filtering example
- Added tag update example

### Usage Guide
- Enhanced recipe import workflow with tag management steps
- Added details about schema.org markup support

### Future Enhancements
- Removed implemented features (authentication, cookbooks, recipe scaling)
- Added realistic future items (sharing, meal planning, nutrition)

### Contributing
- Added contribution guidelines
- Emphasized test coverage requirements

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Paul R Kartchner
2026-01-16 22:04:43 -07:00
parent b4be894470
commit 2171cf6433

117
README.md
View File

@@ -5,10 +5,21 @@ A modern, full-stack recipe manager with web and mobile support. Import recipes
## Features
- **Recipe Import**: Automatically import recipes from URLs using schema.org markup
- Add tags during import for instant organization
- Works with 600+ supported recipe sites plus any site with schema.org markup
- Preview recipe before saving with immediate tag management
- **Full Recipe Management**: Create, read, update, and delete recipes
- **Rich Recipe Data**: Store ingredients, instructions, prep/cook times, servings, images, and more
- **Tag Organization**: Quick tagging system with autocomplete for rapid recipe organization
- Add/remove tags inline on recipe detail view
- Tag recipes during import
- Filter recipes by tags
- **Recipe Scaling**: Adjust serving sizes with automatic ingredient scaling
- **Cookbooks**: Organize recipes into collections with auto-filtering by tags and categories
- **Search & Filter**: Find recipes by title, cuisine, category, or tags
- **Multiple Images**: Add multiple images to each recipe
- **User Authentication**: Secure multi-user support with email/password and OAuth
- **Backup & Restore**: Complete data backup including recipes, cookbooks, and images
- **Flexible Storage**: Local filesystem storage by default, optional S3 support
- **Docker Support**: Easy deployment with Docker Compose
- **API-First Design**: RESTful API for web and future mobile apps
@@ -26,8 +37,17 @@ A modern, full-stack recipe manager with web and mobile support. Import recipes
- Node.js 20+
- PostgreSQL 16+ (or use Docker)
- Python 3.x with pip (for recipe scraper)
- Docker (optional, for containerized deployment)
**Python Dependencies:**
The recipe import feature requires Python 3 and the `recipe-scrapers` package:
```bash
pip3 install recipe-scrapers
```
For Docker deployments, Python dependencies are automatically installed in the container.
### Development Setup
1. **Clone the repository**
@@ -110,9 +130,29 @@ basil/
### Importing a Recipe
1. Navigate to "Import Recipe" in the web app
2. Paste a recipe URL (from sites like AllRecipes, Food Network, etc.)
3. Preview the imported recipe
4. Save to your collection
2. Paste a recipe URL (supports 600+ sites including AllRecipes, Food Network, King Arthur Baking, etc.)
3. Click "Import Recipe" to fetch and parse the recipe
4. Preview the imported recipe details
5. Add tags using the quick tag input at the top (with autocomplete)
6. Press Enter after each tag for rapid multi-tag addition
7. Save to your collection
The recipe importer works with any website that uses schema.org Recipe markup, even if not officially supported by recipe-scrapers.
### Managing Tags
**Quick Tag Management:**
- On recipe detail pages, use the inline tag input next to the servings adjuster
- Press Enter after typing each tag for rapid multi-tag addition
- Focus stays in the input field for quick consecutive tagging
- Autocomplete suggests existing tags as you type
- Click the × button on any tag to remove it
**Tag-based Organization:**
- Filter recipe list by tag name
- Use tags to organize recipes by cuisine, meal type, dietary restrictions, etc.
- Tags are automatically created when first used
- Rename or delete unused tags from the Tags page
### API Examples
@@ -139,10 +179,61 @@ curl -X POST http://localhost:3001/api/recipes \
],
"instructions": [
{"step": 1, "text": "Preheat oven to 350°F"}
]
],
"tags": ["dessert", "cookies", "quick"]
}'
```
**Update recipe tags:**
```bash
curl -X PUT http://localhost:3001/api/recipes/:id \
-H "Content-Type: application/json" \
-d '{
"tags": ["italian", "dinner", "vegetarian"]
}'
```
**Filter recipes by tag:**
```bash
curl http://localhost:3001/api/recipes?tag=dessert
```
## Testing
Basil includes comprehensive test coverage with unit and integration tests:
```bash
# Run all tests
npm test
# Run tests with coverage report
cd packages/api
npm run test -- --coverage
# Run specific test file
npx vitest run src/routes/recipes.routes.test.ts
```
### Test Coverage
- **Overall**: 77.6% coverage
- **Routes**: 84% coverage
- recipes.routes.ts: 87%
- tags.routes.ts: 92%
- cookbooks.routes.ts: 88%
- backup.routes.ts: 74%
- auth.routes.ts: 37%
- **Services**: 66% coverage
- **Utils**: 100% coverage
Test suite includes:
- 377+ passing tests across 21 test files
- Unit tests for all route handlers
- Integration tests for API endpoints
- Real integration tests for recipe scraper (live URL testing)
- Authentication and authorization tests
- Backup and restore functionality tests
## Configuration
### Storage Options
@@ -212,13 +303,16 @@ npm run prisma:studio
## Future Enhancements
- [ ] Mobile apps (React Native for iOS and Android)
- [ ] User authentication and multi-user support
- [ ] Recipe sharing and social features
- [ ] Meal planning and grocery lists
- [ ] Nutritional information calculation
- [ ] Recipe scaling (adjust servings)
- [ ] Print-friendly recipe view
- [ ] Recipe collections and cookbooks
- [ ] Print-friendly recipe view with custom formatting
- [ ] Recipe ratings and reviews
- [ ] Shopping list generation from recipes
- [ ] Ingredient substitution suggestions
- [ ] Recipe notes and personal modifications
- [ ] Advanced search with multiple filters
- [ ] Recipe version history
## License
@@ -227,6 +321,9 @@ MIT
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
# Pipeline Test - 2026-01-14-23:05:33
<!-- Pipeline test: Clean error suppression - 2026-01-15-01:32:13 -->
When contributing:
1. Write tests for new features (maintain 80%+ coverage)
2. Follow existing code style and conventions
3. Update documentation as needed
4. Ensure all tests pass before submitting PR