Введение
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)