An application for a household to manage a list of recipes and help with meal planning.
The backend is an AWS serverless application and designed to run at minimal ongoing cost. The frontend is a React / Vite single page application that's deployed with Cloudflare pages.
- Create a new Google Cloud project and enable access to the Calendar API. This application uses no paid resources in Google Cloud.
- Set up an new OAuth consent screen in your Google project, using the domain you'll deploy the frontend to.
- Create a new service account for the application and save the generated JSON key to the root of this folder as
service-account-google-credentials.json
. - Create a new Google Calendar using your main Google account, and share edit permissions with the service account email. Make a note of the calendar ID (listed on the settings page).
- Install terraform and make sure your AWS credentials are available to it.
- Deploy the backend:
- Navigate to the infrastructure folder
cd infra
. - Copy
example.tfvars
toproduction.auto.tfvars
and fill in your calendar ID. - Run
terraform init
to set up the providers - Run
terraform apply
to deploy the backend - Copy the API endpoint URL output - we'll need this to deploy the frontend
- Navigate to the infrastructure folder
- Deploy the frontend:
- Copy
frontend/.env.example
tofrontend/.env
and fill in the variables with the API URL output, OAuth client ID from the Google consent screen and the email addresses of users you want to allow sign in. - Configure the build in Cloudflare Pages, using the Git repository as the source. Make sure to supply the same environment variables.
- Copy
Create and activate a virtual environment
python -m venv venv
source venv/bin/activate