Codeqlick Cloud · for developers

Docs

Getting started

You need Node 20 or later and a Codeqlick account.

  1. Create your team in the console.
  2. Sign in from your terminal (it opens the browser for you to approve):
npx @codeqlick/cli login
  1. In your project's folder, link it to a Cloud project (or create one):
npx @codeqlick/cli init
  1. Build your site and deploy it:
npm run build
npx @codeqlick/cli deploy dist --prod

Your site is live at https://<project>.codeqlick.app. If you use it often, install it with npm i -g @codeqlick/cli and type just codeqlick.

The command-line tool

| Command | What it does | |---|---| | codeqlick login | Signs in by approving it in the browser (--token <cqk_…> to use a token) | | codeqlick logout | Forgets the token saved on this machine | | codeqlick whoami | Your account and teams | | codeqlick init | Links the folder to a project (writes codeqlick.json) | | codeqlick deploy [folder] | Uploads the folder as a new deployment (--prod publishes it, -m "message") | | codeqlick deployments | The project's deployments, newest first | | codeqlick promote <id> | Publishes an earlier deployment | | codeqlick rollback | Goes back to the deployment published before the current one | | codeqlick domains | Your domains (add, check and rm <domain>) | | codeqlick open | Opens the published site |

codeqlick.json keeps the team, the project and the folder that is deployed; commit it. The token is saved in ~/.config/codeqlick/config.json (readable only by your user).

Deployments and previews

Each deploy creates a deployment that never changes, with its own address: https://<project>--<id>.codeqlick.app (not indexed by search engines). Without --prod it is a preview; with --prod it also becomes the published version at https://<project>.codeqlick.app and on your domains.

To go back, codeqlick rollback or the "Publish" button of any deployment in the console. The switch is instant and atomic: nobody sees half a site.

We keep the last 20 deployments of each project, plus the published one. We don't back up your files: keep your sources.

What is uploaded: everything in the folder except files and folders starting with a dot (but .well-known). To leave out more, add a .codeqlickignore with one pattern per line (*.map, drafts/). There must be an index.html at the root.

Routes, 404 and single-page apps

  • /about serves about.html or about/index.html.
  • If 404.html exists, it is shown for pages that don't.
  • If 200.html exists, it is served for any route that doesn't exist: that's how single-page apps work (React Router, Vue Router…). Copy your index.html as 200.html when building.
  • Files under /assets/, /_astro/ and /_next/static/ are cached for a year; HTML is always revalidated.

Custom domains

In the console ("Domains" tab) or with codeqlick domains add docs.yourdomain.com:

  1. Prove it is yours with a TXT record _codeqlick.<domain> with the value we show you.
  2. Point it here: a subdomain with a CNAME to <project>.codeqlick.app; a root domain with an A record to the IP we show you.
  3. In a few minutes it gets its HTTPS certificate and becomes live. We check by ourselves every 10 minutes, or when you press "Check".

Up to 5 domains per project. www.yourdomain.com and yourdomain.com are two domains.

From GitHub Actions or another CI

Create a token in the console (Tokens, ideally restricted to the team) and save it as the secret CODEQLICK_TOKEN:

- run: npm ci && npm run build
- run: npx @codeqlick/cli deploy dist --prod -m "${{ github.event.head_commit.message }}"
  env:
    CODEQLICK_TOKEN: ${{ secrets.CODEQLICK_TOKEN }}

With codeqlick.json in the repository nothing else is needed. Without it, add CODEQLICK_TEAM and CODEQLICK_PROJECT. On GitHub Actions each deployment records its commit and branch.

Teams and permissions

  • Owner: everything, including deleting the team and making others owners.
  • Admin: members, invitations and projects.
  • Member: deploys, manages domains and sees everything.

Invitations arrive by email and only an account with that email can accept them. The team's history keeps every change, who made it and through which token.

Free plan limits

| | | |---|---| | Teams owned | 3 | | Projects per team | 10 | | Storage per team | 1 GB | | One deployment | 100 MB and 10,000 files (50 MB compressed) | | Deployments | 30 an hour per team | | Domains per project | 5 | | Members per team | 10 | | Tokens per person | 20 |

Traffic is fair use: each address takes 50 requests a second. If you go over it often we'll let you know before anything else.

API

Everything the console does is at https://api.codeqlick.com/v1/cloud, with Authorization: Bearer <token>. A deployment is a multipart/form-data with the field bundle (the folder as .tar.gz) and, optionally, target (preview or production), message, commit and branch:

tar -czf site.tar.gz -C dist .
curl -fsS -H "Authorization: Bearer $CODEQLICK_TOKEN" \
  -F bundle=@site.tar.gz -F target=production \
  https://api.codeqlick.com/v1/cloud/projects/<id>/deployments

Other routes: GET /cloud/me, GET /cloud/teams/<team>/projects, GET /cloud/projects/<id>/deployments, POST …/deployments/<id>/promote, GET|POST /cloud/projects/<id>/domains. Errors follow RFC 9457 (application/problem+json).

Reporting abuse

If you find a page hosted here that deceives, spreads malware or infringes rights, report it.