Project Info
CruzHacks2025
Team Members: Bodie, Luis, Paul, Judy Project Name: Spritz
SpritzAI – Affordable Alternatives to Luxury Fragrances
Spritz is a web application built to help users find affordable alternatives—or "dupes"—for high-end perfumes and colognes. Aimed at students, budget-conscious shoppers, and everyday consumers who love great scents without the luxury markup, the app uses AI and web scraping to deliver personalized recommendations. Users simply paste the URL of a luxury fragrance product into the app, and it returns similar-smelling, budget-friendly options along with images, detailed information, and database-generated comparisons.
How It Works
- User Input: The user enters a URL of a high-end fragrance product.
- Web Scraping: The backend uses Puppeteer to scrape the product page's HTML.
- Fragrance Analysis: The HTML is sent to the Gemini API, which identifies the product name and classifies it into a predefined scent category (e.g., floral, woody, citrus).
- Database Lookup: The backend queries a PostgreSQL database (running in a Docker container) to find exact or category-based dupes.
- AI-Powered Results: If matches are found, they’re returned to the user along with product images, purchase links, and LLM-generated descriptions and comparisons.
Tech Stack
Frontend
- React.js
- React Router
- TailwindCSS (for styling)
Backend
Application Structure
client/: React frontendserver/: Node/Express backenddocker/: Docker Compose & PostgreSQL setupdb/: Database schema and dupe data
🚀 Running the App
To run the app locally:
# Stop and remove existing volumes
docker-compose -f ./docker/docker-compose.yml down --volumes
# Start PostgreSQL DB
npm run db
# Start backend server and frontend
npm run dev
#Start frontend (make sure all required components are installed, look in json file)
npm start
Analysis
View
Metric
- 15
- 11
- 3
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
- CSSIn code
- ExpressIn code
- FirebaseIn code
- Google GeminiIn code
- HTMLIn code
- JavaScriptIn code
- PostgreSQLIn code
- ReactIn code
- SQLIn code
- DockerClaimed
9 of 10 appear in the indexed code. 1 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
549 KB
Source files
28
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
paulleeisme06/CruzHacks2025
45 files · 3.3 MB · @ eed52d0
Structure
Interface
3 files · 7%Screens, components and styles rendered to the user.
API & routing
1 file · 2%Request entry points: routes, handlers and controllers.
Application logic
15 files · 33%Domain rules, services and shared utilities.
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
- SQL90%
- JavaScript8%
- Markdown1%
- YAML1%
- HTML0%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/package.json
npm · 12- @google/generative-ai
- cors
- dotenv
- express
- pg
- puppeteer
- puppeteer-extra
- puppeteer-extra-plugin-stealth
- swagger-ui-express
- yamljs
- +2 more
spritz_test/package.json
npm · 10- @testing-library/dom
- @testing-library/jest-dom
- @testing-library/react
- @testing-library/user-event
- firebase
- react
- react-dom
- react-router-dom
- react-scripts
- web-vitals
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 project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.