This is a simple FastAPI-based backend application for managing discount campaigns, users, and orders using JSON files as the data store instead of a traditional database.
discount_campaign/
├── app/
│ ├── __init__.py # FastAPI app initializer
│ ├── routes.py # All API endpoints for campaigns, users, and orders
│ ├── models.py # Pydantic models for data validation
│ ├── utils.py # Helpers for JSON read/write and datetime conversion
│ ├── campaign_data.json # Stores campaign data
│ ├── user_data.json # Stores customer/user data
│ └── order_data.json # Stores order data
├── run.py # Entry point to start FastAPI app
├── requirements.txt # Project dependencies
└── README.md # Project documentation
git clone https://github.com/your-username/discount_campaign.git
cd discount_campaignpython -m venv .venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`pip install -r requirements.txtuvicorn run:app --reloadGET /campaigns: List all campaignsPOST /campaigns: Create a new campaignGET /campaigns/{campaign_id}: Get campaign detailsPUT /campaigns/{campaign_id}: Update campaignDELETE /campaigns/{campaign_id}: Delete campaign
POST /users/: Create a new userGET /users/{user_id}: Get user detailsPUT /users/{user_id}: Update user details
POST /create_order/: Create a new order and apply discount based on the campaign and user's eligibility
All data is stored in JSON files:
campaign_data.json- holds campaignsuser_data.json- holds usersorder_data.json- holds orders
Each entity includes timestamps (created_at, updated_at) and the respective fields defined in the models.py.
- Python 3.11
- FastAPI - for building APIs
- Pydantic - for data validation
- Uvicorn - for ASGI server
- Lightweight, JSON-file-based backend
- Full CRUD support for Campaigns and Users
- Discount application logic in Orders
- Validations and duplicate checks
- Modular and extensible architecture
- Replace JSON storage with a proper database (PostgreSQL/MongoDB)
- Add authentication (JWT or OAuth)
- Add filtering and pagination to listing APIs
- Write unit and integration tests