Направете уеб приложение за мултиезичен блог.
- Добавяне, промяна и изтриване на статии. Всяка статия може да съдържа:
- Заглавие
- Картинка
- Текст с възможност за форматиране на отделни части - bold, italic, линкове и подзаглавия
- Произволен брой тагове
- Да се поддържат поне два езика както за сайта (заглавие, бутони и т.н.), така и за статиите в него. Да може да се превключва между тези езици чрез бутон и да се пази избора при навигация из сайта.
- Списък от всички активни статии, заедно с картинките им, брой коментари и дата на публикуване. Възможност за сортиране на статиите по поне два критерия, например дата на публикуване и брой коментари.
- Списък от всички използвани в статии тагове. Възможност за показване на всички статии от определен таг.
- Система за потребители с логин/регистрация/забравена парола
и поне 2 ранга - администратор и обикновен потребител:
- Администраторите:
- Създават/променят/изтриват статии
- Управляват коментари
- Управляват потребители, включително да правят други потребители администратори
- Обикновените потребители могат да се регистрират свободно, но имат ограничени права.
- Администраторите:
- Всяка статия може да се коментира от регистрирани потребители:
- Администраторите могат да изтриват и променят коментари на други потребители.
- Коментарите също трябва да поддържат възможности за просто форматиране.
- Възможност статия да бъде маркирана като неактивна. Неактивните статии не се виждат от потребители, които не са администратори.
- Напишете сами системата за регистрация/вход/забравена парола. Без gem-ове като devise или warden. Разбира се, може да използвате библиотеки за сесии и cookie-та (например тези, които са пакетирани в Sinatra). Паролите не трябва да се съхраняват в чист вид. Трябва да са поне хеширани - прочетете за добрите практики по темата.
- Валидирайте максимално много неща и показвайте смислени съобщения за грешки.
- Използвайте релационна база от данни. Например SQLite3. За целта ще ви трябва sqlite3 gem-а, или пък може да ползвате направо някакъв ORM, например ActiveRecord - вижте ръководството ни за уеб проекти.
- Постарайте се да покриете максимална част от кода си с автоматизирани тестове и да направите добро разделение между "логика" и "интерфейс". Това индиректно означава, че не трябва да има много код директно в Sinatra DSL-а. Не се притеснявайте да правите допълнителни класове. Задачите на един подобен клас може да е дори изпълнение на някакво действие.
- Сайт като IMDB - бази от данни за филми. Вместо одобрение на коментари може се поддържат рейтинги на филми.
- Сайт за онлайн уроци. Може да се поддържа вграждане на видеа от YouTube.
- Форум - статиите се приравняват на теми, а коментарите - на отговори в съответната тема.
- Сайт за въпроси и отговори (като StackOverflow).
- Сайт, подобен на wikipedia.