- Команда: H2O
- Напрямок WEB Development
Раді поділитись з вами нашим додатком, який є майданчиком для благодійних аукціонів. За допомогою додатку користувачі можуть створювати та редагувати свої лоти, переглядати лоти інших учаників, робити ставки на лотах, що їх зацікавили, а також дивитись історію ставок та активних користувачів на лотах.
- Завантажити репозиторій
- З корневої папки репозиторію виконати команду
docker compose up
- В браузері відкрити адресу http://localhost:5173
- Публікація нових лотів
- Менеджмент своїх лотів (редагування, закриття)
- Перегляд усіх лотів
- Ставлення ставок на лоти
- Перегляд історії ставок та активних учасників аукціону
- Сортування лотів за ціною та датою створення, а також фільтрація за назвою лоту
Створити новий лот може кожен користувач платформи. Для створення, користувачу необхідно заповнити форму з параметрами аукціону, додати одне головне фото, та, опціонально, декілька фото для галереї. Після створення, аукціон на доданий лот вважається активним.
Користувачі можуть редагувати свої аукціони, які ще не були закриті (на яких немає переможця).
Сторінка з усіма лотами є головною сторінкою додатку. На неї користувач потрапляє після авторизації. На даній сторінці користувач може сортувати та фільтрувати лоти за такими параметрами як назва лоту і поточна ставка. Окрім цього, для зручності користувачів і зменшення навантаження на сервер, дана сторінка підтримує пагінацію.
При переході на сторінку конкретного лоту, користувач може поставити свою ставку. Для цього, розмір ставки повинен перевищувати розмір суми попереденьої ставки і мінімальної різниці між ставками, або розмір мінімальної ціни аукціону, якщо лот досі немає ставок. Коли ставку поставлено, при перезавантаженні сторінки її можна побачити в історії ставок.
Серверна частина додатку була написана у фреймворці ASP.NET Core 8. За базу даних було обрано PostgreSQL, а в якості ORM для комунікації з нею було використано Entity Framework Core. Для оновлення клієнтської частини в режимі реального часу було вирішено використовувати протокол веб-сокетів, а робота з ними велась за допомогою бібліотеки SignalR.
Архітектура системи брала натхнення у шаблону 'Чиста Архітектура'. Відмінність з даним шаблоном складає те, що в нашому додатку бізнес-логіка є прописаною одразу в ендпоінтах API. Таке відхилення від стандартів було вирішено зробити зважаючи на те, що проєкт є малим і не потребуватиме тривалої підтримки. Доменні сутності системи були побудовані за принципом Domain-Driven Design.
Серверна частина додатку була написана у фреймворці React, за допомогою Vite і TypeScript. На жаль, трохи не вистачило часу на інтеграцію вебсокетів до проєкту.
Щиро дякуємо команді організаторів INT20H за увагу та приділений час!