Prism Prism

Введение

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

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

  • FastAPI
  • Redis
  • PostgreSQL
  • Docker
  • Celery (отправка писем)

Лицензия

Код: Исходный код проекта распространяется по лицензии Apache 2.0.

Логотип и графика: Все визуальные ресурсы, расположенные в директории assets/ (от корня проекта) в исходном коде, защищены авторским правом и являются исключительной собственностью ghostfaccee (автора проекта). Использование логотипа разрешено только в рамках данного проекта (например, при создании документации или внесении вклада в проект). Любое другое использование, включая копирование, модификацию, распространение, сублицензирование или коммерческого использования - строго запрещено без явного письменного соглашения автора. По запросам разрешения, обращайтесь: ghostface.host@gmail.com.

Быстрый старт

Запустить Prism локально можно всего за 3 шага:

# Шаг 1: Клонировать репозиторий
git clone https://github.com/ghostfaccee/Prism.git
# Шаг 2: Перейти в директорию проекта
cd Prism
# Шаг 3: Запустить локально при помощи Docker
docker compose --profile prod up --build -d
# Шаг 4: Применение миграций (существующих в проекте)
docker compose exec api alembic upgrade head

После запуска API будет доступно по адресу http://127.0.0.1:8000.

Конфигурация

Основные параметры Prism находятся в файле .env.

# Пример .env
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_DB=db
POSTGRES_URL=postgresql+asyncpg://user:pass@db:port/db

TEST_POSTGRES_USER=user
TEST_POSTGRES_PASSWORD=password
TEST_POSTGRES_DB=db
TEST_POSTGRES_URL=postgresql+asyncpg://user:password@testdb:port/db

REDIS_URL=redis url
DEFAULT_TTL=default ttl for cache

DEBUG=True/False

SLOW_REQUEST_THRESHOLD=seconds: float

SECRET_JWT_KEY=your secret key # openssl rand -hex 32
SECRET_REFRESH_KEY=your secret key # openssl rand -hex 32
ALGORITHM=HS256 or another
JWT_TOKEN_EXPIRE_MINUTES=minutes: int
REFRESH_TOKEN_EXPIRE_DAYS=days: int

SMTP_HOST=host
SMTP_PORT=port
SMTP_USER=user
SMTP_PASSWORD=password
VERIFICATION_LINK=http://127.0.0.1:8000/v1/verify


GITHUB_CLIENT_ID=client id
GITHUB_CLIENT_SECRET=secret
GITHUB_REDIRECT_URI=http://localhost:8000/v1/github/callback

Аутентификация

Prism использует jwt-токены для доступа к защищённым эндпоинтам. Refresh-токены позволяют обновлять короткоживущий access token.

# Headers
Authorization: Bearer (your token)