Hey, glad you are here. Now let's get you settled into our Team. Before we look into our current products, we will try to familiarize some of the technologies that are used in production through some set of simple tasks. These tasks are meant to act as a stepping stone to learning the technologies mentioned below:
- HTTP / REST Api, Read on here and here
- Git, and Gitlab
- Server Client relations
- Backend programming (Server side implementation)
- Frontend programming (Client side implementation)
- Usage of database
- Deployment
Familiarise Git terminologies and basic commands, know them? Then skip the task. However we suggest taking a look at it. We love learners! Useful links:
- Cheat Sheet
- Tutorial 1
- Try the git challenge with Tutorial 2
Done? Cool.
Make a backend API using Python-Flask
Please be sure that you use absolutely no Templating (Flask comes with Jinja2) or frontend client codes (No fancy stuff, no React, no Angular, no Bootstrap) for this one. You should be using a REST Api client like POSTMAN or INSOMNIA.REST
What the API should have:
NB. Use your gitlab/github account to share the final piece. It would be cool if you do commits as you progress.
- API should first greet the user. Well that's obvious!
- End point(Route) for user to submit a form with any data you may wish. Just give a structure.
- Send back response with the form to user as JSON data
- Redirect user to three routes. Target is to see three
HTTP - 302
status in response (Oops, I just hinted something here!). - Handle
HTTP - 404
&HTTP - 500
, something that annoys the user ofcourse. We don't want to let them know that we are lazy to work here, do we? - Use
gunicorn
to test/deploy the final API - Produce a
README.md
that clelarly instructs us to install and then use your API, the end points in the API. Examples are also appreciated. - Test cases aren't necessary, though if you wish, you could!
The API could be for anything, Football?, Movies? as long as it meets the above requirements.
Done? Share the git repo url to the task assignor. Doubts? ASK!!
Now wrap the above backend API with an awesome Frontend client. Go crazy!
Points to note:
- Use open source libraries. We love them!
- Start with Angular 1/2, Bootstrap (Optionally can use themes like these. We don't mind.) , JQuery.
- Not sure what these are? Learn them. Take your time.
- Again test, run, debug, finalize, share.
- Keep track of your Browser console ;) .
There is still one essential part missing in our product. Aha! The database.
- We usually use MongoDB here. Read about it if you have not, install and setup the database.
- Familarize with Pymongo , MongoEngine
- Use the above two in the API + Frontend you just made in Task 2&3 to store the form data now on. ie. You should modify the form submission to insert the form data to database for later use.
- Additionally, make provision to Show the data to the user through another end-point(route). This should have a corresponding view on the client.
Finally, let's build something using everything we learnt from the above tasks. We want to build an application that let's the user list out their daily tasks, set reminders. Yeah, a To-Do application.
Key features needed:
- User authentication,Secure Login/Signup
- User based route auths, restricting others from accessing the todo of another person.
- CRUD.
- Scheduled notification through emails
Optionals:
- Scalable strategies.
- Celery based background task instead of main thread.
Don't forget to document whatever you build. We expect you to help us run your application without any issues. So, be a pro, tell us how to run it.