Skip to content

dmsnback/minicrm

Repository files navigation

miniCRM

API мини CRM приложеение

miniCRM Lint miniCRM Docker Dev miniCRM Docker Prod

Описание

MiniCRM — это backend-сервис для управления клиентами, сделками и комментариями, реализованный на FastAPI с асинхронной работой через PostgreSQL.

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

REST API для управления:

  • Клиентами (CRUD)
  • Сделками (CRUD, статусы, фильтрация по менеджерам)
  • Комментариями к сделкам
  • Пользователями с ролями (admin / manager)
  • Авторизацией через JWT

Приложение написано с использованием асинхронного FastAPI, SQLAlchemy, PostgreSQL и FastAPI Users.

Вернуться в начало

Технологии

Python FastAPI FastAPI Users SQLAlchemy Pydantic Docker Postgres GitHub Actions

Вернуться в начало

Таблица эндпоинтов

Авторизация

Метод URL Описание Доступ
POST /auth/register Регистрация новых менеджеров Админ
POST /auth/jwt/login получение JWT токена Админ
Менеджер

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

Метод URL Описание Доступ
GET /users/all Список всеех менеджеров Админ
GET /users/{user_id}/clients Получение списка клиентов менеджра по id Админ
GET /users/me Получение текущего юзера Админ
Менеджер
PATCH /users/{id} Редактирование юзера Админ
DELETE /users/{id} Удаление юзера Админ

Клиенты

Метод URL Описание Доступ
GET /clients/all Список всех клиентов
(Админ видит всех, менеджер - своих)
Админ
Менеджер
GET /clients/{clients_id} Получение клиента по id Админ
Менеджер
PATCH /clients/{clients_id} Редактирование клиента Админ
Менеджер
DELETE /clients/{clients_id} Удаление клиентв Админ
POST /clients Добавление нового клиента Админ
Менеджер

Сделки

Метод URL Описание Доступ
GET /deals/all Список всех сделок
(Админ видит вс своих)
Админ
Менеджер
GET /deals/{deals_id} Получение сделки по id Админ
Менеджер
PATCH /deals/{deals_id} Редактирование сделки Админ
Менеджер
DELETE /deals/{deals_id} Удаление сделки Админ
POST /deals Добавление новой сделки Админ
Менеджер

Комментарии

Метод URL Описание Доступ
GET /comments/{deal_id}/comments Получить все комментарии сделки Админ
Менеджер
POST /comments/{deal_id}/comments Добавление комментария к сделке Админ
Менеджер
PATCH /comments/{deal_id}/comments/{comment_id} Редактирование комментария Админ
Менеджер
DELETE /comments/{deal_id}/comments/{comment_id} Удаление комментария Админ

Вернуться в начало

Шаблон заполнения .env-файла

env.example с дефолтнными значениями расположен в корневой папке

POSTGRES_DB = minicrmdb # Имя базы дданнных
POSTGRES_USER = postgres # Имя юзера PostgreSQL
POSTGRES_PASSWORD = yourpassword # Пароль юзера PostgreSQL
DATABASE_URL = postgresql+asyncpg://postgres:yourpassword@db:5432/minicrmdb  # Указываем адрес БД
DEBUG = False # Включеение/Выключение режима отладки
APP_TITLE = МиниCRM приложение # Название приложения
SECRET = SUPERSECRETKEY # Секретный ключ для подписания JWT токенов
FIRST_SUPERUSER_USERNAME = superadmin # Указываеем usernsme для суперюзера
FIRST_SUPERUSER_EMAIL = superadmin@mail.com # Указываеем почту для суперюзера
FIRST_SUPERUSER_PASSWORD = superadmin # Указываеем пароль для суперюзера
FIRST_SUPERUSER_ROLE = admin # Указываеем роль для суперюзера

Вернуться в начало

Запуск проекта на локальной машине

  • Склонируйте репозиторий
git clone git@github.com:dmsnback/minicrm.git
  • Запускаем Docker контейнер
docker-compose up -d --build
  • Выполняем миграции
docker-compose exec backend alembic upgrade head   
  • Создаём суперюзера
docker-compose exec backend python create_superuser.py

Документация к API будет доступна по адресу:

http://localhost:8000/docs/

Вернуться в начало

Автор

Вернуться в начало

Releases

No releases published

Packages

No packages published