Почему возникла идея создать аналог Goodreads?
Автор проекта был разочарован медлительностью и ограниченностью рекомендаций сервиса Goodreads, принадлежащего компании Amazon. Решив исправить ситуацию, он разработал собственную платформу под названием Chapterly.
Стек технологий
Проект построен на следующих технологиях:
- Next.js: фреймворк для создания веб-приложений на основе React, обеспечивающий серверный рендеринг и оптимизацию производительности.
- Supabase: облачная платформа, предоставляющая базу данных PostgreSQL, систему аутентификации пользователей через Google OAuth и поддержку уровня безопасности строк (Row Level Security).
- Claude AI от Anthropic: искусственный интеллект, используемый для генерации персонализированных рекомендаций книг на основе предпочтений пользователя.
- Tailwind CSS: библиотека стилей для быстрого прототипирования интерфейсов.
- Vercel: сервис для деплоймента приложений.
Как работает система рекомендаций
Основная сложность заключалась не столько в создании самих рекомендаций, сколько в их персонализации. Для этого используется модель Claude AI, которая получает информацию о последних десяти книгах пользователя, его оценках и предпочитаемых жанрах. На выходе формируется рекомендация с обоснованием выбора книги («Поскольку вы высоко оценили книги с ненадежными рассказчиками, вам может понравиться…»).
Для извлечения структурированной информации из ответов модели использовался специальный регулярный выражением вместо простого удаления разметки Markdown, так как иногда перед блоком JSON добавлялся дополнительный текст.
Функция сканирования штрих-кодов
Одной из интересных особенностей приложения является возможность добавления книг путем сканирования ISBN-штрихкода. Это реализовано с использованием библиотеки html5-qrcode, обрабатывающей камеру устройства и распознающей формат EAN-13. Изначально компонент был скрыт внутри поискового поля, но позже автор добавил плавающую кнопку действия на главной вкладке полок, чтобы сделать функцию более заметной на мобильных устройствах.
Что можно улучшить
В процессе разработки были выявлены некоторые проблемы, которые стоит учесть при будущих проектах:
- Отладка правил безопасности строк (RLS) в Supabase оказалась сложной задачей, поскольку неправильно настроенные политики просто возвращают пустые результаты без сообщений об ошибках. Автор рекомендует заранее писать тесты для таких политик.
Chapterly доступен для тестирования всем желающим, а разработчик открыт для обратной связи относительно качества рекомендаций и удобства использования.