Migrating production infrastructure? Get up to ₹10,000 in migration credits. Apply now
voroaDocs
Deploys

Databases from your repo: Postgres and Key Value auto-linked

Voroa reads your repo when you create a web service, suggests Postgres or Key Value, creates them with it, and adds DATABASE_URL or REDIS_URL for you.

What it does

When you create a web service from a GitHub repository, Voroa checks a few files in it to see whether your app needs a database. If it does, the New Web Service page shows a Databases section with a card for each one, for example:

This app looks like it needs a database. We found package.json uses pg. Create a Postgres database with this service and we will add DATABASE_URL to it.

Tick the card, choose the instance type, and create the service. Voroa creates the database with it and puts its connection string into your service’s environment variables under the name shown. You do not copy anything by hand.

What Voroa looks at

Only these files, in the root directory you chose for the service:

  • .env.example, .env.sample, .env.template and .env.dist - the names of the variables, such as DATABASE_URL or REDIS_URL
  • package.json - packages such as pg, postgres, ioredis, redis or bullmq
  • requirements.txt, pyproject.toml and Pipfile - packages such as psycopg2, asyncpg, redis or celery
  • docker-compose.yml or compose.yaml - an image: line for postgres or redis
  • prisma/schema.prisma - the datasource provider and the variable its url reads

Voroa reads variable names only. A value in your .env.example is never stored, shown or logged. If your repository has none of these signs, the section does not appear. If the repository cannot be read at that moment, the page says so and you can add a database after the service is created.

Choosing the instance type

Each database has its own instance list, the same one as on the New Database page.

  • Free is selected by default. A free database uses your workspace’s free hours, and the card says so.
  • Paid types show the price, GST and the amount due now before you agree. You can choose one paid item per service you create. If the web service itself is on a paid instance, the databases stay free here. You can upgrade any of them later from its own page.

The variable name

The card fills in the name your repository uses (for example DATABASE_URL, or PRIMARY_DB if your Prisma schema reads that). You can change it before you create the service. It cannot be a name you already added under Environment variables on the same page.

What happens after you click Deploy

  1. The web service is created, and its first deploy waits for its databases.
  2. Each database is created. A free one is ready in a few seconds and its connection string is added to the service. A paid one opens the payment window on the same page. The database is created once the payment completes.
  3. When every database is ready, the service deploys on its own.

When the service and its databases are paid together

On accounts where New Web Service is shown as steps (Source, Settings, Instance, Databases, Review & pay), you only choose a plan for each database. Nothing is paid until the last step, which shows every choice and one total for the service and its paid databases. You agree once and pay once.

If the payment is not completed, nothing is charged. Complete payment on the service page then pays the same total in one go. If something you paid for cannot be set up when the payment arrives (for example, the service was deleted while the payment window was open), the rest is set up, and the part we could not set up is refunded to you with a credit note.

The service page shows Waiting for database while this happens. It has two buttons:

  • Complete payment - shown when a paid database is waiting for its payment.
  • Deploy without the database - deploys the service now. The database is not deleted, and you can connect it later.

If a paid database’s payment is not completed within 48 hours, the service is deployed without it and you receive one email. Nothing is charged, and the unpaid database stays on your Databases page until you delete it. To add a database after that, create one from New Database and connect it as described below.

Connecting a database later

Open the database and use Connect to a service: choose the service and the variable name. This changes the database’s password and adds the new connection string to that service, which then redeploys. Anything else that used the old password stops working, so update it too.

If you have made another user the database’s default user, Connect to a service cannot be used for that database, because it would change the wrong password. Copy the connection string for your user from the database page and add it to the service yourself. If the service already has a variable with the name you choose, pick a different name or remove the existing variable first.

After it is connected

  • The service’s Environment tab shows Linked to the database next to that variable. The value is write-only, like every other variable.
  • If you change the database password, Voroa updates the linked services and redeploys them. If you chose your own default database user, or the person changing the password cannot edit that service’s variables, the tab shows a notice instead and you update the variable yourself.
  • If you edit or delete the variable yourself, Voroa stops updating it from then on.
  • Deleting the database does not remove the variable from your service.

Not available yet

GitLab repositories, MySQL and MongoDB, and more than one database of the same kind per service are not part of this. You can still create any of them on their own and add the connection string under Environment variables.

Last updated November 12, 2026