Automated Action 5935f302dc Create Small Business Inventory Management System with FastAPI and SQLite
- Set up project structure and FastAPI application
- Create database models with SQLAlchemy
- Implement authentication with JWT
- Add CRUD operations for products, inventory, categories
- Implement purchase order and sales functionality
- Create reporting endpoints
- Set up Alembic for database migrations
- Add comprehensive documentation in README.md
2025-05-16 08:53:15 +00:00

116 lines
3.8 KiB
Markdown

# Small Business Inventory Management System
A comprehensive inventory management system for small businesses built with FastAPI and SQLite.
## Features
- **Product Management**: Create, update, delete, and search products with SKU, barcode support
- **Inventory Tracking**: Track inventory levels across multiple locations
- **Purchase Order Management**: Create purchase orders and receive inventory
- **Sales Tracking**: Record sales and automatically update inventory
- **User Authentication**: Secure API with JWT authentication
- **Role-Based Access Control**: Admin and regular user roles
- **Reporting**: Several reports including inventory value, low stock, sales summary, and purchase summary
## Technologies
- **Backend**: FastAPI (Python 3.9+)
- **Database**: SQLite with SQLAlchemy ORM
- **Authentication**: JWT tokens with OAuth2
- **Migration**: Alembic for database migrations
- **Validation**: Pydantic for data validation
- **Linting**: Ruff for code quality
## Setup and Installation
1. Clone the repository
2. Install dependencies:
```
pip install -r requirements.txt
```
3. Run the database migrations:
```
alembic upgrade head
```
4. Start the application:
```
python run.py
```
The API will be available at http://localhost:8000
## API Documentation
Once the application is running, you can access:
- Interactive API documentation: http://localhost:8000/docs
- Alternative API documentation: http://localhost:8000/redoc
## Default Admin User
The system comes with a default admin user:
- Email: admin@example.com
- Password: admin123
**Important**: Change the default password after first login!
## Directory Structure
```
├── app # Application source code
│ ├── api # API endpoints
│ ├── core # Core functionality
│ ├── crud # CRUD operations
│ ├── db # Database setup
│ ├── models # SQLAlchemy models
│ └── schemas # Pydantic schemas
├── migrations # Alembic migrations
├── alembic.ini # Alembic configuration
├── main.py # Application entry point
├── pyproject.toml # Project configuration
├── README.md # Project documentation
├── requirements.txt # Dependencies
└── run.py # Script to run the application
```
## API Endpoints
The API provides the following main endpoints:
### Authentication
- `POST /api/v1/login/access-token` - Login and get access token
- `POST /api/v1/login/test-token` - Test access token validity
### Users
- `GET /api/v1/users/` - List users (admin only)
- `POST /api/v1/users/` - Create user (admin only)
- `GET /api/v1/users/me` - Get current user
- `PUT /api/v1/users/me` - Update current user
### Products
- `GET /api/v1/products/` - List products
- `POST /api/v1/products/` - Create product
- `GET /api/v1/products/{id}` - Get product
- `PUT /api/v1/products/{id}` - Update product
- `DELETE /api/v1/products/{id}` - Delete product
### Inventory
- `GET /api/v1/inventory/` - List inventory
- `POST /api/v1/inventory/` - Create inventory
- `POST /api/v1/inventory/adjust` - Adjust inventory
### Purchase Orders
- `GET /api/v1/purchase-orders/` - List purchase orders
- `POST /api/v1/purchase-orders/` - Create purchase order
- `POST /api/v1/purchase-orders/{id}/receive` - Receive purchase order
### Sales
- `GET /api/v1/sales/` - List sales
- `POST /api/v1/sales/` - Create sale
- `POST /api/v1/sales/{id}/cancel` - Cancel sale
### Reports
- `GET /api/v1/reports/inventory-value` - Inventory value report
- `GET /api/v1/reports/low-stock` - Low stock report
- `GET /api/v1/reports/sales-summary` - Sales summary report
- `GET /api/v1/reports/purchases-summary` - Purchases summary report
- `GET /api/v1/reports/inventory-movements` - Inventory movements report