Skip to content

Latest commit

 

History

History
131 lines (83 loc) · 6.87 KB

README.ru.md

File metadata and controls

131 lines (83 loc) · 6.87 KB

ArtiLinks Logo

ArtiLinks - Bookmark Manager

Читать это на других языках: English, Русский.

Идея проекта:


Приложение решает проблему хранения и категоризации ссылок на полезные онлайн-сервисы.

Deployment здесь.

Реализованная функциональность:


  1. Регистрация с подтверждением по электронной почте и авторизация
  2. Восстановление пароля по электронной почте
  3. Категоризация ссылок (группы и коллекции):
    • Группа - это контейнер, в котором хранится набор коллекций
    • Коллекция - это контейнер, в котором хранятся ссылки
    • Например: Programming - это группа, Javascript - это коллекция
  4. Полноценный CRUD API для групп и коллекций
  5. Возможность изменить группу созданной коллекции
  6. Автоматическое получение данных с ресурсов:
    • Извлечение фавиконов, заголовков, описаний и доменных имен
  7. Функциональность поиска ссылок в рассматриваемой коллекции:
    • Поиск осуществляется по названию ссылки и домену ресурса
  8. Уведомления об ошибках

Использованные технологии:


Технология Описание
NextJS React-фреймворк для рендеринга на стороне сервера
jsonwebtoken Регистрация и аутентификация пользователей
nodemailer Подтверждение электронной почты и восстановление пароля
MongoDB/Mongoose Облачная база данных
axios API-запросы клиентской и серверной сторон
open-graph-scraper Получение данных о ресурсах
react-transition-group Анимация отрисованных компонентов

Увлекательная задача в проекте и возникшие сложности:


Наиболее трудоемкая и интересная часть была разработка JWT аутентификации/регистрации. Данный подход был для меня новым, поэтому мне пришлось уделить много времени на поиск информации о том, как нужно правильно писать такой функционал. В итоге я реализовал отдельный класс-сервис по работе с refresh/access-токенами. Основной проблемой было обновление access-токена в случае, когда пользователь отправил запрос на защищенный API путь, будучи аутентифицированным, но имея уже инвалидированный access-токен. Я узнал, что библиотека axios поддерживает функционал интерсепторов, которые как раз могли решить мою проблему. При инвалидированном access-токене мой сервер возвращает ошибку авторизации 401, в интерсепторе ответа с сервера я отлавливаю данный тип ошибки, отправляю запрос на обновление токенов, а после пытаюсь повторить исходный запрос.

Скриншоты и видео:


Youtube видео с демонстрацией функциональности:

Экран главной страницы:

Landing Page Main Screen
Landing Page Scrolling

Регистрация и Логин:

Registration Screen Login Screen

Восстановление пароля:

Password Recovering Screen

Уведомления об ошибках:

Error Notification Screen

Вид главной панели:

Dashboard Screen
Functionality Demonstration

Редактирование закладок:

Bookmark Editing Screen

Создание коллекции:

Collection Creation Screen

Доступные диалоговые окна:

Available Dialogs