Implementation
Implementation
function Home() {
const [expenses, setExpenses] = useState([]);
const [total, setTotal] = useState(0);
useEffect(() => {
axios.get('/api/expenses').then(res => {
setExpenses(res.data);
setTotal(res.data.reduce((sum, e) => sum + e.amount, 0));
});
}, []);
return (
<div>
<h2>Total Spent: ${total}</h2>
<ul>
{expenses.map(e => (
<li key={e._id}>
{e.date} - {e.category}: ${e.amount}
</li>
))}
</ul>
</div>
);
}
mongoose.connect('mongodb://localhost:27017/expense-tracker');
function AddExpense() {
const [form, setForm] = useState({ amount: '', category: '', notes: '' });
4. Optional Enhancements
• Add Chart.js for visual summaries
• Add filters (date range, category)
• Implement user login (Firebase Auth or JWT)
• Set up recurring expenses
• Export to CSV (using libraries like json2csv)
Deployment
• Frontend: Vercel or Netlify
• Backend: Render or Railway
• MongoDB: Atlas (cloud-hosted)
• CI/CD: GitHub + GitHub Actions (optional)