About the Project

Inspiration

I was frustrated with scattered financial data across different bank statements, credit card exports, and manual records. I needed a unified tool to analyze spending patterns from various file formats (CSV, Excel) while keeping my sensitive financial data completely private. The goal was to create something that works entirely in the browser - no server uploads, no external dependencies, just pure client-side processing for maximum privacy and convenience.

What it does

SpendWise is a privacy-first budget analysis tool that transforms your financial data into actionable insights. Users can upload CSV or Excel files, enter data manually, or paste JSON data. The app automatically parses different file formats, standardizes column names, and generates comprehensive spending analytics including:

  • Total spending, transaction counts, and averages
  • Category breakdowns with percentages
  • Monthly spending trends and patterns
  • Interactive bar and pie charts
  • Smart warnings and personalized recommendations
  • Data preview with improved styling

Everything processes locally in your browser - your financial data never leaves your device.

How we built it

Tech Stack: Next.js 14+ with TypeScript, Tailwind CSS, Chart.js, PapaParse, and SheetJS

Architecture: Complete client-side processing with no backend dependencies. The app uses:

  • Next.js App Router for modern routing and performance
  • TypeScript for type safety across all data transformations
  • Custom parsers that handle various column naming conventions
  • Chart.js with react-chartjs-2 for responsive visualizations
  • Session storage for temporary data persistence
  • Vercel for instant deployment with zero configuration

Key Features:

  • Flexible file parsing that maps common column variations to standard fields
  • Advanced analytics engine that generates insights and recommendations
  • Responsive chart components that work across all device sizes
  • Privacy-first design with complete local processing

Challenges we ran into

Data Format Standardization: Users have financial data with different column names and structures. Solved by creating flexible parsers that map common variations (like "transaction_date" → "date") and handle case-insensitive matching.

Migration from Python to Next.js: Originally built with Python/Flask but wanted to eliminate server dependencies. Completely rewrote the backend logic in TypeScript, moved all processing client-side, and maintained the same functionality while improving performance.

Responsive Chart Design: Making charts work perfectly across all device sizes while maintaining readability. Implemented Chart.js responsive configuration with custom options for different screen sizes and mobile-optimized layouts.

Performance with Large Datasets: Ensuring smooth performance with large transaction datasets. Used React optimization patterns, efficient data processing algorithms, and proper loading states.

Accomplishments that I'm proud of

Complete Privacy: All processing happens in the user's browser - no data ever leaves their device
Zero Configuration Deployment: Deploys instantly on Vercel with no setup required
Multi-Format Support: Seamlessly handles CSV, Excel, and manual data entry with intelligent column mapping
Rich Analytics: Generates comprehensive spending insights, trends, and personalized recommendations
Beautiful UI: Modern, responsive design that works perfectly on desktop and mobile
Type Safety: Full TypeScript implementation with comprehensive type definitions
Migration Success: Successfully migrated from Python/Flask to Next.js while improving performance and eliminating server costs

What we learned

Full-Stack Evolution: Learned how to migrate from server-side to client-side processing, understanding the trade-offs between backend and frontend approaches.

TypeScript Mastery: Deepened understanding of TypeScript's type system, interfaces, and how it improves code reliability and developer experience.

Data Processing: Mastered file parsing with PapaParse and SheetJS, learning to handle various data formats, edge cases, and column standardization.

Privacy-First Architecture: Learned to design applications that process sensitive data locally while maintaining functionality and user experience.

Chart.js Integration: Mastered Chart.js with react-chartjs-2 for creating interactive, responsive visualizations that work across all devices.

What's next for SpendWise

Enhanced Analytics: Add more sophisticated financial insights like budget tracking, spending predictions, and goal setting features.

Export Capabilities: Allow users to export their analyzed data and insights as PDF reports or formatted spreadsheets.

Data Import Improvements: Support for more file formats like bank-specific exports and integration with financial APIs.

Advanced Visualizations: Add more chart types like time-series graphs, spending heatmaps, and comparative analysis tools.

Mobile App: Develop a React Native version for better mobile experience and offline capabilities.

Collaborative Features: Add sharing capabilities for family budget analysis while maintaining privacy through local processing.

AI-Powered Insights: Integrate machine learning for more personalized spending recommendations and anomaly detection.

Built With

Share this project:

Updates