Skip to content

kilinich-v/slim-mom-backend

Repository files navigation

REST API SlimMom

Якщо ви - мама, яка хоче схуднути після народження дитини, то в цьому допоможе додаток SlimMom.

Опис

  • Користувачу необхідно зареєструватись у додатку й на сторінці "Калькулятор" поставити ціль, до якої ваги він хоче схуднути. Крім цього необхідно ввести інформацію про свій зріст, теперішню вагу, вік та групу крові. Додаток підраховує добову норму споживання кілокалорій та виводить список категорій нерекомендованої їжі.
  • На сторінці "Щоденник" користувач може додавати продукти до споживання. Додаток підраховує калорії в цей день і виводить інформацію, яку частину кілокалорій спожито від добової норми, скільки кілокалорій ще можна спожити в цей день.
  • За допомогою календаря на сторінці "Щоденник" можна проглядати, у який день скільки калорій було спожито, де норма була дотримана, а де перевищена

Залежності проекту

У розробці REST API були використані пакети:
  1. Сервер: Express
  2. Валідація запитів: Joi
  3. База даних: Mongo DB
  4. Інтерфейс БД: Mongoose
  5. Створення токенів: JWT
  6. Шифр паролів: Bcrypt
  7. Документація API: Swagger
У базі данних використовуються 3 колекції: - користувачі (users) - продукти (products) - продукти по даті (productsperdates)

Графічний інтерфейс бази данних - в MongoDB Compass

Основні Ендпоінти

@ POST /users/signup - реєстрація користувача

@ POST /users/login - логінізація користувача

@ POST /users/logout - вилогування

@ POST /users/public - публічний роут для сторінки "Калькулятор"

@ POST /users/private - приватний роут для сторінки "Калькулятор"

@ GET /users/current - перевірка логінізації користувача при перезавантаженні сторінки додатку в браузері

@ GET /products/search - ендпоінт для пошуку всіх назв продуктів за фільтром

@ POST /products - додає продукт

@ DELETE /products/:productId - видаляє продукт за id

@ GET /products/:date - виводить усі спожиті продукти за певну дату

Детальна документація ендпоінтів

Запуск сервера

Використовуються скрипти з package.json:
  • Для розробки: "start:dev": "cross-env NODE_ENV=development nodemon ./bin/server.js",
  • Для продакшну: "start": "cross-env NODE_ENV=production node ./bin/server.js"