Сайт Анонімних Дарульвальників

Проект натхненний різдвяною традицією «Таємного Санти» (також відомого як «Таємний Миколай»), але він не фокусується на конкретних святкуваннях чи подіях. Основна мета - створити в інтернеті місце, де люди можуть збиратися в групи і анонімно дарувати один одному подарунки.

Ключові особливості

Списки побажань

Будь-який зареєстрований користувач може створювати і змінювати власні списки бажань. Список бажань, як правило, є приватним і не видимим для інших користувачів, якщо тільки вони не призначені дарувальником для власника списку.

Багаточисельні кампанії з роздачі подарунків

Користувачі можуть долучатися до кількох кампаній без обмежень.

Персональні нагадування

Користувачам з порожніми списками бажань буде запропоновано додати туди щось. Так само неактивним користувачам буде запропоновано приєднатися до вже існуючої кампанії з дарування подарунків.

Адміністрація не може втручатися

Адміністратори сайту модерують списки бажань і підтримують кампанії з дарування подарунків. Але вони не можуть створювати власні кампанії, змінювати або видаляти існуючі кампанії, створені іншими користувачами.

Реєстрація та аутентифікація користувачів

  • Анонімні користувачі можуть отримати доступ до будь-якої загальнодоступної сторінки.

  • Анонімні користувачі можуть зареєструватися, вказавши ім’я користувача, повне ім’я та пароль.

  • Анонімні користувачі можуть увійти до свого облікового запису.

  • Авторизовані користувачі можуть вийти з системи в будь-який час.

Списки побажань

Список бажань - це особиста колекція бажаних подарунків.

  • Список побажань створюється для будь-якого зареєстрованого користувача, окрім адміністраторів.

  • Перед тим, як користуватися сайтом, користувачі повинні додати принаймні один пункт до свого списку бажань.

  • Список побажань доступний лише його власнику та адміністраторам сайту.

  • Список бажань тимчасово доступний іншим користувачам, призначеним дарувальником його власнику.

  • Власники можуть додавати, змінювати або видаляти записи у своїх списках бажань.

  • Адміністратори можуть позначити будь-яку позицію списку бажань як обмежену, і тоді вона буде діяти як видалена.

Кампанії з роздачі подарунків

  • Користувачі, які не є адміністраторами, можуть створювати власні кампанії з дарування подарунків.

  • Кожна кампанія повинна мати назву, опис та список учасників.

  • Творець кампанії автоматично стає учасником і не може бути виключений.

  • Статус кампанії може бути чернетка, публічна, приватна або завершена.

  • Адміни або творець кампанії можуть запустити кампанію, якщо в ній є щонайменше 3 учасники.

  • Приєднатися до кампанії після її початку неможливо.

  • Будь-який користувач, окрім автора, може вийти з кампанії, якщо вона не розпочалася.

  • Творець може видалити неактивні кампанії незалежно від списку учасників, часу створення або статусу.

  • Адміністратори можуть видаляти кампанії з 3 або менше учасниками, які не розпочалися протягом певного часу.

  • Адміністратори можуть видаляти чернетки кампаній, які не були опубліковані протягом певного часу.

  • Кількість кампаній, в яких може брати участь користувач, обмежена кількістю пунктів у його списку бажань.

Проекти (чернетки) кампаній

  • Жоден користувач не може приєднатися до неопублікованної кампанії.

  • Кампанії за замовчуванням позначаються як чернетки під час створення.

  • Автор може опублікувати кампанію, зробивши її приватною або публічною.

  • Чернетки кампанії не можуть бути ініційовані.

Публічні кампанії

  • Публічні кампанії доступні як анонімним, так і авторизованим користувачам.

  • Авторизовані користувачі можуть приєднатися до будь-якої публічної кампанії, якщо вона ще не розпочалася.

Приватні кампанії

  • Приватні кампанії доступні тільки їх учасникам.

  • Творець кампанії може поділитися посиланням для приєднання з іншими користувачами.

  • Після приєднання кампанія стає видимою у списку кампаній користувача.

Завершені кампанії

Насправді це означає, що кампанія завершена і заархівована. Адміністратори можуть видалити заархівовані кампанії в будь-який час (очищення кампаній). Кампанії, що тривають, не можна вручну перевести в статус завершених. Це відбувається автоматично.

Життєвий цикл кампанії

stateDiagram-v2 state Public { state start_condition_public <<choice>> state "started" as started_public state "gather members" as members_public [*] --> members_public members_public --> start_condition_public start_condition_public --> members_public: less than 3 start_condition_public --> started_public: 3 or more members started_public --> [*] } state Private { state start_condition_private <<choice>> state "started" as started_private state "send invitations" as members_private [*] --> members_private members_private --> start_condition_private start_condition_private --> members_private: less than 3 start_condition_private --> started_private: 3 or more members started_private --> [*] } [*] --> Draft Draft --> [*]: Remove state publish_campaign <<fork>> Draft --> publish_campaign publish_campaign --> Public publish_campaign --> Private state completed <<join>> Public --> completed Private --> completed completed --> [*]

Проведення кампанії з роздачі подарунків

  • Можливість запускати кампанії доступна їхнім творцям або адміністраторам.

  • Після початку кампанії ніхто не може приєднатися до неї або вийти з неї.

  • Кожному учаснику кампанії доручено подарувати подарунок випадково обраній людині з того ж списку учасників кампанії.

Доступ до списку бажань для дарувальника

  • Список побажань призначеної особи стає видимим для дарувальника.

  • Дарувальник може позначити будь-яку позицію з цього списку як подарунок.

  • Після вручення подарунка список бажань повертається до нормального стану.

  • Пункт списку бажань, позначений як подарований, не може бути змінений іншими дарувальниками.

Кілька подарунків

Зазвичай, кампанії дозволяють дарувати один подарунок за раз. Однак, якщо користувач двічі призначений одному і тому ж дарувальнику з різних кампаній, дарувальник може позначити стільки записів, скільки має призначень.

Автозавершення

Як тільки всі завдання в рамках кампанії виконані, сама кампанія вважається завершеною.

REST API

Всі функції сайту будуть реалізовані за допомогою REST API.