A modern and responsive Personal Finance Dashboard built with React, TypeScript, Tailwind CSS, and Recharts. The application enables users to manage transactions, track income and expenses, visualize financial trends, and personalize their experience with persistent theme preferences.
- Mobile View
20260626_185525.mp4
- Desktop View & Features
20260629_224126.mp4
- Add new transactions
- Edit existing transactions
- Delete transactions
- Form validation with user-friendly error messages
- Transaction categorization
- Income and Expense tracking
- Total Balance calculation
- Total Income calculation
- Total Expenses calculation
- Savings overview
- Expense Breakdown Pie Chart
- Monthly Expense Bar Chart
- Income vs Expense Trend Line Chart
- Transactions stored in LocalStorage
- Automatic data restoration on refresh
- Theme preference persistence
- Real-time transaction search
- Category-based filtering
- Multi-option transaction sorting
- Pagination support
- Dark Mode support
- Responsive design
- Loading skeletons for improved perceived performance
- React
- TypeScript
- Vite
- Tailwind CSS
- React Hooks & Custom Hooks
- Context API
- Recharts
- Browser LocalStorage
- Included only main files
src
β
βββ components
β βββ Navbar.tsx
β βββ DashboardCard.tsx
β βββ TransactionForm.tsx
β βββ TransactionTable.tsx
β βββ TransactionSearch.tsx
β βββ CategoryFilter.tsx
β βββ TransactionSort.tsx
β βββ Pagination.tsx
β βββ ExpensePieChart.tsx
β βββ MonthlyExpenseChart.tsx
β βββ IncomeExpenseTrendChart.tsx
β βββ DashboardCardSkeleton.tsx
β βββ ChartSkeleton.tsx
β βββ TransactionTableSkeleton.tsx
β
βββ context
β βββ TransactionContext.tsx
β
βββ hooks
β βββ useTheme.ts
| βββ useTransaction.ts
β
βββ pages
β βββ DashboardPage.tsx
β
βββ types
β βββ transaction.ts
β
βββ App.tsx
βββ main.tsx
The dashboard automatically calculates:
Total Income - Total Expenses
Sum of all income transactions.
Sum of all expense transactions.
Remaining amount after expenses.
Visualizes spending distribution across categories.
Displays month-wise expense trends.
Compares monthly income and expenses over time.
Users can switch between:
- Light Theme
- Dark Theme
Theme preference is automatically persisted using LocalStorage.
Search transactions by:
- Title
- Category
Filter transactions by:
- Food
- Salary
- Shopping
- Fuel
- Entertainment
- Any custom category
Sort transactions by:
- Newest First
- Oldest First
- Highest Amount
- Lowest Amount
- Title A-Z
- Title Z-A
Transactions are paginated to improve performance and usability.
- Derived state instead of redundant state
- Component-based architecture
- Reusable UI components
- Loading skeletons for perceived performance
- Pagination for large datasets
- LocalStorage persistence
git clone https://github.com/Navaneeth-21/Personal-Finance-Dashboard.gitcd personal-finance-dashboardnpm installnpm run devnpm run buildWhile building this project, the following concepts were implemented and practiced:
- React application architecture
- TypeScript with React
- State management patterns
- Context API
- Data visualization
- Responsive UI development
- Tailwind CSS workflows
- LocalStorage persistence
- Reusable component design
- User experience enhancements
- Dashboard development patterns