Quarantine Chorus website and serverless backend.
- A Google Cloud account
- A Netlify account
- gcloud cli
- terraform
- python3
Directory | Description |
---|---|
web | Website |
functions | Google Cloud functions |
infrastructure | Terraform files |
Deployment is triggered for every push to master.
Functions are deployed using a Github action.
The website is deployed to Netlify at https://quarantine-chorus.netlify.app/.
See doc/architecture.svg for a diagram.
- Submission upload
- User submits metadata
- Metadata is stored in firestore (a NoSQL database)
- Backend returns a one-time upload url
- File is uploaded to cloud storage
- Audio pipeline (triggered by cloud storage upload)
- Audio is extracted and compressed
- Audio is aligned with reference files (TODO)
- Alignment data is written to firestore (TODO)
- Video pipeline (TODO)
- Original upload is resized and aligned using data from the audio pipeline
- Videos are combined into a final product
- Better to do video by part, or everyone in a single video? Probably depends on how many submissions there are