This is a Next.js project bootstrapped with create-next-app
.
-
Configure Typescript and NextJS.
-
Configure i18n for NextJS and React app.
-
Consider advantages of logged in users (Store custom added data? Where/How?).
- Check availability Twitter log in.
- Check availability Google log in.
-
Make initial fetch to a food database:
- ❌ MyFitnessPal: CORS violation, private API.
- ❌ FoodRepo.org: almost no images, not in spanish, inacurate search.
- ✅ OpenFoodFacts: success, but no results for non-brand generic foods (potato, bread...).
- ⬜ USDA API: only in English, but allows both branded and generic food search.
- ✅ BEDCA: generic food only, requests and responses must be XML formatted.
-
Configure architecture to be able to use multiple data sources.
-
Postponed: Save preferences about preferred units and data sources.
- Select food from incoming external database fetched data.
- Display selected food macronutrients and information.
- Compare two selected foods.
- Conversion between foods selecting one or more macronutrients.
- The food amount will be according to the first macronutrient limit reached.
- Change selected foods on conversion page.
- Be able to switch selected foods.
- Change on demand source to get food data: deprecated as now all calls to all sources are made parallel.
- Add capability to add custom food data and show it in results.
- Use custom food in comparison and conversion functionalities.
- Add full CRUD operations for added custom foods.
- Add capability to edit personal settings (language, preferred units, preferred data sources...).
- Add different language translations and capability to change selected language.
- Add measurement equivalences in conversion (100g -> 6 tablespoon).
- Conversion between more than 2 selected foods to be able to compare.
- Highlight the food with overall closer values.
- Redesign app appearance and UX.
First, install all dependencies and lbiraries running:
npm i
Once installed, run the development server:
npm run dev
# or
yarn dev
Open http://localhost:3000 with your browser to see the result.