Automated Action 1d312e5ff6 Implement Small Business Inventory Management System
- Created FastAPI application with SQLite database
- Implemented models for inventory items, categories, suppliers, and transactions
- Added authentication system with JWT tokens
- Implemented CRUD operations for all models
- Set up Alembic for database migrations
- Added comprehensive API documentation
- Configured Ruff for code linting
2025-06-06 20:27:41 +00:00

149 lines
4.1 KiB
Markdown

# Small Business Inventory Management System
A robust API-based inventory management system built for small businesses using FastAPI and SQLite. This system helps businesses track inventory items, manage suppliers, categorize products, and record stock movements.
## Features
- **Item Management**: Create, update, delete, and search inventory items
- **Category Management**: Organize items by categories
- **Supplier Management**: Track suppliers for inventory items
- **Stock Transactions**: Record stock-in and stock-out transactions
- **User Authentication**: Secure API access with JWT authentication
- **Low Stock Alerts**: Identify items with stock levels below reorder points
- **Reporting**: Generate transaction reports for specific time periods
## Technology Stack
- **Backend**: Python 3.8+ with FastAPI
- **Database**: SQLite with SQLAlchemy ORM
- **Authentication**: JWT tokens with OAuth2
- **API Documentation**: Swagger UI and ReDoc via OpenAPI
- **Migrations**: Alembic for database schema versioning
## API Documentation
API documentation is available at:
- Swagger UI: `/docs`
- ReDoc: `/redoc`
## Environment Variables
The application uses the following environment variables:
| Variable | Description | Default |
|----------|-------------|---------|
| SECRET_KEY | JWT secret key | super-secret-key-for-development-only |
| ACCESS_TOKEN_EXPIRE_MINUTES | JWT token expiration time in minutes | 60 |
## Installation and Setup
### Prerequisites
- Python 3.8 or higher
- pip (Python package manager)
### Installation Steps
1. Clone the repository:
```
git clone <repository-url>
cd small-business-inventory-management-system
```
2. Install dependencies:
```
pip install -r requirements.txt
```
3. Run database migrations:
```
alembic upgrade head
```
4. Start the application:
```
uvicorn main:app --reload
```
The API will be available at http://localhost:8000
## API Endpoints
### Authentication
- `POST /api/v1/auth/login` - Obtain JWT token
- `POST /api/v1/auth/register` - Register new user
- `GET /api/v1/auth/me` - Get current user info
### Items
- `GET /api/v1/items` - List all items (with optional filtering)
- `POST /api/v1/items` - Create new item
- `GET /api/v1/items/{item_id}` - Get item details
- `PUT /api/v1/items/{item_id}` - Update item
- `DELETE /api/v1/items/{item_id}` - Delete item
- `GET /api/v1/items/search` - Search items by name, SKU, or barcode
### Categories
- `GET /api/v1/categories` - List all categories
- `POST /api/v1/categories` - Create new category
- `GET /api/v1/categories/{category_id}` - Get category details
- `PUT /api/v1/categories/{category_id}` - Update category
- `DELETE /api/v1/categories/{category_id}` - Delete category
### Suppliers
- `GET /api/v1/suppliers` - List all suppliers
- `POST /api/v1/suppliers` - Create new supplier
- `GET /api/v1/suppliers/{supplier_id}` - Get supplier details
- `PUT /api/v1/suppliers/{supplier_id}` - Update supplier
- `DELETE /api/v1/suppliers/{supplier_id}` - Delete supplier
### Transactions
- `GET /api/v1/transactions` - List all transactions (with optional filtering)
- `POST /api/v1/transactions` - Create new transaction (stock in/out)
- `GET /api/v1/transactions/{transaction_id}` - Get transaction details
- `PUT /api/v1/transactions/{transaction_id}` - Update transaction metadata
- `GET /api/v1/transactions/by-item/{item_id}` - Get item transactions
- `GET /api/v1/transactions/report/daily` - Get daily transaction report
## Data Models
### User
- Username, email, password, full name
- Active status and superuser privileges
### Item
- Name, description, SKU, barcode
- Quantity, unit price, reorder level
- Associated category and supplier
### Category
- Name and description
### Supplier
- Name, contact info (name, email, phone, address)
### Transaction
- Associated item and user
- Quantity, unit price, total price
- Transaction type (stock in/out)
- Reference, notes, timestamp
## Development
### Adding Database Migrations
When you make changes to the database models, generate new migrations with:
```
alembic revision --autogenerate -m "Description of changes"
```
Then apply the migrations:
```
alembic upgrade head
```