First, set up docker and docker-compose on your local machine.
docker-compose up -d # pull docker image, and bring up container
npm i # or yarn, if you use that
npm install -g sequelize-cli # install sequelize CLI, which we'll use as our ORM
sequelize db:migrate # run migrations
sequelize db:seed:all # run seed file
sequelize db:migrate --env test # and again for tests
sequelize db:seed:all --env test
psql -h localhost -d my_api_mvp -U username # just check exists (password is "password")
npm run start:dev # or yarn start:dev
Now, go ahead and navigate to http://localhost:3000/landing and enter your email. If all is well, you should see an error saying You did not provide an API key..
First, create a stripe account, and input your keys into the .env file. Next, create a test product using the stripe dashboard, and take note of the price ID. You'll need to input this in the .env file.
Now, go ahead and set up a local webhook test using the stripe CLI, as explained here. The webhook secret will also need to be added to the .env.
Lastly, remember to change BASE_URL in production.json so Stripe knows where to redirect to.
You'll need to configure which email provider you are using in EmailService.js. For instance, if you are using Fastmail, you will set service to FastMail, and configure the necessary username and password in your environment config.
Run your DB container with docker-compose up -d.
Next, set up the stripe webhook for local testing with stripe listen --forward-to http://localhost:3000/billing/webhook, then yarn start:dev.
Q: "Why am I getting a validation error when I run migrations in the test environment"
A: It's some sequelize weirdness. You can go ahead and delete database_test.sqlite and remigrate/reseed.