{"id":28391510,"url":"https://github.com/logaka/chooser-front","last_synced_at":"2025-06-25T21:31:00.941Z","repository":{"id":290422370,"uuid":"974295436","full_name":"Logaka/Chooser-Front","owner":"Logaka","description":"https://github.com/Logaka/Chooser-Back back project","archived":false,"fork":false,"pushed_at":"2025-04-28T20:20:07.000Z","size":843,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-31T20:05:04.043Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://chooser-front-orpin.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Logaka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-28T14:54:27.000Z","updated_at":"2025-04-28T20:20:12.000Z","dependencies_parsed_at":"2025-04-28T19:25:57.659Z","dependency_job_id":"a79afc2f-5118-401a-a223-e0ff3202d72f","html_url":"https://github.com/Logaka/Chooser-Front","commit_stats":null,"previous_names":["logaka/chooser-front"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Logaka/Chooser-Front","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Logaka%2FChooser-Front","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Logaka%2FChooser-Front/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Logaka%2FChooser-Front/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Logaka%2FChooser-Front/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Logaka","download_url":"https://codeload.github.com/Logaka/Chooser-Front/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Logaka%2FChooser-Front/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261955832,"owners_count":23235962,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-31T09:39:25.930Z","updated_at":"2025-06-25T21:31:00.934Z","avatar_url":"https://github.com/Logaka.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chooser - Интерактивное приложение для случайного выбора\n\nChooser - это интерактивное веб-приложение для случайного выбора участника из группы людей с возможностью выполнения заданий и игрой на выбывание.\n\n## Описание проекта\n\nПриложение позволяет выбирать случайного человека из группы участников, которые касаются экрана. В режиме заданий выбранному участнику предлагается выполнить определенную задачу различной сложности. В режиме выбывания участники, не выполнившие задание, выбывают из игры, пока не останется один победитель.\n\n### Основные функции:\n\n- Случайный выбор участника из группы\n- Режим заданий с различной сложностью\n- Режим выбывания с постепенным уменьшением допустимого количества игроков\n- Таймер для ограничения времени выполнения заданий\n- Визуальная анимация при выборе участника\n- Фоновая музыка\n\n## Установка и запуск\n\n### Требования\n- npm\n- Веб-браузер с поддержкой современных JavaScript API\n\n### Установка\n1. Клонируйте репозиторий:\n   ```\n   git clone https://github.com/yourusername/Chooser-Front.git\n   cd Chooser-Front\n   ```\n\n2. Установите зависимости (если таковые имеются):\n   ```\n   npm install ( optionall )\n   ```\n\n### Запуск\n1. Запустите локальный сервер:\n   ```\n   npm install -g live-server\n   live-server --host=0.0.0.0 --port=8000  \n   ```\n   или используйте любой другой локальный сервер по вашему выбору.\n\n2. Откройте приложение в браузере:\n   ```\n   http://localhost:8080\n   ```\n\n## Процесс проектирования и разработки\n\nПриложение разработано с использованием модульной архитектуры, где каждый компонент отвечает за определенную функциональность:\n\n- `script.js` - основная логика приложения, обработка взаимодействия с пользователем\n- `settingsModal.js` - управление настройками приложения\n- `taskModal.js` - отображение и обработка заданий\n- `music.js` - управление звуковым сопровождением\n\nПроцесс разработки включал в себя следующие этапы:\n1. Проектирование пользовательского интерфейса\n2. Разработка базовой функциональности выбора участника\n3. Добавление режима заданий\n4. Реализация настроек приложения\n5. Добавление режима выбывания\n6. Тестирование и отладка\n\n## Уникальные подходы и методологии\n\n1. **Мультитач-взаимодействие**: Приложение разработано с учетом одновременных касаний нескольких пользователей, что делает его идеальным для групповых сессий.\n\n2. **Интеграция с бэкендом**: Использование REST API для получения заданий и управления игровыми сессиями, что делает логику более гибкой и расширяемой.\n\n3. **Сохранение состояния**: Использование localStorage для сохранения настроек пользователя между сессиями.\n\n4. **Динамическая конфигурация**: Возможность настройки API URL через конфигурационный файл, что облегчает развертывание в различных средах.\n\n## Компромиссы при разработке\n\n1. **Простота UI vs. функциональность**: Выбор в пользу минималистичного интерфейса для обеспечения простоты взаимодействия, несмотря на богатую функциональность.\n\n2. **Локальная обработка vs. серверная валидация**: Баланс между локальной обработкой событий и серверной валидацией для обеспечения быстрого отклика приложения.\n\n3. **Поддержка устройств**: Оптимизация для мобильных устройств и планшетов, с учетом ограничений настольных компьютеров для мультитач-взаимодействия.\n\n## Известные проблемы и ограничения\n\n1. **Подлагивание и задержка**: Возможны подлагивания и задержка при первой попытке игры, важно понажимать на кнопки и подождать\n\n1. **Зависимость от бэкенда**: Для полной функциональности требуется работающий бэкенд-сервер с соответствующим API.\n\n2. **Производительность анимации**: На устройствах с низкой производительностью анимация может работать нестабильно.\n\n## Выбор технологического стека\n\n### Frontend:\n- **Vanilla JavaScript**: Выбран для обеспечения максимальной производительности и минимальных накладных расходов, особенно важных для мультитач-приложений.\n- **HTML5**: Используется для высокопроизводительной графики и анимации.\n- **Bootstrap**: Обеспечивает адаптивный и современный интерфейс с минимальными затратами на разработку.\n- **LocalStorage API**: Простое и эффективное решение для хранения пользовательских настроек.\n\n### Серверная интеграция:\n- **REST API**: Простой и понятный протокол для взаимодействия с сервером.\n- **JSON**: Легкий формат обмена данными с минимальными накладными расходами.\n\nДанный стек был выбран для обеспечения оптимальной производительности, простоты разработки и поддержки, а также максимальной совместимости с современными устройствами. Отсутствие тяжелых фреймворков позволяет приложению быстро загружаться и работать даже на устройствах среднего уровня.\n\n## Лицензия\n\n[MIT](LICENSE) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogaka%2Fchooser-front","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogaka%2Fchooser-front","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogaka%2Fchooser-front/lists"}