Skip to content

Tsunami43/Note-Service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API для управления заметками и аутентификации

Этот проект представляет собой API для управления заметками с возможностью аутентификации пользователей. API позволяет выполнять операции создания, чтения, обновления и удаления заметок, а также поддерживает аутентификацию пользователей через стандартный логин и Telegram.

Основные возможности

Управление заметками

API предоставляет следующие возможности для работы с заметками:

  • Создание заметки: Добавление новой заметки с привязкой к пользователю.
  • Чтение заметки: Получение заметки по её ID.
  • Обновление заметки: Обновление информации о заметке.
  • Удаление заметки: Удаление заметки по её ID.
  • Поиск по тегу: Поиск заметок по указанному тегу.
  • Получение всех заметок: Получение всех заметок текущего пользователя.

Используемые технологии

  • FastAPI: Для создания RESTful API
  • PostgreSQL: Для хранения данных
  • SQLAlchemy: Для взаимодействия с базой данных
  • JWT: Для аутентификации и авторизации
  • Loguru: Для централизованного логирования
  • Docker: Для контейнеризации приложения

Аутентификация пользователей

API поддерживает следующие методы аутентификации:

  • Стандартная аутентификация: Вход с использованием имени пользователя и пароля. Пароли хранятся в зашифрованном виде с использованием bcrypt.
  • Аутентификация через Telegram: Вход с использованием telegram_id. Для этого API использует Telegram ID пользователя.

JWT и авторизация

  • JWT токены: При аутентификации пользователю выдается JWT токен, который используется для авторизации запросов к API. Токены имеют срок действия, который можно настроить.
  • Шифрование паролей: Пароли пользователей хранятся в зашифрованном виде с использованием алгоритма bcrypt.

Rate Limiting

API использует ограничение частоты запросов для защиты от перегрузок. Лимит запросов установлен для некоторых маршрутов

Валидация данных

Используются Pydantic-модели для валидации входных данных

Telegram-бот

API интегрирован с Telegram-ботом. Через бота можно взаимодействовать с API для управления заметками. В боте используется middleware для проверки авторизации перед выполнением любых действий пользователя.

Логирование

Централизованное логирование настроено с использованием loguru. Все логи сохраняются в корневую директорию logs.

Запуск через Docker

Проект может быть запущен с использованием Docker. Для этого предоставлен Dockerfile, который позволяет создать образ и запустить контейнер с API.

Установка

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

    git clone https://github.com/Tsunami43/Note-Service.git
    cd Note-Service
  2. Создайте папку для логов:

    mkdir -p logs
  3. Создайте файл .env и заполните его переменными окружения. Пример файла .env-example предоставлен в корне проекта.

    SECRET_KEY=your_secret_key
    ALGORITHM=HS256
    ACCESS_TOKEN_EXPIRE_MINUTES=30
    DATABASE_URL=postgresql+asyncpg://user:password@localhost/dbname
  4. Запустите сборку и запуск контейнеров:

    docker-compose up --build -d

Использование API

Регистрация нового пользователя

curl -X POST "http://localhost:8000/api/register" -H "Content-Type: application/json" -d '{
  "username": "your_username",
  "password": "your_password",
  "telegram_id": "your_telegram_id"
}'

Вход пользователя и получение токена

curl -X POST "http://localhost:8000/login" -H "Content-Type: application/json" -d '{
  "username": "your_username",
  "password": "your_password",
}'

Лицензия

Этот проект распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.

About

REST API Приложение для заметок

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published