Skip to content

unownone/spenddy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

43 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Spenddy

Spenddy Logo

Transform Your Swiggy Order Data into Beautiful Analytics

A modern, privacy-first web application that analyzes your Swiggy order history with interactive dashboards and insightful visualizations.

React TypeScript Tailwind CSS Vite

✨ Features

πŸ“Š Comprehensive Analytics

  • πŸ“ˆ Overview Dashboard - Key metrics, order frequency, and spending summaries
  • πŸ’° Spending Analysis - Monthly/yearly trends with detailed breakdowns
  • 🍽️ Restaurant Analytics - Top restaurants, cuisine preferences, and ordering patterns
  • πŸ“ Location Insights - Interactive map with real restaurant and delivery coordinates
  • ⏰ Order Activity - GitHub-style heatmap showing your ordering patterns throughout the year

🎨 Modern Experience

  • πŸŒ™ Beautiful Dark Theme - Eye-friendly interface with smooth animations
  • πŸ“± Fully Responsive - Perfect experience on desktop, tablet, and mobile
  • 🎯 Interactive Visualizations - Dynamic charts and maps powered by Chart.js and Leaflet
  • ⚑ Fast & Smooth - Optimized performance with React 18 and modern build tools

πŸ”’ Privacy-First Design

  • 🏠 100% Client-Side - All data processing happens in your browser
  • πŸ” Zero Data Collection - Your personal data never leaves your device
  • πŸ“€ No External Servers - Complete privacy and security guaranteed

πŸš€ Quick Start

1. Install the Chrome Extension (Required)

Spenddy offers a companion Chrome extension that grabs your Swiggy order history in a single click and stores it securely in your browser.

Heads-up! Manual upload has been removed in favour of the one-click browser extension.
The UI no longer shows an upload panel – simply install the Spenddy Link extension and your data will appear automatically.


2. Manual Upload (Alternative)

If you prefer not to use the extension you can still upload the data yourself:

  1. Request your data export from Swiggy.
  2. Extract the ZIP and locate allOrders.json.
  3. Drag & drop the file into Spenddy.

πŸ“± How to Use

Option A – Zero-Click via Chrome Extension

  1. Install the extension from ChromeΒ WebΒ Store (or manual GitHub version).
  2. Follow the extension's prompts – it will visit your Swiggy order history and save everything locally.
  3. Open Spenddy (this web app). Your data will be detected automatically and the dashboards will load.

Option B – Manual Upload

  1. Login to Swiggy β†’ Account β†’ Privacy β†’ Download Your Data.
  2. Request the data export and download the ZIP when ready.
  3. Extract the ZIP and find allOrders.json.
  4. Upload the file in Spenddy.

Then…

Explore Your Analytics

  • πŸ“Š Overview: Total orders, spending, and key statistics
  • πŸ’³ Spending: Detailed spending patterns and trends
  • πŸͺ Restaurants: Your favorite places and cuisine preferences
  • πŸ—ΊοΈ Locations: Interactive map with order locations and heatmaps

πŸ—οΈ Tech Stack

Category Technology
Framework React 18 + TypeScript
Styling Tailwind CSS + Custom Dark Theme
Build Tool Vite
Charts Chart.js + Recharts
Maps Leaflet + React-Leaflet
Animations Framer Motion
Icons Lucide React
Date Utils date-fns

🌐 Deployment

GitHub Pages (Recommended)

  1. Fork/clone this repository
  2. Enable GitHub Pages in repository settings
  3. Choose "GitHub Actions" as source
  4. Push to main branch for automatic deployment

Manual Deployment

pnpm build
# Deploy the dist/ folder to your hosting platform

🎨 Screenshots

Spenddy Demo

πŸŽ₯ Demo Video

<iframe width="720" height="405" src="https://www.youtube.com/embed/9MSGW4WkbBc" title="Spenddy for Swiggy | Spenddy | Know your spends" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

If the video doesn't load, watch it on YouTube.

πŸ“Š Analytics Features

