{"id":31754710,"url":"https://github.com/fuodorov/yacinema","last_synced_at":"2026-03-27T04:26:25.506Z","repository":{"id":41953791,"uuid":"405598085","full_name":"fuodorov/yacinema","owner":"fuodorov","description":"Web application online cinema","archived":false,"fork":false,"pushed_at":"2022-04-22T13:28:52.000Z","size":1651,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-29T22:35:23.562Z","etag":null,"topics":["authentication","clickhouse","django","docker","docker-compose","elasticsearch","etl","fastapi","flask","gunicorn","kafka","mongo","nginx","postgresql","pytest","python","uvicorn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fuodorov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-12T09:20:23.000Z","updated_at":"2024-08-19T10:08:42.000Z","dependencies_parsed_at":"2022-08-12T00:31:03.483Z","dependency_job_id":null,"html_url":"https://github.com/fuodorov/yacinema","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fuodorov/yacinema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuodorov%2Fyacinema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuodorov%2Fyacinema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuodorov%2Fyacinema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuodorov%2Fyacinema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fuodorov","download_url":"https://codeload.github.com/fuodorov/yacinema/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuodorov%2Fyacinema/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31018733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T03:51:26.850Z","status":"ssl_error","status_checked_at":"2026-03-27T03:51:09.693Z","response_time":164,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","clickhouse","django","docker","docker-compose","elasticsearch","etl","fastapi","flask","gunicorn","kafka","mongo","nginx","postgresql","pytest","python","uvicorn"],"created_at":"2025-10-09T18:22:44.417Z","updated_at":"2026-03-27T04:26:25.470Z","avatar_url":"https://github.com/fuodorov.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Online Movies\n\n## Presentation\n\n[Click here](docs/presentation)\n\n## Architecture\n\n![architecture](docs/architecture/architecture.png)\n\n## Running\n\n### Development\n\nUses the default Django development server.\n\n1. Rename *.env.dev.example* and *.env.streaming.dev.example* to *.env.dev* and *.env.streaming.dev* in envs directory. \n2. Update the environment variables in the *.env.dev* and *.env.streaming.dev* file.\n3. Build the images and run the containers:\n\n    ```sh\n    $ docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build\n    ```\n\n    Test it out at [http://localhost:8000](http://localhost:8000). The \"movies_admin\" and \"movies_etl\" folder is mounted into the container and your code changes apply automatically.\n4. On first run, after initialising the database to fill the database with data:\n\n   ```sh\n   $ docker exec movies_admin python utils/sqlite_to_postgres/load_data.py\n   ```\n5. On first run, after initialising the minio create a test bucket in the minio.\n\n### Production\n\nUses gunicorn + nginx.\n\n1. Rename *.env.prod.example* and *.env.streaming.prod.example* to *.env.prod* and *.env.streaming.prod*. \n2. Update the environment variables in the *.env.prod* and *.env.streaming.prod* file.\n3. Build the images and run the containers:\n\n    ```sh\n    $ docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --build\n    ```\n\n    Test it out at [http://localhost:1337](http://localhost:1337). No mounted folders. To apply changes, the image must be re-built.\n\n4. On first run, after initialising the database to fill the database with data:\n\n   ```sh\n   $ docker exec movies_admin python utils/sqlite_to_postgres/load_data.py\n   ```\n\n## Technologies used\n\n- The application runs as a WSGI/ASGI server.\n- To render [static files](https://nginx.org/ru/docs/beginners_guide.html#static), **Nginx is used.\n- Virtualization is done with **Docker.**.\n\n## Main system components\n\n1. **Server WSGI/ASGI** - server running the application.\n2. **Nginx** - proxy server which is an entry point for web application.\n3. **PostgreSQL** - relational data storage. \n4. **ETL** - elasticsearch.\n5. **FFmpeg** - FFmpeg.\n6. **Airflow ETL** - airflow.\n\n## Project requirements\n\n1. The application must be run via WSGI/ASGI.\n2. All system components are hosted in Docker.\n3. Static files are served by Nginx.\n\n## Recommendations for the project\n\n1. To work with WSGI/ASGI server the database uses a special user.\n2. Use docker compose to communicate between containers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuodorov%2Fyacinema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuodorov%2Fyacinema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuodorov%2Fyacinema/lists"}