diff --git a/content/docs/2025/Endpool/week6.md b/content/docs/2025/Endpool/week6.md new file mode 100644 index 000000000..c2dd628bc --- /dev/null +++ b/content/docs/2025/Endpool/week6.md @@ -0,0 +1,213 @@ +--- +title: "Week #6" +--- + +# **Week #6** + +## Links + +- **Deployment**: @cookcookhnyabot +- **API Docs**: http://10.90.137.177:8080/docs + +## Final deliverables + +### Project Overview + +**CookCookhNya** is a smart cooking assistant that helps people find recipes based on what they already have at home. It solves a simple but common problem: when you open your fridge and don't know what to cook. + +#### What It Does +- Shows you recipes you can make right now with your available ingredients +- Creates shopping lists for missing items when you pick a recipe +- Lets you save your own recipes and share them with others +- Works for households - multiple people can use the same storage + +#### Main Features +1. **Your Kitchen Storage** + - Add or remove ingredients you have + - See everything you've got in one place + +2. **Smart Recipe Finder** + - Gets recipe ideas based on what's in your kitchen + - Works with multiple people's storages combined + +3. **Shopping Lists** + - Automatically shows what to buy for recipes you choose + - Saves time and reduces food waste +4. **Custom ingredients** + - Unmentioned in our database ingredient? Add it by yourself! +4. **Your Recipes** + - Create your custom recipes and share them + + + +We made CookCookhNya to make cooking simpler and help people use what they already have. It's perfect for students, families, or anyone who cooks at home. + +### Features + +- Creating and deleting storages +- Viewing storages` members and ingredients +- Adding ingredients to storages +- Adding another users to storages +- Offering a user list of recipes based on ingredient in one or multiple storages +- Generating a shopping list for user based on missing ingrediens for chosen recipe +- Personal profile with ability to create custom ingredients and recipes, and even publishing them to public + + +### Tech stack + +#### Backend +- Scala +- PostgreSQL +- zio - effect system +- tapir - endpoint definition +- quill & magnum - database management +- circe - json serialization +- zio-test - testing + + +#### Frontend +- C++ +- Telegram +- TgBotStater (https://github.com/Makcal/TgBotStater) - main framework, used for Telegram bot development +- Boost - for working with JSON and UUID +- cpp-httplib - for communication with backend + +#### Devops +- Docker, Docker Compose - containerisation and orchestration +- GitHub Actions - CI/CD +- Loki, Promtail - log scapping and storing +- Cadvisor, postgres-exporter, Prometheus - metric scrapper +- Grafana - visualisation +- Nginx - reverse proxy (for webhook setup) + +### Setup instructions + + +1. Create a new directory; +2. Clone repo with +```bash +git clone git@github.com:Endpool/CookCookhNya.git +``` +3. Run +```bash +git submodule init && git submodule update +``` +4. Create a bot at [@BotFather](https://t.me/BotFather) (don't forget to enable inline mode in settings) +5. Create `.env` specifying your `BOT_TOKEN` in the same directory +```bash +cp .env.example .env +``` +6. Run +```bash +docker compose up --build +``` + + +# Weekly commitments + +## Individual contribution of each participant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Team memberContribution
Maxim Fomin (lead + frontend) +
    +
  • Migration to UUID - PR
  • +
  • Big refactor - PR
  • +
  • Webhooks - PR
  • +
  • Improved logging and webhook support in TgBotStater - Changes
  • +
  • Shopping list improvement - PR
  • +
+
Ilia Kliantsevich (frontend) +
    +
  • Custom recipe connection to backend CRUD - PR
  • +
  • Big refactor - PR
  • +
  • Shopping list refactor- PR
  • +
  • Pagination for ingredient search in storage - PR
  • +
+
Amirkhan Kurbanov (frontend) +
    +
  • API refactor - PR
  • +
  • Big refactor - PR
  • +
+
Daniel Gevorgyan (UI/UX + backend) +
    +
  • Recipes tests - PR
  • +
  • Migrate some of database layer from Magnum to Quill - PR
  • +
  • Personal recipes crud - PR
  • +
  • Authorize get suggested recipes endpoint - PR
  • +
  • Custom recipes - PR
  • +
  • Filter for /ingredients search - PR
  • +
  • Custom recipes ingredients Add and Delete operations - PR
  • +
  • Add DELETE /recipes/:recipeId endpoint - PR
  • +
+
Vadim Ksenofontov (backend) +
    +
  • Moderator Interface - PR
  • +
+
Aleksandr Gorbanev (backend) +
    +
  • Ingredient creation fix - PR
  • +
  • Ingredient publication req - PR
  • +
  • Change models - PR
  • +
  • Buy products - PR
  • +
  • Search for recipe - PR
  • +
  • Storage Ingredietns pagination - PR
  • +
  • Shopping list pagination - PR
  • +
+
Rashid Badamshin (DevOps) +
    +
  • Configured metrics endpoint for observability purposes - PR
  • +
  • Congiifured Prometheus to scrapping /metrics
  • +
  • Visualised handlers response time in grafana
  • +
  • Setup nginx reverse proxy service with self-assigned authority for webhooks integration
  • +
+
+ +## Plan for Next Week + +- DB normalisation +- Refactor +- Perfomance optimisation +- Moderation of custom ingredients and recipes +- Suggest spend products after cooking a recipe + +## Confirmation of the code's operability + +We confirm that the code in the main branch: +- [+] In working condition. +- [+] Run via docker-compose (or another alternative described in the `README.md`).