{"id":17172936,"url":"https://github.com/20tab/nextjs-continuous-delivery","last_synced_at":"2025-08-09T14:07:46.039Z","repository":{"id":40411430,"uuid":"304240795","full_name":"20tab/nextjs-continuous-delivery","owner":"20tab","description":"A NextJS project ready for continuous delivery.","archived":false,"fork":false,"pushed_at":"2024-05-07T10:45:43.000Z","size":1487,"stargazers_count":12,"open_issues_count":1,"forks_count":3,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-10-31T21:23:46.695Z","etag":null,"topics":["docker","gitlab","javascript","nextjs","react","redux","ssr","styled-components","typescript"],"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/20tab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-15T07:12:44.000Z","updated_at":"2024-06-27T09:27:58.000Z","dependencies_parsed_at":"2024-05-07T11:42:54.264Z","dependency_job_id":"bc9514e4-cb29-4cd0-8c89-6f89ac5bc789","html_url":"https://github.com/20tab/nextjs-continuous-delivery","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/20tab%2Fnextjs-continuous-delivery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/20tab%2Fnextjs-continuous-delivery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/20tab%2Fnextjs-continuous-delivery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/20tab%2Fnextjs-continuous-delivery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/20tab","download_url":"https://codeload.github.com/20tab/nextjs-continuous-delivery/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223597061,"owners_count":17170871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docker","gitlab","javascript","nextjs","react","redux","ssr","styled-components","typescript"],"created_at":"2024-10-14T23:49:01.478Z","updated_at":"2024-11-07T22:03:38.128Z","avatar_url":"https://github.com/20tab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Talos Submodule - NextJS\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)\n\n\u003e A [NextJS](https://nextjs.org/) project template ready for continuous delivery.\n\n## 🧩 Requirements\n\nThe Talos script can be run either using Docker or a Python virtual environment.\n\n### 🐋 Docker\n\nIn order to run Talos via Docker, a working [Docker installation](https://docs.docker.com/get-docker/) is the only requirement.\n\n### 🐍 Virtual environment\n\nIn order to run Talos in a virtual environment, first clone the repository in a local projects directory and ensure it is your current directory:\n\n```console\ncd ~/projects\ngit clone git@github.com:20tab/nextjs-continuous-delivery.git talos-nextjs\ncd talos-nextjs\n```\n\nThen, create and activate a virtual environment and install the requirements:\n\n```console\npython3.12 -m venv .venv\nsource .venv/bin/activate\npython3 -m pip install --upgrade pip setuptools\npython3 -m pip install -r requirements/common.txt\n```\n\nThe `terraform` cli package is required, unless you want to generate a project only locally. To install it we suggest to use the official [install guide](https://learn.hashicorp.com/tutorials/terraform/install-cli).\n\n## 🔑 Credentials (optional)\n\n### 🦊 GitLab\n\nIf the GitLab integration is enabled, a Personal Access Token with _api_ permission is required.\u003cbr/\u003e\nIt can be generated in the GitLab User Settings panel.\n\n**Note:** the token can be generated in the Access Tokens section of the GitLab User Settings panel.\u003cbr/\u003e\n⚠️ Beware that the token is shown only once after creation.\n\n## 🚀️ Quickstart\n\nChange to the projects directory, for example:\n\n```console\ncd ~/projects\n```\n\n### 🐋 Docker\n\n```console\ndocker run --interactive --tty --rm --volume $PWD/.dumps:/app/.dumps --volume $PWD/.logs:/app/.logs --volume $PWD:/data 20tab/talos-nextjs:latest\n```\n\n### 🐍 Virtual environment\n\n```console\nsource talos-nextjs/.venv/bin/activate\n./talos-nextjs/start.py\n```\n\n### Example\n\n```console\nProject name: My Project Name\nProject slug [my-project-name]:\nService slug [frontend]:\nProject dirname (frontend, myprojectname) [frontend]: myprojectname\nDeploy type (digitalocean-k8s, other-k8s) [digitalocean-k8s]:\nTerraform backend (gitlab, terraform-cloud) [terraform-cloud]:\nTerraform host name [app.terraform.io]:\nTerraform Cloud User token:\nTerraform Organization: my-organization-name\nDo you want to create Terraform Cloud Organization 'my-organization-name'? [y/N]:\nChoose the environments distribution:\n  1 - All environments share the same stack (Default)\n  2 - Dev and Stage environments share the same stack, Prod has its own\n  3 - Each environment has its own stack\n (1, 2, 3) [1]:\nDevelopment environment complete URL [https://dev.my-project-name.com/]:\nStaging environment complete URL [https://stage.my-project-name.com/]:\nProduction environment complete URL [https://www.my-project-name.com/]:\nDo you want to configure Redis? [y/N]:\nDo you want to use GitLab? [Y/n]:\nGitLab group slug [my-project-name]:\nMake sure the GitLab \"my-project-name\" group exists before proceeding. Continue? [y/N]: y\nGitLab private token (with API scope enabled):\nSentry DSN (leave blank if unused) []:\nInitializing the frontend service:\n...cookiecutting the service\n...generating the .env file\n...creating the GitLab repository and associated resources\n...creating the Terraform Cloud resources\n```\n\n## 🗒️ Arguments\n\nThe following arguments can be appended to the Docker and shell commands\n\n#### User id\n\n`--uid=$UID`\n\n#### Group id\n\n`--gid=1000`\n\n#### Output directory\n\n`--output-dir=\"~/projects\"`\n\n#### Project name\n\n`--project-name=\"My project name\"`\n\n#### Project slug\n\n`--project-slug=\"my-project-name\"`\n\n#### Project dirname\n\n`--project-dirname=\"myprojectname\"`\n\n### 🎖️ Service\n\n#### Service slug\n\n`--service-slug=frontend`\n\n#### Service port\n\n`--internal-service-port=3000`\n\n#### Backend Internal Url\n\n`--internal-backend-url=http://backend:8000`\n\n### 📐 Architecture\n\n#### Deploy type\n\n| Description             | Argument                             |\n| ----------------------- | ------------------------------------ |\n| DigitalOcean Kubernetes | `--deployment-type=digitalocean-k8s` |\n| Other Kubernetes        | `--deployment-type=other-k8s`        |\n\n#### Terraform backend\n\n| Name            | Argument                              |\n| --------------- | ------------------------------------- |\n| Terraform Cloud | `--terraform-backend=terraform-cloud` |\n| GitLab          | `--terraform-backend=gitlab`          |\n\n##### Terraform Cloud required argument\n\n`--terraform-cloud-hostname=app.terraform.io`\u003cbr/\u003e\n`--terraform-cloud-token={{terraform-cloud-token}}`\u003cbr/\u003e\n`--terraform-cloud-organization`\n\n##### Terraform Cloud create organization\n\n`--terraform-cloud-organization-create`\u003cbr/\u003e\n`--terraform-cloud-admin-email={{terraform-cloud-admin-email}}`\n\nDisabled args\n`--terraform-cloud-organization-create-skip`\n\n#### Environment distribution\n\nChoose the environments distribution:\nValue | Description | Argument\n------------- | ------------- | -------------\n1 | All environments share the same stack (Default) | `--environment-distribution=1`\n2 | Dev and Stage environments share the same stack, Prod has its own | `--environment-distribution=2`\n3 | Each environment has its own stack | `--environment-distribution=3`\n\n#### Project Domain\n\nIf you don't want DigitalOcean DNS configuration the following args are required\n\n`--project-url-dev=https://dev.project-domain.com`\u003cbr/\u003e\n`--project-url-stage=https://stage.project-domain.com`\u003cbr/\u003e\n`--project-url-prod=https://www.project-domain.com`\n\n#### Redis\n\nFor enabling redis integration the following arguments are needed:\n\n`--use-redis`\n\nDisabled args\n`--no-redis`\n\n### 🦊 GitLab\n\n\u003e **⚠️ Important: Make sure the GitLab group exists before creating.** \u003e https://gitlab.com/gitlab-org/gitlab/-/issues/244345\n\nFor enabling gitlab integration the following arguments are needed:\n\n`--gitlab-private-token={{gitlab-private-token}}`\u003cbr/\u003e\n`--gitlab-group-path={{gitlab-group-path}}`\n\n#### 🪖 Sentry\n\nFor enabling sentry integration the following arguments are needed:\n\n`--sentry-dsn={{frontend-sentry-dsn}}`\n\n#### 🔇 Quiet\n\nNo confirmations shown.\n\n`--quiet`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F20tab%2Fnextjs-continuous-delivery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F20tab%2Fnextjs-continuous-delivery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F20tab%2Fnextjs-continuous-delivery/lists"}