Project Info
This project did not submit a demo video on Devpost.
Inspiration
Food is a basic human need. As someone who often finds themselves wandering the aisles of Target, I know firsthand how easy it is to get lost among the countless products and displays. The experience can quickly become overwhelming, leading to forgotten items and a less-than-efficient shopping trip. This project was born from the desire to transform that chaos into a seamless shopping experience. We aim to create a tool that not only helps users stay organized with their grocery lists but also guides them through the store in a way that makes shopping enjoyable and stress-free.
What it does
TAShopping is a smart grocery list app that records your grocery list in an intuitive user interface and generates a personalized route in (almost) any Target location across the United States. Users can easily add items to their lists, and the app will optimize their shopping journey by mapping out the most efficient path through the store.
How we built it
Data Aggregation: We utilized Selenium for web scraping, gathering product information and store layouts from Target's website. Object Storage: Amazon S3 was used for storing images and other static files related to the products. User Data Storage: User preferences and grocery lists are securely stored using Google Firebase. Backend Compute: The backend is powered by AWS Lambda, allowing for serverless computing that scales with demand. Data Categorization: User items are classified with Google Gemini API: AWS API Endpoint provides a reliable way to interact with the backend services and handle requests from the front end. Webapp: The web application is developed using Reflex, providing a responsive and modern interface for users. iPhone App: The iPhone application is built with Swift, ensuring a seamless experience for iOS users.
Challenges we ran into
Data Aggregation: Encountered challenges with the rigidity of Selenium for scraping dynamic content and navigating web page structures. Object Storage: N/A (No significant issues reported) User Data Storage: N/A (No significant issues reported) Backend Compute: Faced long compute times; resolved this by breaking the Lambda function into smaller, more manageable pieces for quicker processing. Backend Compute: Dockerized various builds to ensure compatibility with the AWS Linux environment and streamline deployment. API: Managed the complexities of dealing with and securing credentials to ensure safe API access. Webapp: Struggled with a lack of documentation for Reflex, along with complicated Python dependencies that slowed development. iPhone App: N/A (No significant issues reported)
Accomplishments we're proud of
Successfully delivered a finished product with a relatively good user experience that has received positive feedback. Achieved support for hundreds of Target stores across the United States, enabling a wide range of users to benefit from the app.
What we learned
We learned a lot about: Gemini: Gained insights into effective data aggregation and user interface design. AWS: Improved our understanding of cloud computing and serverless architecture with AWS Lambda. Docker: Mastered the process of containerization for development and deployment, ensuring consistency across environments. Reflex: Overcame challenges related to the framework, gaining hands-on experience with Python web development. Firebase: Understood user authentication and real-time database capabilities through Google Firebase. User Experience (UX) Design: Emphasized the importance of intuitive navigation and clear presentation of information in app design. Version Control: Enhanced our collaboration skills and code management practices using Git.
What's next
There are many exciting features on the horizon, including: Google SSO for web app user data: Implementing Single Sign-On functionality to simplify user authentication. Better UX for grocery list manipulation: Improving the user interface for adding, removing, and organizing items on grocery lists. More stores: Expanding support to additional retailers, including Walmart and Home Depot, to broaden our user base and shopping capabilities.
Grocery Store Route Optimization
Application to take grocery store shopping list and grocery store location and create an optimal store route to find all items in the shortest path possible; deploy on web android iphone
Example:

