Skip to content

Z1pP/fastapi-aiogram-notes

Repository files navigation

Notes API Service

Асинхронное веб-приложение на FastAPI для управления личными заметками с Telegram ботом.

Особенности

  • 🔐 JWT аутентификация
  • 📝 CRUD операции для заметок
  • 🏷️ Поддержка тегов
  • 🤖 Telegram бот
  • 🐳 Docker контейнеризация
  • 📊 Логирование
  • ⚡ Асинхронная работа
  • 🛡️ Rate limiting

Архитектура

Проект построен с использованием чистой архитектуры:

  • Entities: Базовые сущности (Note, User, Tag)
  • Use Cases: Бизнес-логика приложения
  • Repositories: Абстракция работы с данными
  • Services: Сервисный слой
  • API: FastAPI endpoints

Технологии

  • FastAPI
  • SQLAlchemy (async)
  • PostgreSQL
  • Alembic
  • Pydantic
  • aiogram
  • Docker
  • JWT

Установка

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

bash https://github.com/Z1pP/fastapi-aiogram-notes.git cd notes-api

  1. Создайте .env файл:

bash cp .env.example .env

  1. Установите зависимости:

  2. Запустите через Docker:

bash docker-compose up -d

API Endpoints

Заметки

  • GET /api/v1/notes - Получить все заметки пользователя
  • POST /api/v1/notes - Создать новую заметку
  • PUT /api/v1/notes/{note_id} - Обновить заметку
  • DELETE /api/v1/notes/{note_id} - Удалить заметку
  • GET /api/v1/notes/by_tags - Поиск заметок по тегам

Пользователи

  • POST /api/v1/auth/register - Регистрация
  • POST /api/v1/auth/login - Вход
  • POST /api/v1/auth/refresh - Обновление токена

Telegram Bot

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

  • /start - Начало работы
  • /link_profile - Привязка аккаунта
  • /add_note - Создание заметки
  • /my_notes - Список заметок
  • /find_by_tags - Поиск по тегам

Разработка

  1. Создайте виртуальное окружение:

bash python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows

  1. Установите зависимости:

bash pip install -r requirements.txt

  1. Запустите миграции:

bash alembic init alembic alembic migrate alembic upgrade head

  1. Запустите сервер:

bash uvicorn app.main:app --reload

Безопасность

  • Хеширование паролей через bcrypt
  • Rate limiting через FastAPI middleware
  • JWT tokens для аутентификации
  • Валидация входных данных через Pydantic

Логирование

Логи сохраняются в logs/ с ротацией по дате:

  • app.log - основные логи
  • error.log - ошибки
  • access.log - доступ к API

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages