A full-stack web application designed to efficiently track hardware components (specifically structured around Intel Part Numbers), manage stock quantities, log part locations, and maintain detailed metadata such as product categories, owners, and pricing.
This project is a modernized version of a legacy C++ command-line tool, now featuring a React frontend, a Node.js API, and a robust SQLite database.
- Modern Web Interface: A responsive React dashboard to view, add, and manage inventory seamlessly.
- Add & Edit Parts: Input new inventory items with detailed metadata (Location, Date Codes, Manufacturer, Description, etc.) through an intuitive modal form.
- Dynamic CSV Reporting: Generate and download custom inventory reports formatted automatically as
[mm-dd-yyyy]-WW[ww#]-inventory-report.csv. - Persistent Relational Storage: Utilizes a local SQLite database for structured data integrity and lightning-fast queries.
- Legacy Migration Ready: Includes a migration script to effortlessly transfer data from legacy
InventoryData.txtfiles into the new database.
Frontend (Client)
- React.js (via Vite)
- Tailwind CSS (Styling)
- Axios (API Communication)
Backend (Server)
- Node.js & Express.js (REST API)
- SQLite3 (Database)
- date-fns & json2csv (Report Formatting)
The repository is split into two distinct environments:
inventory-app/
├── client/ # React Frontend
│ ├── src/
│ │ ├── api/ # Axios API calls
│ │ ├── components/ # Reusable UI (Navbar, DataTable, PartModal)
│ │ ├── pages/ # Main view (Dashboard)
│ │ └── App.jsx
│ └── package.json
│
├── server/ # Node.js Backend
│ ├── src/
│ │ ├── controllers/ # Route logic (inventory, reports)
│ │ ├── routes/ # API endpoint definitions
│ │ ├── config/ # SQLite connection setup
│ │ ├── utils/ # Helper functions (date generation)
│ │ └── server.js # Express app entry point
│ ├── database/ # Auto-generated SQLite file
│ └── package.json
Ensure you have Node.js installed. You will need to run the client and the server in two separate terminal windows.
cd server
npm install
npm run devThe server will run on http://localhost:5000 and automatically generate the SQLite database file on first run.
cd client
npm install
npm run devThe client will typically run on http://localhost:5173. Open this URL in your browser to use the application.
If you are upgrading from the older C++ version of this tool, you can migrate your existing InventoryData.txt file directly into the new SQLite database.
- Place your
InventoryData.txtfile in the root of theserver/directory. - Run the migration script:
node migrate.js
- Your legacy data is now available in the web dashboard!
Contributions, issues, and feature requests are welcome!
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.