Skip to content

Latest commit

 

History

History
52 lines (45 loc) · 5.15 KB

File metadata and controls

52 lines (45 loc) · 5.15 KB

Личен блог

Направете уеб приложение за мултиезичен блог.

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

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

Бележки

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

Подобни теми

  • Сайт като IMDB - бази от данни за филми. Вместо одобрение на коментари може се поддържат рейтинги на филми.
  • Сайт за онлайн уроци. Може да се поддържа вграждане на видеа от YouTube.
  • Форум - статиите се приравняват на теми, а коментарите - на отговори в съответната тема.
  • Сайт за въпроси и отговори (като StackOverflow).
  • Сайт, подобен на wikipedia.