This is a Next.js application designed to help you track and manage trip expenses among a group of people. It's built with a modern tech stack including:
- Next.js (App Router)
- React
- TypeScript
- ShadCN UI Components
- Tailwind CSS
- Expense Management: Add, view, edit, and delete expenses.
- People Management: Add, edit, and delete people participating in the trip.
- Expense Splitting: Assign who paid for an expense and with whom it's shared (currently assumes equal splits).
- Currency Selection: Choose from a list of supported currencies for your expenses. The selected currency is persisted locally.
- Reporting:
- View overall trip summaries.
- See individual balances (total paid, total consumed, net balance).
- Get simplified settlement suggestions for who owes whom.
- Activity Log: Track key actions performed within the app, such as adding/updating/deleting expenses and people.
- CSV Export: Export your expense data to a CSV file.
- Local Storage: All data (expenses, people, activity logs, currency preference) is stored locally in your browser.
- Clone the repository (if applicable).
- Install dependencies:
npm install
- Run the development server:
The application will typically be available at
npm run dev
http://localhost:9002(or another port if 9002 is in use).
src/app/page.tsx: The main page orchestrating the different tabs (Add Expense, View Expenses, Reports, Manage People, Activity Log).src/components/: Contains reusable UI components, including forms for adding expenses, lists for viewing expenses and people, and the report display.src/hooks/: Custom React hooks for managing state and logic for expenses (useExpenses.ts), people (usePeople.ts), activity logs (useActivityLog.ts), and toast notifications (use-toast.ts).src/contexts/: React contexts, likeCurrencyContext.tsxfor managing global currency selection.src/lib/: Utility functions and data definitions (e.g.,currencies.ts,csv.ts).src/types/: TypeScript type definitions for the application's data structures.
This project was bootstrapped in Firebase Studio.