Skip to content
This repository has been archived by the owner on Jul 2, 2024. It is now read-only.

The Unified Shopping List is an open source app to connect your shopping lists in real time.

License

Notifications You must be signed in to change notification settings

michael-genson/Unified-Shopping-List

Repository files navigation

Amazon ended support for shopping list integrations, so I've decided to archive this repo as I no longer have any use for it. Thanks for all of the support while it lasted.

Unified Shopping List

The Unified Shopping List is an open source app to connect your shopping lists in real time. The goal of the USL is to make managing your grocery shopping easy and configurable. This project was born out of a frustration with existing integration tools, for both being a pain (or impossible) to set up, unreliable, and/or having little-to-no configurability.

The USL relies heavily on Mealie, the open source, self-hosted recipe manager developed by hay-kot. This app does not work without an instance of Mealie to back it up, so be sure to check it out if you haven't already! The app piggybacks heavily on the Mealie API, and much of the dev environment was pulled directly from the work done over there. We only officially support the v1 releases of Mealie, as well as the latest release.

To get started, head over to https://shopping-lists.genson.dev and register.

Architecture

The Unified Shopping List backend is built using FastAPI and hosted in AWS using a combination of API Gateway and Lambda. We use DynamoDB for user storage and SQS for managing webhooks.

The frontend is served by FastAPI rendering Jinja2 templates + Bootstrap, rather than a more robust framework like Angular or Vue. This keeps things ultra-simple (and the frontend is really only for configuration anyway).

Why host a centralized app? Why not build a self-hosted solution / build this functionality into Mealie?

I am a huge supporter of self-hosted applications; this app is built entirely around Mealie, which itself is a self-hosted app. It's hard to consider data that you have "somewhere else" truly yours.

That said, one of the major roadblocks with integrations comes down to the exposed APIs and authentication schemes. The goal of this app at its inception was to integrate Mealie with Todoist and Amazon's Alexa. Sadly, Amazon is removing all support for integrating with Alexa lists. However, while this was still supported, any and all Alexa integrations require an Alexa skill, which connects via OAuth, which requires a central authentication server. If you wanted to do this yourself, you would need to build and host your own Alexa skill.

While Todoist has a REST API, their webhook subscriptions (which this app uses to initiate a sync) require an app using OAuth, which (you guessed it) requires a central authentication server. You can get it working without one, but it's not particularly easy if you're not experienced with OAuth.

Which applications are supported?

Since we are just releasing the Unified Shopping List, we don't support too many applications yet. Feel free to explore GitHub discussions and suggest new apps to support.

Supported applications:

(Soft) Roadmap

Features

  • add support for more applications
  • explore weekly item scheduling
  • expand API for end-user custom integrations

Quality of Life

  • improve mobile frontend experience

Development / DevOps

  • remove SAM from dev container
  • implement github actions
    • deployments
    • versioning