A minimalistic React web application for tracking your spending with categories, amounts, and notes.
- Add Spending: Add new expenses with category, amount, currency, and optional notes
- Categories: Choose from General, Personal, Auto, or House
- Currency Support: Toggle between MXN and USD
- Notes: Add optional notes (max 140 characters)
- Spending List: View all your recorded expenses
- Category Filtering: Filter expenses by category with totals
The following features have comprehensive test coverage but are not yet implemented:
- Delete/Edit Functionality: Modify or remove existing expenses
- Data Persistence: Save expenses to localStorage
- Search: Search through expenses by notes/content
- Budget Limits: Set monthly budgets with warnings
- CSV Import/Export: Import/export expense data
- Accessibility: Full screen reader and keyboard navigation support
- Offline Support: Work without internet connection
- Multi-language: Spanish localization
- Performance: Virtualized lists for large datasets
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and go to
http://localhost:3000
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm test- Run tests in watch modenpm run test:ui- Run tests with UInpm run test:coverage- Generate test coverage report
This project uses Vitest and React Testing Library for testing. The test suite includes:
- Component rendering and form interactions
- Input validation and state management
- Currency toggling and category selection
- Spending list display and filtering
- Tests for future features that serve as specifications
- Located in
*.failing.test.jsxfiles - Represent development roadmap and feature requirements
- Expected to fail until features are implemented
To run tests:
# Run all tests (including failing ones)
npm test
# Run only passing tests
npm test -- src/App.test.jsx
# Run with coverage
npm run test:coverageThis project uses GitHub Actions for continuous integration:
- Automated Testing: Runs on every push and pull request
- Multi-Node Testing: Tests against Node.js 18.x and 20.x
- Build Verification: Ensures the app builds successfully
- Security Auditing: Checks for package vulnerabilities
- Test Coverage: Generates and uploads coverage reports
- Frontend: React 18, Vite
- Testing: Vitest, React Testing Library, @testing-library/jest-dom
- CI/CD: GitHub Actions
- Styling: Vanilla CSS (no external CSS frameworks)
- Feature Development: Look at failing tests in
*.failing.test.jsxfiles to understand requirements - TDD Approach: Implement features to make the failing tests pass
- Testing: Ensure all existing tests continue to pass
- CI/CD: GitHub Actions will run tests and build checks automatically
- Select a category from the dropdown (General, Personal, Auto, House)
- Enter the amount (numbers only, $ symbol is automatically added)
- Toggle between MXN and USD currency
- Optionally add a note (up to 140 characters)
- Click "Add Spending" to save
- View your spending list below the form
- Use category filter to view specific spending categories
- Check the failing tests to understand feature requirements
- Implement features following the test specifications
- Ensure all existing tests continue to pass
- GitHub Actions will automatically run the test suite
src/
├── App.jsx # Main application component
├── App.test.jsx # Passing tests for current functionality
├── App.failing.test.jsx # Failing tests for future features
├── EdgeCases.failing.test.jsx # Advanced feature specifications
├── main.jsx # Application entry point
└── test/
└── setup.js # Test configuration