{"id":26660641,"url":"https://github.com/codevideo/codevideo_generator_backend","last_synced_at":"2026-04-19T13:32:06.849Z","repository":{"id":64837241,"uuid":"578501426","full_name":"codevideo/codevideo_generator_backend","owner":"codevideo","description":"The backend engine to create videos on codevideo.io","archived":false,"fork":false,"pushed_at":"2022-12-15T17:36:08.000Z","size":86,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T12:18:50.483Z","etag":null,"topics":["codevideo","cross-platform","docker","nginx","node","nodejs","typescript","video","video-processing"],"latest_commit_sha":null,"homepage":"https://codevideo.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codevideo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-12-15T07:55:51.000Z","updated_at":"2023-01-31T22:08:37.000Z","dependencies_parsed_at":"2022-12-15T20:26:31.720Z","dependency_job_id":null,"html_url":"https://github.com/codevideo/codevideo_generator_backend","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codevideo/codevideo_generator_backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codevideo%2Fcodevideo_generator_backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codevideo%2Fcodevideo_generator_backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codevideo%2Fcodevideo_generator_backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codevideo%2Fcodevideo_generator_backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codevideo","download_url":"https://codeload.github.com/codevideo/codevideo_generator_backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codevideo%2Fcodevideo_generator_backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32009108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["codevideo","cross-platform","docker","nginx","node","nodejs","typescript","video","video-processing"],"created_at":"2025-03-25T12:18:53.274Z","updated_at":"2026-04-19T13:32:06.829Z","avatar_url":"https://github.com/codevideo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# codevideo_generator_backend\n\nThe backend engine of codevideo.io used to generate code videos.\n\n## Run Locally\n\nFirst, ensure you have a `.env` file in the root. You can use the `.env.example` file as a template: \n\n```shell\ncp .env.example .env\n```\n\nMake sure to define all values there. To save you (and us) headaches, you should also copy the `.env` file to the `deployments` directory:\n\n```shell\ncp .env deployments/.env\n```\n\n(We're working on sourcing everything from the root `.env` file.)\n\nWith your env setup, install dependencies:\n\n```shell\nnpm install\n```\n\nRun the server:\n\n```shell\nnpm start\n```\n\nThe server should be accessible at `http://localhost:\u003c\u003cPORT\u003e\u003e`, where `\u003c\u003cPORT\u003e\u003e` is the value of the `PORT` environment variable you've selected.\n\n# On Premise / Local Docker Deployment\n\n`codevideo_generator_backend` also ships as a completely standalone docker image. To build and run it, run the following command:\n\n```shell\nsource .env \u0026\u0026\ndocker build -t codevideo_generator_backend --build-arg port=$PORT -f deployments/Dockerfile.local . \u0026\u0026\ndocker run -d -p $PORT:$PORT codevideo_generator_backend \n```\n\nThe container `codevideo_generator_backend` should then be up and running, accessible at `http://localhost:\u003c\u003cPORT\u003e\u003e`, where `\u003c\u003cPORT\u003e\u003e` is the value of the `PORT` environment variable you've set in `.env`. It's up to you to configure further network stuff such as a reverse proxy, SSL, etc. Note the difference here from AWS deployment in that the serverless handler is not the entrypoint of the container, but rather just the `npm start` command.\n\n## Local AWS Deployment\n\nIf you want to deploy the AWS docker image locally, you can do so by running the following command:\n\n```shell\nsource .env \u0026\u0026\ndocker build -t codevideo_generator_backend --build-arg port=$PORT -f deployments/Dockerfile.aws . \u0026\u0026\ndocker run -d -p $PORT:$PORT codevideo_generator_backend\n```\n\n## AWS Deployment\n\n***AWS tooling is more than... elegant. We are hoping to get an AWS lambda deploy working. Until then, see the complete nginx stack deploy section below***\n\nAWS deployment is managed by pulumi within the `deployments` directory. It handles truly everything, from user creation, roles, and so on. To get started, first ensure pulumi is installed:\n\n```shell\nbrew install pulumi/tap/pulumi\n```\n\nThen ensure you have a `.env` file in the `deployments` directory. You can use the `.env.example` file as a template:\n\n```shell\ncp deployments/.env.example deployments/.env\n```\n\nThen, make sure to define all values there.\n\nYou should then be able to run the following commands to deploy the app:\n\n```shell\ncd deployments \u0026\u0026\nsource .env \u0026\u0026 \npulumi up --yes\n```\n\nIf all goes well, you should see pulumi begin to deploy your stack.\n\n## Complete Nginx Stack Deploy\n\nIf you want to deploy the entire stack, including nginx, you can do so by running the following command:\n\n```shell\nsource .env \u0026\u0026 docker-compose -f deployments/docker-compose.yml up -d\n```\n\n### Certs for your stack\n\nNote - the certification process assumes you have two domains, one of them having a `staging.` subdomain prefix. If you don't want this pattern, you'll need to modify `nginx/conf.d/api.conf` and `nginx/conf.d/staging.api.conf` to match your domain names.\n\nMove into deployment directory:\n\n```shell\ncd deployments\n```\n\nDownload the helper script:\n\n```shell\ncurl -L https://raw.githubusercontent.com/wmnnd/nginx-certbot/master/init-letsencrypt.sh \u003e init-letsencrypt.sh\n```\n\nOpen the script and edit the following lines:\n\n```shell\ndomains=(YOUR_DOMAIN_ONE YOUR_DOMAIN_TWO)\ndata_path=\"./volumes/certbot\"\nemail=\"\u003c\u003cYOUR_EMAIL\u003e\u003e\" # Adding a valid address is strongly recommended\nstaging=0 # Set to 1 if you're testing your setup to avoid hitting request limits\n```\n\nAllow execution of the script:\n\n```shell\nchmod +x init-letsencrypt.sh\n```\n\nRun the script:\n\n```shell\n./init-letsencrypt.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodevideo%2Fcodevideo_generator_backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodevideo%2Fcodevideo_generator_backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodevideo%2Fcodevideo_generator_backend/lists"}