From 2171cf6433a9e3a5f6a26ef0a5b2b6abb29d8987 Mon Sep 17 00:00:00 2001 From: Paul R Kartchner Date: Fri, 16 Jan 2026 22:04:43 -0700 Subject: [PATCH] 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 --- README.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 107 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a265fe9..e5de7d3 100644 --- a/README.md +++ b/README.md @@ -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 - +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