Skip to content

Latest commit

 

History

History
43 lines (37 loc) · 4.81 KB

web_store.md

File metadata and controls

43 lines (37 loc) · 4.81 KB

Онлайн магазин

Направете онлайн магазин за определен вид (избран от вас) продукти.

Функционалности

Като минимум, системата трябва да поддържа следните неща:

  • Добавяне/промяна/изтриване на продукти. Всеки продукт съдържа поне заглавие, описание, категория, цена и определени функционални характеристики. Тези характеристики зависят от вида продукти. Например, ако продавате обувки това може да са "цвят", "размер", "мъжки/дамски/унисекс", "с или без връзки" и подобни.
  • Търсене на продукти по заглавие, категория и конкретни характеристики.
  • Възможност за задаване на наличността на всеки продукт.
  • Система за потребители с логин/регистрация и поне 2 ранга - администратор и обикновен потребител:
    • Администраторите имат възможност да управляват всички данни в приложението:
      • Могат да променят данните за продуктите.
      • Виждат история на поръчките.
      • Управляват потребители, включително да правят други потребители администратори.
    • Обикновените потребители могат да се регистрират свободно, да купуват продукти и да ги коментират.
  • Възможност правене на поръчки след регистрация.
    • Купуването става чрез добавяне на един или повече продукта към "кошницата" на потребителя. В кошницата се виждат добавените продукти и цените им, както и общата стойност на поръчката.
    • Потребителя трябва да потвърди, че иска да закупи всички продукти от кошницата, за да направи поръчката.
    • След като поръчката бъде направена - тя се вижда от администраторите, които могат да я маркират като завършена.
  • Всеки потребител трябва да има история на поръчките си.
  • Всеки трябва да може да коментира продукти. Администраторите могат да изтриват коментари.

Бележки

  • Напишете сами системата за регистрация/вход. Без gem-ове като devise или warden. Разбира се, може да използвате библиотеки за сесии и cookie-та (например тези, които са пакетирани в Sinatra). Паролите не трябва да се съхраняват в чист вид. Трябва да са поне хеширани - прочетете за добрите практики по темата.
  • Валидирайте максимално много неща и показвайте смислени съобщения за грешки.
  • Използвайте релационна база от данни. Например SQLite3. За целта ще ви трябва sqlite3 gem-а, или пък може да ползвате направо някакъв ORM, например ActiveRecord - вижте ръководството ни за уеб проекти
  • Постарайте се да покриете максимална част от кода си с автоматизирани тестове и да направите добро разделение между "логика" и "интерфейс". Това индиректно означава, че не трябва да има много код директно в Sinatra DSL-а. Не се притеснявайте да правите допълнителни класове. Задачите на един подобен клас може да е дори изпълнение на някакво действие (например, правене на поръчка).