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.tfvarstoproduction.auto.tfvarsand fill in your calendar ID. - Run
terraform initto set up the providers - Run
terraform applyto 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.exampletofrontend/.envand 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