Linkurator API allows you to explore and categorise your YouTube subscriptions.
The API is currently available at https://api.linkurator.com/docs
- Python 3.13 with pip and venv
- Docker
- Docker Compose
The requirements can be installed with:
make install-requirements- Install the dependencies with:
make install make docker-run-external-services- Get the encryption key and store it securely
echo "YOUR_PASSWORD" > secrets/vault_password.txt export LINKURATOR_VAULT_PASSWORD=$(cat secrets/vault_password.txt)- Select the environment with:
export LINKURATOR_ENVIRONMENT=DEVELOPMENTAvailable environments are:
- DEVELOPMENT
- PRODUCTION
The project is composed of two services: the API and the processor:
- The API allows you to explore your subscriptions
- The processor is in charge of fetching the data from YouTube.
Run the API with your local python venv:
make run-apiOr with docker:
make docker-build make docker-run-apiOnce you have the API running, you can access the documentation at http://localhost:9000/docs
Run the processor with your local python venv:
make run-procesorOr with docker:
make docker-build make docker-run-processor- Use your web browser to access to the login page: http://localhost:9000/login
- Login with your Google account
- The processor must be running in order to download the data from your subscriptions
- You can use the API docs to explore your subscriptions: http://localhost:9000/docs
Run the tests with your local python venv:
make testOr with docker:
make docker-build make docker-testRun the linter with your local python venv:
make lintOr with docker:
make docker-build make docker-lintDefine the ip of the server to provision and deploy:
export SSH_IP_ADDRESS=api.linkurator.comDefine the encryption key:
export LINKURATOR_VAULT_PASSWORD=$(cat secrets/vault_password.txt)Then you need to provision a server with docker.
make provisionOnce the server is provisioned, you can deploy the application with:
make docker-build make docker-push make deployEvery push to the master branch will trigger the tests and the linting. If they pass, the application will be automatically deployed to the server.