Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pythonhubdev/videoverse-backend
A robust REST API for video file management, supporting upload, trimming, merging, and secure sharing. Built with Python, FastAPI, and AWS S3, featuring configurable limits and time-based expiring links.
https://github.com/pythonhubdev/videoverse-backend
Last synced: 28 days ago
JSON representation
A robust REST API for video file management, supporting upload, trimming, merging, and secure sharing. Built with Python, FastAPI, and AWS S3, featuring configurable limits and time-based expiring links.
- Host: GitHub
- URL: https://github.com/pythonhubdev/videoverse-backend
- Owner: pythonhubdev
- Created: 2024-08-16T09:05:45.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-08-21T14:16:41.000Z (3 months ago)
- Last Synced: 2024-08-21T16:05:17.797Z (3 months ago)
- Language: Python
- Size: 1 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Videoverse Backend
A robust REST API for video file management, supporting upload, trimming, merging, and secure sharing. Built with
Python, FastAPI, and AWS S3, featuring configurable limits and time-based expiring links.## Poetry
This project uses poetry. It's a modern dependency management
tool.To run the project use this set of commands:
```bash
poetry install
poetry run python -m videoverse_backend
```This will start the server on the configured host.
You can find swagger documentation at `/api/docs`.
You can read more about poetry here: https://python-poetry.org/
## Docker
You can start the project with docker using this command:
```bash
docker-compose up --build
```If you want to develop in docker with autoreload and exposed ports add `-f deploy/docker-compose.dev.yml` to your docker
command.
Like this:```bash
docker-compose -f docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . up --build
```This command exposes the web application on port 8000, mounts current directory and enables autoreload.
But you have to rebuild image every time you modify `poetry.lock` or `pyproject.toml` with this command:
```bash
docker-compose build
```## Project structure
```bash
$ tree "videoverse_backend"
videoverse_backend
├── conftest.py # Fixtures for all tests.
├── db # module contains db configurations
│ ├── dao # Data Access Objects. Contains different classes to interact with database.
│ └── models # Package contains different models for ORMs.
├── __main__.py # Startup script. Starts uvicorn.
├── services # Package for different external services such as rabbit or redis etc.
├── settings.py # Main configuration settings for project.
├── static # Static content.
├── tests # Tests for project.
└── web # Package contains web server. Handlers, startup config.
├── api # Package with all handlers.
│ └── router.py # Main router.
├── application.py # FastAPI application configuration.
└── lifespan.py # Contains actions to perform on startup and shutdown.
```## Configuration
This application can be configured with environment variables.
You can create `.env` file in the root directory and place all
environment variables here.An example of .env file:
```bash
RELOAD="True"
PORT="8000"
ENVIRONMENT="dev"
```## Pre-commit
To install pre-commit simply run inside the shell:
```bash
pre-commit install
```pre-commit is very useful to check your code before publishing it.
It's configured using .pre-commit-config.yaml file.By default, it runs:
* mypy (validates types);
* ruff (spots possible bugs);You can read more about pre-commit here: https://pre-commit.com/
## Migrations
If you want to migrate your database, you should run following commands:
```bash
# To run all migrations until the migration with revision_id.
alembic upgrade ""# To perform all pending migrations.
alembic upgrade "head"
```### Reverting migrations
If you want to revert migrations, you should run:
```bash
# revert all migrations up to: revision_id.
alembic downgrade# Revert everything.
alembic downgrade base
```### Migration generation
To generate migrations you should run:
```bash
# For automatic change detection.
alembic revision --autogenerate# For empty file generation.
alembic revision
```## Running tests
If you want to run it in docker, simply run:
```bash
docker-compose run --build --rm api pytest -vv .
docker-compose down
```For running tests on your local machine.
Run the pytest.
```bash
pytest -vv .
```