- Create a virtual env.
python -m venv <name> - Activate the environment
source <env_name>/bin/activate - Install requirements.txt file
pip install -r requirements.txt - Run the server
python manage.py runserver
-
The project contains 2 application users & events
-
user app handles all the user related data which includes:
- Listing all the users
- Creating the users/admin-users
- Generating auth token for the users
-
events app handles all event management related data, namely:
- Listing all events
- Creating new events
- Getting specific event
- Booking tickets for a specific event
- Listing of all the bookings of Users for different events
-
ASSUMPTION: There is no distinction between any 2 tickets for an event i.e. there are 2 types of ticket management services, one in which each ticket is unique & holds different value (like a movie theatre), other in which all tickets are same in the experience they provide i.e. entry through the gates(like a waterpark). We assume the latter.
-
Test classes have been implemented in test.py file for both the apps.
-
ADDITIONAL FEATURES ADDED
- Creation of Auth token(JWT) for user verification.
- Surge Pricing in case of Fast-filling events
- NO HOARDING i.e. user with same credentials cannot buy more than 4 tickets. Also restricting multiple buys from the same user
- Booking can only be done by registered users.
- Geocode API(Google) to find Latitude, Longitude which can then used by frontend to render Google Maps in frontend
-
FEATURES ADDED POST DEVELOPMENT
- RATE LIMITING, so that user doesn't spam the APIs and put unnecessary load on the servers
- Dealing with Colliding Events, i.e. restricting user to create a new event, if that event collides with an already existing event(in terms of location & date-time)
-
Swagger Docs: /api/swagger/