Skip to content

Instantly share code, notes, and snippets.

@sreecodeslayer
Created July 3, 2017 08:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sreecodeslayer/7125c5beece9bde6c01ab0975053bfa2 to your computer and use it in GitHub Desktop.
Save sreecodeslayer/7125c5beece9bde6c01ab0975053bfa2 to your computer and use it in GitHub Desktop.

Product Init


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

Task 1 :


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:

Done? Cool.

Task 2 :


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!!

Task 3 :


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.

Task 4 :


  • 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.

Task 5 :


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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment