Create a Python/Flask app (api only) that allows customers to create service requests from a react app. The features of the app include
- Customers can create service requests
- Customers can search service requests by ID or date range
- No sign-in/sign-up/logout required
- Customers are identified only by their email addresses
- All services are predefined (pre-seeded in the DB) and customers can only choose from a dropdown
- Work Orders cannot be scheduled in the past only in the future
- All available time slots should be used. For example, if a service request is deleted, and a new one is created. The available slots should be used for the newly created requests
- Durations should be in minutes. Example 25.2 would mean 25 minutes 2 seconds but should be presented to users after a search in a friendly format. For example, after a successful search, I wouldn't show 65.40 to a user rather 1hr 5min would be more appropriate. Please feel free to spell our the hours and minutes if you so desire.
- Work orders should not be created for the following
- Any date that is a holiday
- Sundays
- Anytime before 9 am and after 5 pm Monday - Saturday
- Enter email address
- Select Service from dropdown
- Clicks Create
Expectation: I should see the work order create for my service request
- Enter a service request ID
- Click Search or press Enter
Expectation: I should see the work orders for the specific service request
- Enter a date range
- Click Search
Expectation: I should see all work orders for the service requests in that date range grouped by service request ID
Service
> ID
> Name
> Duration
WorkOrder
> ID
> ServiceID
> CustomerID
> EmployeeID
Holiday
- date
TODO
> Create the entity for the work order relation
Note: Feel free to add other columns to the above schema if you think they'd be useful. For example, you can add a
created_at
andupdated_at
for each entity.
- Ease of bringing up all services in development (use docker/docker-compose if you wish. Bonus point if you do)
- UI/UX, bonus if work orders are shown on a calendar
- Strong OOP principles
- Unit Tests for core logic
- Work Order scheduled appropriately
- Well documented README.md
- SQL queries for creating all entities
- Index added to necessary columns and data integrity constraint enforced
- Necessary Python APIs exposed
- Demo/Presentation
- Python/Flask
- JavaScript/React
- MySQL
id: 1
name: iPhone Screen Repair
Duration: 2h
-----
id: 2
name: 3 Bedroom Apartment Full House Cleaning
Duration: 3days
-----
id: 2
name: Hair Braiding
Duration: 4h
- Go through the requirements and let me know if you have any questions
- Come up with a realistic estimate of how long it will take you to get this done
- Share your GitHub repo for the take-home with us