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
- css
- github
- html
- javascript
- nextjs
- post-css
- python
- tailwind
- vercel
Log in or sign up for Devpost to join the conversation.