Spending Analysis

  • πŸ“ˆ Monthly and yearly spending trends
  • πŸ’° Breakdown by fees (delivery, packing, convenience)
  • 🎫 Discount and coupon analysis
  • πŸ“Š Average order value patterns

Restaurant Analytics

  • πŸ† Top restaurants by order count and spending
  • 🍜 Cuisine preference analysis
  • πŸ“ Location-based restaurant insights
  • ⭐ Restaurant performance tracking

Location Insights

  • πŸ—ΊοΈ Interactive map with real coordinates
  • 🏠 Delivery location analysis
  • πŸͺ Restaurant location patterns
  • πŸ“Š Geographic spending distribution

Order Activity

  • πŸ“… Year-long GitHub-style heatmap
  • ⏰ Peak ordering times and days
  • πŸ“ˆ Order frequency patterns
  • 🎯 Activity trends and insights

πŸ› οΈ Development

Project Structure

src/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ dashboards/         # Analytics dashboards
β”‚   β”œβ”€β”€ ui/                # Reusable UI components  
β”‚   β”œβ”€β”€ Header.tsx         # App header with logo
β”‚   β”œβ”€β”€ Sidebar.tsx        # Navigation sidebar
β”‚   └── FileUpload.tsx     # File upload component
β”œβ”€β”€ types/
β”‚   └── SwiggyData.ts      # TypeScript interfaces
β”œβ”€β”€ utils/
β”‚   └── dataProcessor.ts   # Data processing logic
β”œβ”€β”€ hooks/                 # Custom React hooks
β”œβ”€β”€ lib/                   # Utility libraries
└── App.tsx               # Main application

Adding New Features

  1. Create processing functions in utils/dataProcessor.ts
  2. Add dashboard component in components/dashboards/
  3. Update navigation in src/App.tsx
  4. Add menu item in Sidebar.tsx

🀝 Contributing

We welcome contributions! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add some amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Built with ❀️ for food lovers who want data-driven insights
  • Inspired by the need for privacy-first analytics tools
  • Thanks to the amazing open-source community

Made with ❀️ for food lovers everywhere

Spenddy - Your personal food ordering analytics companion

πŸ” Privacy & License

  • Spenddy is 100% client-side; no data ever leaves your browser.
  • We do not collect or store any personal information.
  • Read our full PrivacyΒ Policy.
  • The project is open-source under the MIT License – contributions welcome!

πŸ›  Architecture (v2 – Multi-Source)

Spenddy now supports multiple data sources via a pluggable folder structure:

src/
└── sources/
    β”œβ”€β”€ BaseSource.ts          # interface + types
    β”œβ”€β”€ AbstractSource.ts      # default implementation helpers
    β”œβ”€β”€ index.ts               # registry of all sources
    └── swiggy/                # first concrete source
        β”œβ”€β”€ transformer.ts     # raw β†’ OrderRecord[]
        └── index.ts           # SwiggySource extends AbstractSource

Routing follows the same pattern:

/                 β†’ Landing page (lists sources)
/:source          β†’ Source layout (Import tab + dashboards)
/:source/overview β†’ Overview dashboard for that source

Add a new provider under SourceDataContext and you're done!

Memory Optimization

Spenddy implements lazy loading and automatic cleanup to prevent memory issues:

  • Lazy Loading: Data is only loaded when a user actually visits a source page, not on app startup
  • Access Tracking: Each source tracks when it was last accessed
  • Automatic Cleanup: Sources not accessed for 10+ minutes are automatically unloaded
  • Navigation Cleanup: Data is unloaded 30 seconds after navigating away from a source
  • Periodic Refresh: Only loaded sources participate in the 30-second extension data refresh

This ensures the app remains performant even with large datasets and multiple sources.

Supported sources

ID Import method Status
swiggy Browser extension (Spenddy-Link) βœ…
zomato Browser extension (Spenddy-Link) ⏳
more soon ⏳

About

Easy Offline-first Privacy Friendly Spends Visualizer

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors