first commit
This commit is contained in:
113
README.md
Normal file
113
README.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# Drug Inventory System
|
||||
|
||||
A simple, lightweight drug inventory management system for small charity veterinary clinics.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Backend**: Python + FastAPI + Uvicorn + SQLite
|
||||
- **Frontend**: Plain HTML, CSS, JavaScript (no frameworks)
|
||||
- **Database**: SQLite (file-based, zero setup)
|
||||
|
||||
## Features
|
||||
|
||||
✅ Add, edit, delete drugs
|
||||
✅ Track quantities and units
|
||||
✅ Low stock alerts
|
||||
✅ Filter by inventory status
|
||||
✅ Responsive design (works on desktop and mobile)
|
||||
✅ Fast and lightweight
|
||||
|
||||
## Quick Start (Docker - Recommended)
|
||||
|
||||
Everything runs in containers. Just make sure you have Docker and Docker Compose installed.
|
||||
|
||||
```bash
|
||||
docker-compose up
|
||||
```
|
||||
|
||||
That's it! Everything will start automatically:
|
||||
|
||||
- **Frontend**: `http://localhost` (Nginx serving the UI)
|
||||
- **Backend API**: `http://localhost:8000` (FastAPI)
|
||||
- **API Docs**: `http://localhost:8000/docs` (Interactive Swagger UI)
|
||||
- **Database**: SQLite file at `./drugs.db` (auto-created)
|
||||
|
||||
To stop:
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
To rebuild after code changes:
|
||||
```bash
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
/drugs
|
||||
/backend
|
||||
/app
|
||||
__init__.py # Database config
|
||||
database.py # Database connection setup
|
||||
models.py # SQLAlchemy models
|
||||
main.py # FastAPI app and routes
|
||||
requirements.txt # Python dependencies
|
||||
Dockerfile # Container image
|
||||
|
||||
/frontend
|
||||
index.html # Main page
|
||||
styles.css # All styling
|
||||
app.js # All JavaScript logic
|
||||
|
||||
docker-compose.yml # Run everything with Docker Compose
|
||||
nginx.conf # Nginx config for frontend
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| GET | `/drugs` | List all drugs |
|
||||
| GET | `/drugs/{id}` | Get specific drug |
|
||||
| POST | `/drugs` | Create new drug |
|
||||
| PUT | `/drugs/{id}` | Update drug |
|
||||
| DELETE | `/drugs/{id}` | Delete drug |
|
||||
| GET | `/drugs/low-stock` | Get low stock drugs |
|
||||
|
||||
## Database
|
||||
|
||||
SQLite database is stored as `drugs.db` in the project root. It's a single file that persists between container restarts. You can:
|
||||
- Backup by copying the file
|
||||
- Share with team members
|
||||
|
||||
## Configuration
|
||||
|
||||
Edit environment variables in `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- DATABASE_URL=sqlite:///./drugs.db
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
When you run `docker-compose up`, the backend automatically reloads when code changes (`--reload` flag). Just refresh your browser to see updates.
|
||||
|
||||
## Production Deployment
|
||||
|
||||
For production:
|
||||
1. Disable `--reload` in docker-compose.yml command
|
||||
2. Use a production WSGI server (e.g., Gunicorn)
|
||||
3. Add environment variables for security
|
||||
4. Use a managed database instead of SQLite if scaling
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
- User authentication & roles
|
||||
- Audit log (who changed what and when)
|
||||
- Export to CSV
|
||||
- Barcode/QR code scanning
|
||||
- Email alerts for low stock
|
||||
- Multi-location support
|
||||
- Mobile app
|
||||
Reference in New Issue
Block a user