117 lines
3.3 KiB
Markdown
117 lines
3.3 KiB
Markdown
# Small Business Inventory System
|
|
|
|
A comprehensive FastAPI-based inventory management system designed for small businesses to track products, manage stock levels, and monitor supplier relationships.
|
|
|
|
## Features
|
|
|
|
- **Product Management**: Complete CRUD operations for products with SKU tracking
|
|
- **Category Management**: Organize products into categories
|
|
- **Supplier Management**: Track supplier information and relationships
|
|
- **Inventory Tracking**: Real-time stock level monitoring with low-stock alerts
|
|
- **Stock Movements**: Track all inventory movements (IN/OUT/ADJUSTMENTS)
|
|
- **Reporting**: Stock reports and analytics
|
|
- **API Documentation**: Auto-generated OpenAPI documentation
|
|
|
|
## Quick Start
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Run the application:
|
|
```bash
|
|
uvicorn main:app --reload
|
|
```
|
|
|
|
3. Access the API documentation at: `http://localhost:8000/docs`
|
|
|
|
## API Endpoints
|
|
|
|
### Products
|
|
- `GET /products/` - List all products (with filtering options)
|
|
- `POST /products/` - Create a new product
|
|
- `GET /products/{product_id}` - Get product by ID
|
|
- `GET /products/sku/{sku}` - Get product by SKU
|
|
- `PUT /products/{product_id}` - Update product
|
|
- `DELETE /products/{product_id}` - Delete product
|
|
|
|
### Categories
|
|
- `GET /categories/` - List all categories
|
|
- `POST /categories/` - Create a new category
|
|
- `GET /categories/{category_id}` - Get category by ID
|
|
- `PUT /categories/{category_id}` - Update category
|
|
- `DELETE /categories/{category_id}` - Delete category
|
|
|
|
### Suppliers
|
|
- `GET /suppliers/` - List all suppliers
|
|
- `POST /suppliers/` - Create a new supplier
|
|
- `GET /suppliers/{supplier_id}` - Get supplier by ID
|
|
- `PUT /suppliers/{supplier_id}` - Update supplier
|
|
- `DELETE /suppliers/{supplier_id}` - Delete supplier
|
|
|
|
### Inventory
|
|
- `POST /inventory/stock-movement` - Record stock movement
|
|
- `GET /inventory/stock-movements` - List stock movements
|
|
- `GET /inventory/low-stock` - Get low stock products
|
|
- `GET /inventory/stock-report` - Get stock analytics
|
|
- `PUT /inventory/adjust-stock/{product_id}` - Adjust stock levels
|
|
|
|
### System
|
|
- `GET /` - API information and links
|
|
- `GET /health` - Health check endpoint
|
|
|
|
## Database
|
|
|
|
The system uses SQLite database with the following storage structure:
|
|
- Database file: `/app/storage/db/db.sqlite`
|
|
|
|
## Environment Variables
|
|
|
|
No environment variables are required for basic operation. The system uses SQLite with default paths.
|
|
|
|
## Development
|
|
|
|
### Database Migrations
|
|
|
|
The project uses Alembic for database migrations:
|
|
|
|
```bash
|
|
# Run migrations
|
|
alembic upgrade head
|
|
|
|
# Create new migration
|
|
alembic revision --autogenerate -m "description"
|
|
```
|
|
|
|
### Code Quality
|
|
|
|
The project uses Ruff for linting and formatting:
|
|
|
|
```bash
|
|
# Install ruff
|
|
pip install ruff
|
|
|
|
# Run linting
|
|
ruff check .
|
|
|
|
# Auto-fix issues
|
|
ruff check . --fix
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
├── main.py # FastAPI application entry point
|
|
├── requirements.txt # Python dependencies
|
|
├── alembic.ini # Alembic configuration
|
|
├── alembic/ # Database migrations
|
|
├── app/
|
|
│ ├── db/ # Database configuration
|
|
│ ├── models/ # SQLAlchemy models
|
|
│ ├── schemas/ # Pydantic schemas
|
|
│ └── routers/ # API route handlers
|
|
└── storage/
|
|
└── db/ # SQLite database storage
|
|
```
|