
Features include: - User management with JWT authentication and role-based access - Inventory items with SKU/barcode tracking and stock management - Categories and suppliers organization - Inventory transactions with automatic stock updates - Low stock alerts and advanced search/filtering - RESTful API with comprehensive CRUD operations - SQLite database with Alembic migrations - Auto-generated API documentation Co-Authored-By: Claude <noreply@anthropic.com>
121 lines
4.2 KiB
Markdown
121 lines
4.2 KiB
Markdown
# Small Business Inventory System
|
|
|
|
A comprehensive inventory management system for small businesses built with Python and FastAPI.
|
|
|
|
## Features
|
|
|
|
- **User Management**: Secure authentication with JWT tokens and role-based access control
|
|
- **Inventory Management**: Complete CRUD operations for inventory items with SKU and barcode support
|
|
- **Category Management**: Organize inventory items by categories
|
|
- **Supplier Management**: Track supplier information and relationships
|
|
- **Stock Tracking**: Real-time stock levels with low stock alerts
|
|
- **Transaction History**: Track all inventory movements (in/out/adjustments)
|
|
- **Search & Filter**: Advanced search and filtering capabilities
|
|
- **RESTful API**: Well-documented API endpoints with automatic OpenAPI documentation
|
|
|
|
## Tech Stack
|
|
|
|
- **Framework**: FastAPI
|
|
- **Database**: SQLite with SQLAlchemy ORM
|
|
- **Authentication**: JWT tokens with bcrypt password hashing
|
|
- **Migrations**: Alembic for database schema management
|
|
- **Documentation**: Automatic API documentation with Swagger UI
|
|
|
|
## Installation & Setup
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Set up environment variables (optional):
|
|
```bash
|
|
export SECRET_KEY="your-secret-key-here"
|
|
export ADMIN_EMAIL="admin@yourcompany.com"
|
|
export ADMIN_PASSWORD="secure-admin-password"
|
|
```
|
|
|
|
3. Run the application:
|
|
```bash
|
|
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
The following environment variables can be set:
|
|
|
|
- `SECRET_KEY`: JWT secret key (defaults to development key - change in production!)
|
|
- `ADMIN_EMAIL`: Initial admin user email (default: admin@example.com)
|
|
- `ADMIN_PASSWORD`: Initial admin user password (default: admin123)
|
|
|
|
**⚠️ Important**: Change the `SECRET_KEY`, `ADMIN_EMAIL`, and `ADMIN_PASSWORD` environment variables in production!
|
|
|
|
## API Documentation
|
|
|
|
Once the application is running, you can access:
|
|
|
|
- **Swagger UI**: http://localhost:8000/docs
|
|
- **ReDoc**: http://localhost:8000/redoc
|
|
- **OpenAPI JSON**: http://localhost:8000/openapi.json
|
|
- **Health Check**: http://localhost:8000/health
|
|
|
|
## API Endpoints
|
|
|
|
### Authentication
|
|
- `POST /api/v1/auth/login` - Login and get access token
|
|
|
|
### Users
|
|
- `GET /api/v1/users/me` - Get current user info
|
|
- `GET /api/v1/users/` - List all users (admin only)
|
|
- `POST /api/v1/users/` - Create new user (admin only)
|
|
|
|
### Categories
|
|
- `GET /api/v1/categories/` - List all categories
|
|
- `POST /api/v1/categories/` - Create new category
|
|
- `PUT /api/v1/categories/{id}` - Update category
|
|
- `DELETE /api/v1/categories/{id}` - Delete category
|
|
|
|
### Suppliers
|
|
- `GET /api/v1/suppliers/` - List all suppliers
|
|
- `POST /api/v1/suppliers/` - Create new supplier
|
|
- `PUT /api/v1/suppliers/{id}` - Update supplier
|
|
- `DELETE /api/v1/suppliers/{id}` - Delete supplier
|
|
|
|
### Inventory
|
|
- `GET /api/v1/inventory/` - List inventory items (with search/filter options)
|
|
- `GET /api/v1/inventory/low-stock` - Get low stock items
|
|
- `POST /api/v1/inventory/` - Create new inventory item
|
|
- `GET /api/v1/inventory/{id}` - Get inventory item by ID
|
|
- `GET /api/v1/inventory/sku/{sku}` - Get inventory item by SKU
|
|
- `PUT /api/v1/inventory/{id}` - Update inventory item
|
|
- `DELETE /api/v1/inventory/{id}` - Delete inventory item
|
|
|
|
### Transactions
|
|
- `GET /api/v1/transactions/` - List inventory transactions
|
|
- `POST /api/v1/transactions/` - Create new transaction (updates stock levels)
|
|
- `GET /api/v1/transactions/{id}` - Get transaction by ID
|
|
|
|
## Database Schema
|
|
|
|
The system uses SQLite with the following main entities:
|
|
|
|
- **Users**: System users with authentication
|
|
- **Categories**: Item categories for organization
|
|
- **Suppliers**: Supplier information and contacts
|
|
- **InventoryItems**: Main inventory items with pricing and stock info
|
|
- **InventoryTransactions**: Track all stock movements
|
|
|
|
## Development
|
|
|
|
- **Linting**: The project uses Ruff for code linting and formatting
|
|
- **Database**: SQLite database stored in `/app/storage/db/`
|
|
- **Migrations**: Use Alembic for database schema changes
|
|
|
|
## Default Admin User
|
|
|
|
The system creates a default admin user on first run:
|
|
- **Email**: admin@example.com (or value from `ADMIN_EMAIL` env var)
|
|
- **Password**: admin123 (or value from `ADMIN_PASSWORD` env var)
|
|
|
|
**⚠️ Security Note**: Change the default admin credentials immediately in production!
|