Module
Module 2 of 6Lesson 2 of 2~22 min

Environment variables and secrets, without leaks

Lesson 2 of the module "Decide on the architecture and protect your secrets" in the course "Add a database, authentication and payments to your app".

Lesson objective

By the end of this lesson, you will be able to map your app's environment variables, tell publishable keys from secret keys, put each secret in the only place it should live (a local file ignored by Git, the host's settings, the server functions' secrets) and respond to a leak.

Where it fits

Decide on the architecture and protect your secrets

What has to leave the browser, on which platform, and where does each key belong?

Lessons in this module

  1. What has to leave the browser, and where to put it
  2. Environment variables and secrets, without leaks (this lesson)

What you will learn in the course

This lesson is part of the course Add a database, authentication and payments to your app

  • Decide what stays in the browser and what must move to the server, and choose a back-end platform that fits your app, your budget and your data.
  • Manage environment variables and secrets (public VITE_ variables, secret keys on the server only, .env files kept out of Git, rotation after a leak).
  • Have the agent design a data model and its migrations, then check that data is actually stored and linked to the right user.
  • Write, have written and test Row Level Security rules that guarantee each user only accesses their own data and that plan limits are enforced in the database.
  • Add sign-up, sign-in, sign-out and password reset, and verify the flows, email confirmation and redirect URLs.
  • Integrate Stripe Checkout in test mode (product, price, session created on the server, test cards) without exposing the secret key.
  • Hold payment status on the server with signed, deduplicated Stripe webhooks, tested with the Stripe CLI or the Dashboard.
  • Apply GDPR basics (information, account deletion, processors) and a go-live checklist before taking real payments.