Rethink UX Backend Internship Hiring Challenge
The aim of this challenge is to Implement backend for Clinic Management exposing REST API
Welcome to Rethink UX Backend Internship Hiring Challenge!
Rethink UX is hiring backend end developers on Dockship! The AIM of this challenge is to Implement backend for Clinic Management exposing REST API using Django. Please refer to the "Submission Guidelines" to understand what to build.
Must have skills in the Backend Developer
- Expertise in Core Python (2 & 3)
- Sound Knowledge of Web Frameworks & Object Relational Mappers (ORMs)
- Good Understanding of Multi-Process Architecture and the GIL
- Object-Oriented programming & Functional programming
- Error handling and exception recovery
- Knowledge of testing frameworks (e.g. PyTest, Unittest)
We work with Django
Sound knowledge of Django is required for the candidate, and he must know Django from in and out. Here are the concepts the candidate must know:
- Django Views
- Environment management
- Django REST Framework
- REST Best Practices
- Query Optimization
Python and Object Oriented Skills
- Inheritance, Mixins
- Design patterns
- Experience with Pytest or Unittest
The candidate has to build an application using Django meeting following requirements:
There will 3 types of users
- Practitioners: The doctors who treat within the clinic.
- Visitors: The clients who visit a doctor.
- Super Admins: Users who can add Doctors and Manage the whole clinic.
Practitioners User role details:
1. Practitioners can change their available time from the mobile/web application. Eg: 9 a.m. to 1 p.m., 2 p.m. to 6 p.m.
2. Practitioners can specify the time slot period for which a visitor can book, eg: 10 minutes, 30 minutes, 120 minutes, etc.
3. Practitioners can see the list of appointments already booked by the patient and the mode of the appointment:
- Video Conference
- Physical Meeting
4. Practitioners can manage their profile information:
- Profile Picture
- Appointment Successfully completed (computed)
- Date Joined
- Phone Number
- Is Available (computed from the available time and time slots)
- Bank Account Details: PAN Number, Bank Account Number, IFSC Code
Visitor User role details:
1. Visitors can register at the system by providing:
- Email ID (primary field)
- Address: Address Line 1, Address Line 2, Postal Code, City, State, Country,
- Date of Birth
2. Visitor can check the available time slots for a practitioner by giving:
- Time Slot Duration for that day
- Visitors can book a particular slot and that slot should be blocked for 15 minutes until the visitor completes the payment.
- If visitors do not make the payment, then the system should automatically make that slot available.
- If visitor makes the payment, then send notification to Practitioner via: Email and SMS (Dummy Function)
- Only Super Admins can add Practitioners.
- Visitors need to verify the Email using OTP before creating or updating their profile or booking the appointment.
- For payment the candidate can use a dummy endpoint that accepts the order_id, payment_id, amount and appointment id. And should mark payment as successful upon hitting.
The candidate needs to implement the test cases as well. However, he/she can skip testing views, instead can only concentrate on main logic testing. For eg: Testing if the appointment is booked and not yet paid, the get_timeslots_for_day(day, duration) function should return the all the time slots if the time of 15 minutes has been passed, else all but the current timeslot.
The candidate needs to create the REST API using Django REST Framework to expose all the functions specified in the requirements.
The candidate is given 48 hours to complete the assignment.
- A single ZIP file containing all the code files along with a readme file with link to a Git repository with read access on [email protected].
- Do not forget to add Readme.md file for project setup guide.
- Tip: You can add bash script file to install all the dependencies.
- API Documentation using Swagger AutoSchema
How to make a submission?
- Click on "My Submission"
- On the next page, click on "+ New Submission"
- Upload your CSV in the next page and click on "Submit for Review"
- You must submit your ZIP file by uploading the ZIP in the "My Submissions" section of this challenge.
- Your submission will be graded manually and it can take upto 48 hrs.
- If there is any error in the submission, your final score will be marked as 0 or a warning prompt of “Invalid Score” will be displayed.
A. Division of components/files.
B. Nomenclature of the components/files.
C. Data flow inside the application.
D. Performance metrics:
- Memory usage while running the application.
- The number of third party libraries used (the more libraries you use, the more -ve points will be awarded).
E. Database Management
F. Error handling
- The process of interviews is managed by the organizer Rethink UX.
- The submission should be in a proper format as described by "Submission Guidelines".
- Late submission will not be accepted beyond provided deadline (Indian Standard Time).
- Internship Offering with monthly stipend between INR 12,000 and INR 18,000.
- Participants with at least 1 valid submission will receive certificate from "Rethink UX" for commendable effort.
- Top 3 participants will get a permanent place in Dockship's Hall of Fame.
- Work with the Best and Brightest Technical Talent
- The stable and well-funded company
- Virtual Happy Hours, Team Building Events, Hackathons