Skip to content

Loloops123/notes_sql

Repository files navigation

API для Заметок (Notes API)

Простой, но функциональный REST API для управления заметками. Проект создан в образовательных целях для изучения основ бэкенд-разработки, включая безопасную аутентификацию, авторизацию и полное покрытие кода тестами.

✨ Возможности

  • Аутентификация и Авторизация: Регистрация и вход пользователей с использованием JWT. Защищённые маршруты гарантируют, что пользователи могут управлять только своими заметками.
  • CRUD операции: Полная поддержка создания, чтения, обновления и удаления заметок.
  • Продвинутая валидация: Централизованная валидация входящих данных с помощью Joi.
  • Архитектура: Чистая трёхслойная архитектура (Routes → Controllers → Services).
  • Тестирование: 100% покрытие кода unit- и интеграционными тестами с использованием Jest.
  • База данных: PostgreSQL, работающая в изолированных Docker-контейнерах для разработки и тестирования.
  • Логирование: Профессиональное логирование событий и ошибок с помощью Winston.

🛠️ Стек технологий

🚀 Установка и запуск

Для запуска проекта на локальной машине выполните следующие шаги.

Требования

Пошаговая инструкция

  1. Клонируйте репозиторий:

      git clone <ссылка_на_ваш_репозиторий>
      cd <название_папки_проекта>
  2. Установите зависимости:

      pnpm install
  3. Настройте переменные окружения: Создайте файл .env в корне проекта, скопировав содержимое из .env.example.

      cp .env.example .env
  4. Запустите базы данных в Docker: Эта команда создаст и запустит контейнеры для разработки и для тестов.

      docker-compose up -d
  5. Примените миграции к базе данных разработки:

      pnpm prisma migrate dev
  6. Запустите приложение в режиме разработки:

      pnpm run dev

🎉 После этого приложение будет доступно по адресу http://localhost:3000.

🧪 Тестирование

Проект покрыт тестами на 100%. Тесты запускаются в изолированном окружении с отдельной базой данных.

  1. Перед первым запуском тестов необходимо подготовить тестовую базу данных, применив к ней миграции:

      pnpm prisma:test:migrate
  2. Для запуска всех тестов выполните:

      pnpm test

📖 API Эндпоинты

Аутентификация (/auth)

Метод Путь Описание Тело запроса (пример)
POST /auth/register Регистрация нового пользователя { "email": "user@example.com", "password": "Password123" }
POST /auth/login Вход пользователя и получение JWT { "email": "user@example.com", "password": "Password123" }

Заметки (/notes)

Примечание: Для всех маршрутов заметок требуется заголовок Authorization: Bearer <ваш_jwt_токен>.

Метод Путь Описание Тело запроса (пример)
GET /notes Получить список своих заметок -
GET /notes/:id Получить свою заметку по ID -
POST /notes Создать новую заметку { "title": "Новая", "content": "Текст" }
PUT /notes/:id Полностью обновить свою заметку { "title": "Обновлено", "content": "Новый" }
PATCH /notes/:id Частично обновить свою заметку { "title": "Только заголовок" }
DELETE /notes/:id Удалить свою заметку -

Служебные

Метод Путь Описание
GET /health Проверить "здоровье" сервиса

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published