Service for working with Netflix voice assistants.
FastAPI, Yandex.Dialogs (voice assistant provider)
- Netflix Admin:
- Online-cinema management panel. Admins can manage films, genres, actors/directors/writers/...
- https://github.com/ReznikovRoman/netflix-admin
- Netflix ETL:
- ETL pipeline for synchronizing data between "Netflix Admin" database and Elasticsearch
- https://github.com/ReznikovRoman/netflix-etl
- Netflix Movies API:
- Movies API
- https://github.com/ReznikovRoman/netflix-movies-api
- Python client: https://github.com/ReznikovRoman/netflix-movies-client
- Netflix Auth API:
- Authorization service - users and roles management
- https://github.com/ReznikovRoman/netflix-auth-api
- Netflix UGC:
- Service for working with user generated content (comments, likes, film reviews, etc.)
- https://github.com/ReznikovRoman/netflix-ugc
- Netflix Notifications:
- Notifications service (email, mobile, push)
- https://github.com/ReznikovRoman/netflix-notifications
- Netflix Voice Assistant:
- Online-cinema voice assistant
- https://github.com/ReznikovRoman/netflix-voice-assistant
Docker containers:
- server
- traefik
docker-compose files:
docker-compose.yml
- for local development.docker-compose-dev.yml
- for local development (without traefik).tests/functional/docker-compose.yml
- for functional tests.
To run docker containers, you need to create a .env
file in the root directory.
.env
example:
ENV=.env
# Python
PYTHONUNBUFFERED=1
# Netflix Voice Assistant
# Project
NVA_DEBUG=1
NVA_PROJECT_BASE_URL=http://api-voice-assistant.localhost:8012
NVA_SERVER_PORT=8005
NVA_PROJECT_NAME=netflix-voice-assistant
NVA_API_V1_STR=/api/v1
NVA_SERVER_NAME=localhost
NVA_SERVER_HOSTS=http://api-voice-assistant.localhost:8012
# Netflix Movies
NVA_NETFLIX_MOVIES_BASE_URL=http://traefik:80
# Config
NVA_USE_STUBS=0
NVA_TESTING=0
NVA_CI=0
Locally:
docker-compose build
docker-compose up
Sync environment with requirements.txt
/ requirements.dev.txt
(will install/update missing packages, remove redundant ones):
make sync-requirements
Compile requirements.*.txt files (have to re-compile after changes in requirements.*.in):
make compile-requirements
Use requirements.local.in
for local dependencies; always specify constraints files (-c ...)
Example:
# requirements.local.txt
-c requirements.txt
ipython
Run unit tests (export environment variables from .env
file):
export $(echo $(cat .env | sed 's/#.*//g'| xargs) | envsubst) && make test
To run functional tests, you need to create .env
in ./tests/functional directory
.env
example:
ENV=.env
# Python
PYTHONUNBUFFERED=1
# Netflix Voice Assistant
# Project
NVA_DEBUG=1
NVA_PROJECT_BASE_URL=http://api-voice-assistant.localhost:8012
NVA_SERVER_PORT=8005
NVA_PROJECT_NAME=netflix-voice-assistant
NVA_API_V1_STR=/api/v1
NVA_SERVER_NAME=localhost
NVA_SERVER_HOSTS=http://api-voice-assistant.localhost:8012
# Netflix Movies
NVA_NETFLIX_MOVIES_BASE_URL=http://traefik:80
# Config
NN_USE_STUBS=1
NN_TESTING=1
NN_CI=0
Run functional tests:
cd ./tests/functional && docker-compose up test
Makefile recipe:
make dtf
Before pushing a commit run all linters:
make lint
pre-commit installation:
pre-commit install
OpenAPI 3 documentation:
${PROJECT_BASE_URL}/api/v1/docs
- Swagger