Repository navigation
Releases
0.1.8
FoodSaver — Internationalization
Why?
FoodSaver is now available in both 🇬🇧 English and 🇫🇷 French.
🧭 What's new
UI
- Add language toggle (🇫🇷 / 🇬🇧)
- Improve dashboard readability for bilingual usage
- Localized food expiry dates
- Preserved functionality across both languages
This makes FoodSaver easier to use for French-speaking households while keeping full English support.
0.1.7
FoodSaver — Low stock insights
Why?
FoodSaver now helps identify foods that are running low before they are forgotten during shopping.
🧭 Changes
- Add low stock
- Indicator for foods with quantity equal to 1
- Inventory filter
- Dashboard insight
- Improve inventory visibility for shopping planning
🧪 Validation
- Validate low stock
- Dashboard metrics
- Badge display
- Filtering behavior
0.1.6
FoodSaver — Dashboard insights
🧭 Why?
This release adds a dashboard overview to give a quick understanding of your food inventory at a glance.
📊 Inventory overview
You can now see about foods displayed in the list:
- Total number of foods
- Total quantity available
- Foods expiring today
- Foods expiring soon
📈 Global insights
The dashboard now also highlights global stock informations:
- Next expiring food
- The percentage of foods expiring soon
This helps quickly assess how much of your inventory needs attention.
♿ Accessibility
- Improved contrast of badges for better readability (WCAG 2 AAA checks)
🔧 Technical improvements
- Improved dashboard selectors structure
- Added dashboard E2E critical feature coverage
0.1.5
FoodSaver — Food list filtering and sorting
🧭 Why?
Improve food list usability by allowing users to focus on relevant items and organize their view.
🚀 Changes
- Add filter by expiry state
- Today
- Soon
- All fresh foods
- Add sorting by name and expiry date
- Integrate UI state into global store for consistency with existing search behavior
🧠 UX impact
- Easier prioritization of foods close to expiry
- Improved list readability for larger datasets
0.1.4
FoodSaver — Search
Why?
Finding foods is now faster and easier as your inventory grows.
🧭 What's New
Search foods by name
You can now quickly find foods using the search bar instead of scrolling through the entire list.
🧠 Smarter matching
Search is case-insensitive, so searches such as milk, Milk, or MILK return the same results.
🚀 Faster results
Results are filtered as you type and match foods whose names start with the entered text, helping you find items more quickly.
🧪 Behind the Scenes
This release also includes improvements to application reliability and automated testing to support future features and maintain a consistent experience as the project grows.
0.1.3
FoodSaver — Smarter persistence & performance foundation
🚀 What’s new
FoodSaver moves to a more robust relational persistence layer powered by SQL Server, improving reliability and long-term scalability.
🧠 Improvements
- Replace SQLite with SQL Server for data persistence
- EF Core migrations manage database schema automatically
⚡ Performance & scalability
- Faster expiry-based queries
- Relational model prepared for production deployments
- Environment-based configuration (dev / prod ready)
🔧 Developer experience
- Local development supported via SQL Server Docker
- Connection strings managed via environment variables or user secrets
🧪 Verified flows
- Create food item
- Update food item
- Consume food item
- Query food list (optimized read path)
💡 Notes
This release is a foundational step toward production readiness.
It introduces no breaking changes to the API contract, but significantly upgrades the persistence layer.
0.1.2
FoodSaver — Import Tool
Why?
FoodSaver can now import food items in bulk from a CSV file.
This makes it faster to populate inventory without adding items manually one by one.
🧭 Highlights
- Import food items from CSV
- Preview imports with dry-run mode
- Validate imported data before sending to API
- Automatically skip invalid rows
- Import directly into FoodSaver.Api
Examples
./tools/FoodSaver.Import.cs foods.csv
./tools/FoodSaver.Import.cs foods.csv --dry-run
./tools/FoodSaver.Import.cs foods.csv --base-url http://localhost:50500.1.1
FoodSaver — Lighthouse
Why?
Improve Lighthouse scores to strengthen SEO visibility and ensure a fast, accessible baseline experience.
🔎 SEO
- Add meta description for better search engine indexing
- Add robots.txt for crawler discovery
⚡ Performance
- Render app shell immediately while foods load
- Improve Largest Contentful Paint (2.5s → 1.3s)
- Reach 100/100 Lighthouse scores (Performance, Accessibility, Best Practices, SEO)
📊 Results
- SEO: 82 → 100
- Performance: 97 → 100
0.1.0
FoodSaver — MVP
FoodSaver reaches its first MVP release.
Track food expiry dates simply and reduce household waste.
🧭 Included features
- Add food items with expiry dates
- Track food quantities
- Highlight food expiring soon or today
- Consume one or all quantities
- Accessible and lightweight interface
⚙️ Technical highlights
- ASP.NET Core + Minimal API backend
- React + TypeScript frontend
- SQLite persistence
- End-to-end and integration test coverage
- Accessibility checks included in CI workflow
📚 Documentation
- Simplified project README
- Reviewed architecture decision records
- Documented MVP scope
0.0.14
FoodSaver — UX & DX improvements
Why?
This release finalizes MVP UX and DX enhancements.
🧭 Changes
- Add quantity-based food consumption
- Add “consume 1” and “consume all” actions
- Add undo/confirm flow for consumption
- Add “expiring today” badge
- Improve responsive layout for food list
- Center app layout for improved visual balance
♻️ Improvements
- Inline snackbar actions into list items
🧹 Cleanup
- Simplify error message markup and spacing
- Remove unused UI color token
- Remove redundant aria attributes
- Optimize Docker image size