Собственный серверный MVP, связывающий физический QR-адресник с карточкой питомца. Нашедший открывает публичную страницу, а владелец управляет данными в отдельном кабинете.
Ключевое решение — два независимых QR: публичный на изделии и секретный на вкладыше для активации и восстановления доступа. Публичный код не дает права редактирования. Предусмотрены HttpOnly-сессии, HMAC-хеширование секретов и изоляция данных разных владельцев.
Реализованы несколько питомцев и адресников в аккаунте, присоединение нового комплекта, сообщения нашедшего, объявления о пропаже и отклики. После завершения поиска старая ссылка показывает актуальный статус. Администратор может выпускать партии комплектов с QR и манифестом.
Фото проверяются и преобразуются в WebP; предусмотрены ограничения запросов и резервное копирование базы вместе с файлами. Есть тесты доступа, жизненного цикла поиска, сообщений, загрузок и комплектов.
Сложность — соединить сценарии физического изделия, мобильного веба, приватности и учета комплектов. Статус: MVP для пилота.
Стек: JavaScript, HTML/CSS, Node.js, Fastify, SQLite, better-sqlite3, Sharp, QR-библиотеки, Node.js test runner, Playwright.
Код написан AI-агентами под моим управлением. Мой вклад — концепция продукта, сценарии владельца и нашедшего, постановка задач, решения и управление разработкой.