A modern, full-stack inventory management system built with Astro, MongoDB, and Node.js.
- 🔐 User Authentication - Secure login/register with JWT
- 📦 Item Management - Add, view, search, and filter inventory items
- 📸 Image Upload - Upload and display item photos
- 🔄 Borrow/Return System - Track who has what equipment
- 🏷️ Barcode Support - Auto-generate or use custom barcodes
- 🔍 Advanced Search - Filter by status, category, location, or search text
- 📱 Responsive Design - Works on desktop, tablet, and mobile
- ☁️ Cloud Database - MongoDB Atlas for reliable data storage
- Node.js 18+ installed
- MongoDB Atlas account (free tier works!)
- Git installed
-
Clone the repository
git clone https://github.com/your-username/Inventory-Tracker.git cd Inventory-Tracker
-
Install dependencies
npm install
-
Setup environment variables
- Copy
.env.exampleto.env - Update with your MongoDB URI and JWT secret
cp .env.example .env
- Copy
-
Start development server
npm run dev
-
Open browser
- Go to
http://localhost:4321 - Create an account and start adding items!
- Go to
- Deployment Guide - Deploy to production (Render, Railway, etc.)
- Deployment Checklist - Step-by-step deployment checklist
- User Guide - End-user documentation
- Backend Setup - Backend configuration details
- MongoDB Setup - Database configuration
- Push code to GitHub
- Go to https://render.com
- Create new Web Service from your repository
- Set environment variables
- Deploy!
Detailed instructions: See DEPLOYMENT.md
| Command | Action |
|---|---|
npm install |
Install dependencies |
npm run dev |
Start dev server at localhost:4321 |
npm run build |
Build production site to ./dist/ |
npm start |
Run production build |
npm run preview |
Preview build locally before deploying |
- Frontend: Astro, Tailwind CSS, Alpine.js
- Backend: Node.js, Express-style API routes
- Database: MongoDB Atlas
- Authentication: JWT (JSON Web Tokens)
- File Upload: Native Node.js filesystem
- Deployment: Node.js standalone adapter
inventory-tracker/
├── src/
│ ├── components/ # Reusable Astro components
│ ├── layouts/ # Page layouts
│ ├── lib/ # Utilities (auth, db, API)
│ ├── models/ # MongoDB schemas
│ ├── pages/ # Routes and API endpoints
│ └── styles/ # Global CSS
├── public/
│ └── uploads/ # Uploaded item images
├── .env # Environment variables (not committed)
├── package.json # Dependencies and scripts
└── astro.config.mjs # Astro configuration
- Password hashing with bcrypt
- JWT-based authentication
- Protected API routes
- Input validation
- File upload restrictions
- Environment variable protection
- Secure user registration and login
- Password encryption
- Session management with JWT tokens
- Protected routes
- Add items with photos, descriptions, categories
- Auto-generated or custom barcodes
- Component tracking for items with accessories
- Quantity management
- Borrow available items
- Track who has what
- Return items to make available again
- View borrowed items in profile
- Text search across name, description, barcode
- Filter by status (available, borrowed, in use, waste)
- Filter by category and location
- Real-time results
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
- Check the User Guide for usage instructions
- Review Deployment Guide for deployment help
- Open an issue on GitHub for bugs
- Contact the maintainer for questions
Built with ❤️ using Astro
Ready to deploy? → See DEPLOY_CHECKLIST.md