This assignment is designed for the job post of the Senior Software Developer. ( Dot Net )
Create a chat app that will have public rooms.
Step 1: Create a sign up api and page ( /signup
) ( Signup user with following details )
- First Name ( Required )
- Last Name ( Required )
- Email ( Required ) ( Unique ) ( Use AWS Cognito to register the user )
- Phone number ( Required )
- Profile pic ( Required ) ( Store this on AWS S3 bucket )
- Password ( Required ) ( Must have 8 characters with alpahnumeric and special characters )
After successfully signup redirect user to homepage ( /signin
)
Step 2: Confirmation api and page ( /[email protected]
)
Step 3: Create a sign in api and page ( /signin
)
- On sign in api and page user should be able to login with email and password.
- Show error if email and password doesnt match.
- Show error for invalid email address.
- If email is not confirmed, don't allow to signin.
- Redirect user to homepage (
/
) after successfully login. - Show a forgot password link in login form where user can reset his password.
Step 4: Show available chat rooms on home page and create api for that ( /
).
Also show a button to create a public room.
Step 5: Create public chat room api and page ( /create-room
) ( With Following details )
- Name
- Description
Step 6: Join that room by click on room from home page ( /room/{room_id}
)
Step 7: Send messages and all other people from that room will recieve the message ( /room/{room_id}
)
- Use Google / Facebook / Apple / Github OAuth to register and login user in the application.
- Implementing the API Rate limiting.
- Leave a room would be a great feature to build.
- Pagination on API side would be a great feature to build.
- Filtering based on Filled and Non Filled rooms would be a great feature to build.
To develop the application, use the below-given stack:
FrontEnd:
- HTML, CSS, JavaScript
- React, Vue and Angular are optional.
Backend:
- Language & Framework: C# & Dot Net Core.
- Database: Any SQL Database.
- CloudService: AWS/Azure/Gcp.
- UI can be responsive but not a super important part.
- Application should be build using the above stack.
- For registration, use JWT or a session-based mechanism
- Proper error handling is required.
- Write neat, suitable, bug-free, and readable code as per the coding standards.
- Create a data model as you need
- Data model should be normalized and query must be acid complaint.
- Use Websocket to create connection between users.
Note: The goal of the task is majorly based on backend development and thus UI won't be an important factor while evaluation.
The timeline to complete this app is a maximum of five days. Plagiarism is prohibited and if an applicant submits a plagiarised work then his application will be rejected.