--- pageType: source id: source.dev-task title: DEV TASK sourceType: local-file sourcePath: /home/node/.openclaw/workspace/tasks/apps-portal/DEV-TASK.md ingestedAt: 2026-04-10T13:37:41.693Z updatedAt: 2026-04-10T13:37:41.693Z status: active --- # DEV TASK ## Source - Type: `local-file` - Path: `/home/node/.openclaw/workspace/tasks/apps-portal/DEV-TASK.md` - Bytes: 2574 - Updated: 2026-04-10T13:37:41.693Z ## Content ```text # DEV-TASK: Портал приложений (apps.mva154.duckdns.org) ## Контекст Нужен портал-лендинг с карточками веб-приложений. Светлая тема, автогенерация аватарок. **Документация:** - Бизнес-требования: `tasks/apps-portal/docs/BRD.md` - Техническое задание: `tasks/apps-portal/docs/TZ.md` --- ## Задача ### Шаг 1: Инфраструктура 1. Создать `config/apps.json` с двумя приложениями (noisemap, snowbike-rag) 2. Создать `requirements.txt` (flask, pillow) ### Шаг 2: Автогенерация аватарок 3. Реализовать функцию `generate_avatars()`: - Читает `config/apps.json` - Для каждого приложения проверяет `static/avatars/{id}.png` - Если файла нет — генерирует: градиентный фон (по хэшу name) + emoji/icon по центру - PNG 200×200 ### Шаг 3: Flask сервер 4. Создать `server.py`: - GET `/` — главная (рендерит index.html с apps) - GET `/api/apps` — JSON - GET `/static/avatars/` — файлы - При старте: `generate_avatars()` ### Шаг 4: Главная страница 5. Создать `templates/index.html`: - Светлая тема (#F8FAFC фон, белые карточки) - Tailwind CSS через CDN, шрифт Inter - Карточки: аватарка 80×80, название, описание - Клик → переход на url приложения - Адаптивно: 4 → 2 → 1 колонка - Hover: lift-эффект, синяя рамка ### Шаг 5: Тест 6. Запустить `python server.py` 7. Проверить http://localhost:5560/ 8. Добавить третье приложение в apps.json — проверить автогенерацию аватарки --- ## Критерии приёмки - [ ] http://localhost:5560/ — портал с карточками - [ ] Клик — переход на приложение - [ ] Аватарки в static/avatars/ сгенерированы - [ ] Светлая тема, красиво - [ ] Адаптивно на мобильном - [ ] /api/apps — JSON --- ## Важно • Всё в `tasks/apps-portal/` • Порт 5560 • Pillow для аватарок (pip install pillow) • Не трогать другие приложения ``` ## Notes ## Related ### Referenced By - [Apps Portal](entities/project-apps-portal.md)