DOU Проектор: KPI Events - всі заходи в одній стрічці

У рубриці DOU Проектор всі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власної made in Ukraine продукту. Питання і заявки на участь надсилайте на editors@dou.ua .

Добрий день, мене звати Євген Козак. Я випускник і співробітник КПІ, а також CEO IT-співтовариства в Київському політехнічному інституті — KPIhub . Займаюся різними низовими ініціативами в КПІ, зокрема у галузі IT. Приблизно рік тому я писав про історію створення одного з наших студентських проектів — віртуального туру по кампусу КПІ . Зараз хочу розповісти про ресурс календаря подій — KPI Events .

Ідея

Студенти — одна з найбільш активних категорій людей, і вони є рушійною силою в ініціативі та проведення заходів у різних сферах (наука, спорт, відпочинок тощо). Кожен день проходить безліч цікавих відкритих лекцій, конференцій, стажувань, зустрічей і багато-багато всього.

Дуже складно іноді відстежити цікаві для себе події без єдиного ресурсу, де б такі заходи були зібрані і класифіковані. Як показала практика, найкращі вузи світу створили самі для себе подібні ресурси (автономні системи подій), наприклад, MIT , Гарвард .

Ідея реалізувати такий pet-проект з'явилась і у нас. Не з першого разу, але у нас вийшло зібрати команду і запустити продукт, інтегрувати його з іншими сервісами і відпустити в плавання.

Реалізація

Я почав з написання ТЗ, яке ми затвердили з адміністрацією КПІ, так як це офіційний ресурс університету і розміщений в його домені. Такого online-ресурсу в КПІ не було, тому нам легко і швидко дали «зелене» світло. Ідею підтримали на рівні ректорату.

Ми зібрали команду з 4-х осіб: PM проекту — це я , головний програміст — Олексій , два аналітика та тестувальника — Вова і Макар ). Розгорнули менеджмент в Trello, поставили дедлайни і почали роботу.

Усією технічною частиною займався Льоша. Першим ділом треба було визначитися зі стеком технологій, який найкраще підходив для проекту. На той момент Льоша непогано знав Java EE і грався з Python. У підсумку для реалізації проекту, на його думку, більше підійшов Python разом з його веб-фреймворком Django.

Цей фреймворк дозволяв в короткі терміни зробити готовий прототип, а також легко масштабувати додаток. Льоша взявся проектувати задумане нашою командою KPIhub. Для БД вибрали MySql, її можливостей цілком вистачало для такого простого CRUD програми. Так як цей проект націлений на студентів, які часто сидять в інтернеті зі смартфонів, нам потрібен був адаптивний сайт. І тут було вирішено використовувати для адаптивної CSS верстки Framework Bootstrap.

Основні можливості нашого сервісу: пропонувати події, сортувати їх по даті і категоріями, додавати події в свою персональну стрічку і переглядати події від обраної організації.

Для реалізації всього цього було недостатньо простого functional based views у Django, і ми використовували class based views. Це дозволило впровадити корисні фічі ООП. Всі дані категорій, подій і організацій треба якось розподілити в нашій БД. Для цього спроектували таку структуру для події:

Командою ми вирішили, що викладати події будуть організації, які попередньо повинні були пройти верифікацію у модераторів KPI Events. Представники організації отримують доступ до адмінки кабінету їх організації на сайті і викладають події там від імені своєї організації.

Щоб будь-який користувач міг легко розібратися з админпанелью, ми написали власний максимально простий веб-інтерфейс для адміністрування організації, який теж адаптований під мобільні пристрої.

Приклад інтерфейсу для організації KPI Events:

Командою ми вирішили, що до релізу у користувача повинна бути можливість додавати події до себе в Google календар, дайджест подій на день повинен викладатися на наш Telegram канал автоматично. Для реалізації фічі з календарем Google довелося розібратися з Google Calendar API, і вже через день ця фіча була готова.

З телеграмом теж все просто: створюємо Telegram Bot, встановлюємо либу для Telegram Bot API і пишемо скрипт, який дістає всі події на поточний день і відправляє на наш канал. Залишилося тільки викликати цей скрипт кожен день в певний час. Беремо cron і прописуємо, в який час запускати наш скрипт, і все готово. Можна було прописати настройки прямо на сервері через crontab, але краще нехай ці налаштування зберігаються в самому проекті. Для цього беремо бібліотеку django-crontab і записуємо все у себе:

Також чимало часу було приділено фронтенду, а саме грамотному розподілу кнопок, іконок і фільтрів. З логотипом нам допомогла наша знайома Настя .

Результат

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

Створений канал в Telegram , куди в автоматичному режимі генеруються дайджести подій. Завдяки великому інтересу ком'юніті КПІ на нас почали активно підписуватися і репостить в інші великі канали. Трохи більше, ніж за 2 тижні на нашому каналі вже 500+ передплатників, і він входить в ТОП-80 каналів України. Також було кілька тематичних заміток на офіційних ресурсах університету. Ми намагаємося далі придумувати цікаві штуки і автоматизувати роботу ресурсу.

Проект буде цікавий не тільки студентам університету, але й всім мешканцям Києва, так як в КПІ проходить багато заходів з відкритим доступом для всіх. У свою чергу абітурієнти не пропустять дні відкритих дверей або просто подивляться, що і коли проходить в університеті, і зможуть відвідати захід.

В перспективі можемо розглядати впровадження такого продукту в інших університетах і сферах.

Опубліковано: 05/12/17 @ 11:00
Розділ Різне

Рекомендуємо:

Шлях стажиста: Provectus
AI & ML дайджест #6: вміє бізнес користуватися AI, законодавство, перспективи професії
Робочі місця 54 SEO фахівців
Листопад 2017 — финстрип за інфо-сайтів, фільтрів не зловив, дохід підняв
Штучний інтелект в медицині: тренди та можливості