A simple and responsive Invoice Management Application built with React. This app allows users to create, view, and manage invoices with data persisted in the browser using Local Storage.
- Create new invoices
- View a list of all invoices
- Update invoice status (Paid, Pending, Draft)
- Persistent data using Local Storage
- Responsive UI for different screen sizes
- Simple and clean user interface
- Frontend: React (JavaScript)
- State Management: React Hooks (
useState,useEffect) - Storage: Browser Local Storage
- Styling: Tailwind CSS
src/
│
├── components/ # Reusable UI components
├── pages/ # Main pages/views
├── App.jsx # Root component
└── main.jsx # Entry point
This app uses Local Storage to store invoice data.
- On initial load, the app checks if invoices exist in Local Storage.
- If not, it seeds initial mock data.
- Any changes (create/update/delete) are automatically saved to Local Storage.
Follow these steps to run the project locally:
git clone https://github.com/your-username/invoice-app.git
cd invoice-appMake sure you have Node.js installed.
pnpm installpnpm devVisit:
http://localhost:5173
(Port may vary depending on your setup)
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build app for production |
- React manages UI and state
- Invoice data is stored in Local Storage using
localStorage.setItem() - Data is retrieved using
localStorage.getItem() useEffectensures data sync between UI and storage
- Add backend (Node.js / Firebase / Supabase)
- User authentication
- Export invoices as PDF
- Search and filter invoices
- Dark mode support
- Pagination for large datasets
- Data is stored locally (not shared across devices)
- Clearing browser storage will delete all invoices
- No authentication or user accounts
Contributions are welcome!
- Fork the repo
- Create a new branch
- Make your changes
- Submit a pull request
This project is open-source and available under the MIT License.
- Inspired by real-world invoicing systems
- Built as part of a learning project / internship (e.g., HNG Internship)
If you have any questions or feedback, feel free to reach out.
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.