Этот проект представляет собой API для управления заметками с возможностью аутентификации пользователей. API позволяет выполнять операции создания, чтения, обновления и удаления заметок, а также поддерживает аутентификацию пользователей через стандартный логин и Telegram.
API предоставляет следующие возможности для работы с заметками:
- Создание заметки: Добавление новой заметки с привязкой к пользователю.
- Чтение заметки: Получение заметки по её ID.
- Обновление заметки: Обновление информации о заметке.
- Удаление заметки: Удаление заметки по её ID.
- Поиск по тегу: Поиск заметок по указанному тегу.
- Получение всех заметок: Получение всех заметок текущего пользователя.
- FastAPI: Для создания RESTful API
- PostgreSQL: Для хранения данных
- SQLAlchemy: Для взаимодействия с базой данных
- JWT: Для аутентификации и авторизации
- Loguru: Для централизованного логирования
- Docker: Для контейнеризации приложения
API поддерживает следующие методы аутентификации:
- Стандартная аутентификация: Вход с использованием имени пользователя и пароля. Пароли хранятся в зашифрованном виде с использованием bcrypt.
- Аутентификация через Telegram: Вход с использованием
telegram_id
. Для этого API использует Telegram ID пользователя.
- JWT токены: При аутентификации пользователю выдается JWT токен, который используется для авторизации запросов к API. Токены имеют срок действия, который можно настроить.
- Шифрование паролей: Пароли пользователей хранятся в зашифрованном виде с использованием алгоритма bcrypt.
API использует ограничение частоты запросов для защиты от перегрузок. Лимит запросов установлен для некоторых маршрутов
Используются Pydantic-модели для валидации входных данных
API интегрирован с Telegram-ботом. Через бота можно взаимодействовать с API для управления заметками. В боте используется middleware для проверки авторизации перед выполнением любых действий пользователя.
Централизованное логирование настроено с использованием loguru
. Все логи сохраняются в корневую директорию logs
.
Проект может быть запущен с использованием Docker. Для этого предоставлен Dockerfile, который позволяет создать образ и запустить контейнер с API.
-
Клонируйте репозиторий:
git clone https://github.com/Tsunami43/Note-Service.git cd Note-Service
-
Создайте папку для логов:
mkdir -p logs
-
Создайте файл
.env
и заполните его переменными окружения. Пример файла.env-example
предоставлен в корне проекта.SECRET_KEY=your_secret_key ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=30 DATABASE_URL=postgresql+asyncpg://user:password@localhost/dbname
-
Запустите сборку и запуск контейнеров:
docker-compose up --build -d
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.