California has a program known as the cottage kitchen program, which allows cooks to get licensed to sell their homemade goods. We wanted to create a place for home cooks to sell their goods.
Cofu stands for Community-Food.
What it does
A cross-platform mobile marketplace for home cooks inspired by Depop and Uber Eats. We connect licensed home cooks to customers in their community who want to buy from them.
How we built it
- We used Flutter to build our cross-platform iOS and Android App
- We used NodeJS to build our server
- We used GCP Memory Store Redis to store our sessions
- We used GCP Cloud PostgreSQL to store our persistent data
- We used GCP Cloud Storage to store our profile, food, and license images
- We used GCP Cloud CDN to distribute images with low latency (CDN working - automatic link to db in progress - Currently using raw GCS interface on client)
- We used GCP App Engine to host our NodeJS server
- We used Github Actions + Cloud Build to completely automate deployments
- We used Google Maps API to encode user addresses to locations, and locations to addresses
Challenges we ran into
Uploading Images required a multipart HTTP request to our NodeJS server which caused many headaches for our frontend and backend team.
Our backend team also had a habit of writing API routes, however forgetting to add them to the main server, and being extremely confused by the 404 errors that came.
Accomplishments that we're proud of
- Our app is functioning, our feed, profile, posting items, and submitting licenses are all fully connected to the database.
- We built our app security ourselves. We hash and check passwords using Bcrypt.
- Our app has many animations
What we learned
- We learned how to create custom animations in Flutter
- We learned about sending and receiving multipart HTTP requests
What's next for Cofu
- We will rewrite the state to rely on Providers and MobX so it is more scalable.
- We will add Google Cloud AI to analyze licenses
- We will create a license review system
- We will create an iOS merchant ID so we can accept payments through Apple Pay