At Sahaj, tech consultants operate at the intersection between engineering and art. Simply put, they are artisans who take on complex engineering problems in the software industry across a wide spectrum of domains. Their work is deeply rooted in first principles thinking - asking fundamental questions to dissect and understand a problem which eventually leads to one-of-a-kind solutions, each as distinct as a fingerprint.
Through NaN(O), a hackathon driven by Sahaj across multiple colleges in India, they want to instill a culture of applying first principles thinking to a problem statement.
We need a system to be able to manage data for employees. Requests will be accepted over HTTP (API contract). No databases/libraries can be used to store/maintain data.
Fastest applications win.
- Your repository needs to have a
Dockerfile
that starts your HTTP web app - Your HTTP app need to expose APIs (API contract) on port 8080
- No existing databases, libraries and services can be used to store the data
- Application needs to persist data across restarts
- No limitation on the programming language
- Do not touch the GitHub actions code. It is used to test your code automatically and score it. Any modifications will lead to immediate disqualification.
- Maximum time a single request can take is 10 seconds
- Data should be persisted in
/home/
- Do not run a development webserver with watch enabled in your app. Your tests will fail.
- If your greeting end point test is not passing, please check the output you produce. It needs to be exactly what is requested.
- When in doubt, please check the Github Actions logs for details
- Logs for the performance tests will not be shared
{
employeeId: string,
name: string,
city: string
}
Checks whether the service is available.
- Code: 200
- Content:
Hello world!
Creates a new Employee and returns the employeeId
Content-Type: application/json
{
name: string,
city: string
}
- Status code: 201
- Content:
{ "employeeId": "<employee_id>" }
(Note: Employee ID is astring
)
Returns the specified employee.
id=[string]
Required
- Status code: 200
- Content:
{ <employee_object> }
- Status code: 404
- Content:
{ message : "Employee with <employee_id> was not found" }
Returns list of all employees.
- Status code: 200
- Content:
[{ <employee_object> }]
Updates fields of the existing employee and returns the new object.
id=[string]
Required
Content-Type: application/json
{
name: string,
city: string
}
- Code: 201
- Content:
{ <employee_object> }
- Code: 404
- Content:
{ message : "Employee with <employee_id> was not found" }
Deletes existing employee record.
id=[string]
Required
- Status code: 200
- Content:
{ <employee_object> }
- Status code: 404
- Content:
{ message : "Employee with <employee_id> was not found" }
Check rules and scoring pages for details. When in doubt, ask the organizers and we will add clarifications to the page.
- git clone
git repository url
(Skip this step if using github codespaces) - cd
repository name
(Skip this step if using github codespaces) - Goto server.py
- Begin coding
- Code needs to be tested via github? Execute following commands in the terminal location of your repository
- git add .
- git commit -m 'any message regarding your changes'
- git push
- Wait for build to complete in github actions logs.
- If build is green, you should see the score on the leader board, else check with actions logs.
- On your browser after accepting the github invitation,
- Celect "Code" dropdown
- Select the "Codespaces" tab.
- Select "Create codespace on main"
- Continue from step 3 of Sample Instructions for coding/commit