Route Creation API
This API allows you to create a route based on a given state, address, and grocery list. It returns an image of the generated route.
Endpoint
POST https://oj35b6kjt7.execute-api.us-west-2.amazonaws.com/default/
valid functions are:
create_routeget_categoriesget_routecategorized_items
Authentication
Authentication is required for this API. Include your API key in the x-api-key header.
Headers
| Header | Value | Description |
|---|---|---|
| Content-Type | application/json | Specifies the request body format |
| x-api-key | Your-API-Key | Your unique API key for authentication |
Request Body
The request body should be a JSON object with the following structure:
get_categories
{
"state": string,
"address": string,
}
categorize_items
{
"categories": array of strings,
"grocery_list": array of strings,
}
get_route and create_route
{
"state": string,
"address": string,
"grocery_dic": {
"label": array of strings
}
}
Fields
| Field | Type | Description |
|---|---|---|
| state | string | The state where the route should be created |
| address | string | The full address for the route |
| grocery_list | array | An array of strings representing grocery categories |
Response
Success Response
- Status Code: 200 OK
- Content-Type: application/json
categorize_items
{
{
"label": array of strings
}
}
get_categories
{
"labels": array of strings
}
get_route
{
"route": array of strings
}
create_route
{
"image": string
}
The image field contains a base64-encoded string representing the route image.
Error Response
- Status Code: 4XX or 5XX
- Content-Type: application/json
{
"message": string
}
The message field contains information about the error.
Example
Request
POST https://oj35b6kjt7.execute-api.us-west-2.amazonaws.com/default/create_route
Content-Type: application/json
x-api-key: vMEKwZ3DMH9CTzD0pmLcR5RQV95XeFoa2JjxyH89
{
"state": "california",
"address": "16858 Golden Valley Pkwy, Lathrop, CA 95330-8535",
"grocery_dic": {
"dairy": ["milk", "yogurt"],
}
}
Response
{
"image": "base64_encoded_image_data"
}
Notes
- The API key provided in the example (
vMEKwZ3DMH9CTzD0pmLcR5RQV95XeFoa2JjxyH89) is just for demonstration purposes. Replace it with your actual API key; This key won't work. nice try
Analysis
View
Metric
- 4
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CIn code
- C++In code
- CSSIn code
- JavaScriptIn code
- PythonIn code
- AWSClaimed
- FirebaseClaimed
- Google GeminiClaimed
6 of 9 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
31 MB
Source files
2,557
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Turtdle/TAShopping-Backend
4,000 files · 174.5 MB · @ 64eb843
Structure
API & routing
66 files · 2%Request entry points: routes, handlers and controllers.
Application logic
3,124 files · 78%Domain rules, services and shared utilities.
Data & schema
2 files · 0%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python100%
- Markdown0%
- CSS0%
- JavaScript0%
- Shell0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
deployment_package/package/requirements.txt
pypi · 4- boto3
- numpy
- Pillow
- requests
deployment_package/requirements.txt
pypi · 4- boto3
- numpy
- Pillow
- requests
deployment_package_2/package/requirements.txt
pypi · 2- anthropic
- google-generativeai
deployment_package_2/requirements.txt
pypi · 2- anthropic
- google-generativeai
deployment_package_3/package/requirements.txt
pypi · 1- boto3
deployment_package_3/requirements.txt
pypi · 1- boto3
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This repository has more files than are indexed here, so the diagram and browser show a partial tree. Open it on GitHub for the complete structure.
Feature verification
AWS API Gateway endpoint for backend requestsVerified
AWS API Endpoint provides a reliable way to interact with the backend services and handle requests from the front end
Claimed on Devposthigh confidenceREADME.md:16— documents a POST endpoint at an execute-api.us-west-2.amazonaws.com URL with functions create_route/get_categories/get_route/categorized_itemsfetch-agents/create_route_client.py:19— client script actually calls that execute-api base_url with x-api-key auth and consumes get_categories/categorize_items/create_route responses
Item categorization via Google Gemini APIVerified
User items are classified with Google Gemini API
Claimed on Devposthigh confidenceuser_list_to_categories.py:2— imports google.generativeai, configures a gemini-1.5-flash model, and prompts it to categorize the grocery list into a JSON dict
Personalized store route generationVerified
App generates a personalized, optimized shopping route through a Target store
Claimed on Devposthigh confidencesingle-use-scripts/create_route_helper.py:132— shopping_order() computes a nearest-neighbor visiting order over store label positions starting from an entrancesingle-use-scripts/create_route_helper.py:212— a_star() pathfinds between route waypoints avoiding barrier pixels, and draw_route() renders the path onto the store imagesingle-use-scripts/create_route_lambda.py:47— lambda_handler wires shopping_order and draw_route together into the create_route API response
Serverless backend on AWS LambdaVerified
The backend is powered by AWS Lambda, allowing for serverless computing that scales with demand
Claimed on Devposthigh confidencesingle-use-scripts/create_route_lambda.py:14— defines lambda_handler(event, context), the standard AWS Lambda entrypoint signature, that processes API requestsdeployment_package_3/lambda_function.py:20— a second lambda_handler implementing the get_categories function, packaged for Lambda deployment
Web scraping of Target product/store data with SeleniumVerified
Utilized Selenium for web scraping, gathering product information and store layouts from Target's website
Claimed on Devposthigh confidencesingle-use-scripts/html_map_from_url.py:1— imports selenium webdriver and drives a headless Chrome session to click through Target's store map UI and capture page source
Amazon S3 object storage for images/static filesCode-supported
Amazon S3 was used for storing images and other static files related to the products
Claimed on Devpostmedium confidencesingle-use-scripts/create_route_lambda.py:9— get_s3_object() uses boto3 to fetch store map images and HTML from S3 buckets 'targetmapimages' and 'targethtml'
Route Creation REST API with authenticationCode-supported
POST endpoint with create_route, get_categories, get_route, categorized_items functions, authenticated via x-api-key header
Claimed on readmemedium confidencesingle-use-scripts/create_route_lambda.py:14— implements the create_route function described in the READMEdeployment_package_3/lambda_function.py:20— implements the get_categories function described in the READMEuser_list_to_categories.py:6— implements the categorize_items/categorization logic described in the README, but no source file in this clone implements a distinct get_route function or the x-api-key validation itself (likely enforced by API Gateway config, not visible in code)
Support for many Target store locations across the USCode-supported
Achieved support for hundreds of Target stores across the United States
Claimed on Devpostmedium confidencesingle-use-scripts/gather_stores.py:7— scrapes Target's store directory across all states to build a list of store URLs/addressessingle-use-scripts/html2/california/789 Mission St, San Francisco, CA 94103-3132.txt— only a handful of scraped store HTML files exist in this clone (a few CA, AZ, AL stores), not evidence of hundreds of stores actually processed
Grocery list creation and management UIClaimed only
Users can easily add items to their lists via an intuitive user interface
Claimed on Devposthigh confidenceiPhone app built with SwiftClaimed only
The iPhone application is built with Swift, ensuring a seamless experience for iOS users
Claimed on Devposthigh confidenceMulti-platform deployment (web, Android, iPhone)Claimed only
Application to take grocery store shopping list and grocery store location and create an optimal store route to find all items in the shortest path possible; deploy on web android iphone
Claimed on readmehigh confidenceUser grocery list storage via Google FirebaseClaimed only
User preferences and grocery lists are securely stored using Google Firebase
Claimed on Devposthigh confidenceWeb application built with ReflexClaimed only
The web application is developed using Reflex, providing a responsive and modern interface for users
Claimed on Devposthigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.