A full-stack inventory management system built with FastAPI, React, and PostgreSQL, deployed on AWS with a Jenkins CI/CD pipeline.

- Frontend: https://inventory-manager.sidxh.com
- Backend API: https://api.inventory-manager.sidxh.com
- API Docs: https://api.inventory-manager.sidxh.com/docs
- FastAPI
- PostgreSQL (AWS RDS)
- Redis (caching)
- SQLAlchemy
- psycopg2-binary
- React
- Axios
- AWS EC2 (backend server)
- AWS S3 (frontend hosting)
- AWS RDS (PostgreSQL database)
- Nginx (reverse proxy + SSL termination)
- Let's Encrypt (SSL certificates)
- Docker + Docker Compose
- Jenkins (CI/CD pipeline)
fastapi/
├── backend/
│ ├── Dockerfile
│ ├── main.py
│ ├── database.py
│ ├── models.py
│ └── schemas.py
├── frontend/
│ ├── src/
│ │ ├── App.js
│ │ └── App.css
│ └── public/
│ └── index.html
├── docker-compose.yml
├── Jenkinsfile
└── requirements.txt
- Docker
- Node.js
- Python 3.12
- AWS account
DATABASE_URL=postgresql+psycopg2://user:pass@host:5432/inventory_db
REDIS_HOST=redis
REDIS_PORT=6379
ENVIRONMENT=production
# clone the repo
git clone https://github.com/sidxhdev/fastapi
cd fastapi
# start backend + redis
docker compose up -d
# start frontend
cd frontend
npm install
npm startEvery push to master triggers the Jenkins pipeline:
- Checkout code from GitHub
- Build backend Docker image
- Start backend + Redis via Docker Compose
- Build React frontend
- Deploy frontend build to AWS S3
| Method | Endpoint | Description |
|---|---|---|
| GET | /products/ | Get all products |
| GET | /products/{id} | Get product by ID |
| POST | /products/ | Add a new product |
| PUT | /products/{id} | Update a product |
| DELETE | /products/{id} | Delete a product |
Browser
|
|-- https://inventory-manager.sidxh.com (S3 via Nginx)
|-- https://api.inventory-manager.sidxh.com (FastAPI via Nginx)
|
|-- PostgreSQL (AWS RDS)
|-- Redis (cache)
Siddesh Navthale
- GitHub: https://github.com/sidxhdev
- Blog: https://siddeshblogs.hashnode.dev