Git Product home page Git Product logo

ca-backend's Introduction

Welcome

Nice to meet you! We use this test at CubiCasa to evaluate all Python developer applicants before interviews. We hope you'll have fun with this assignment.

Introduction

Your Future Job (YFJ) is a nonprofit service that helps high school students to choose a profession to follow. The users of the system may be of 2 categories:

  • Students: come to the system to get advice on the best matched jobs that they can follow after school
  • Volunteers who come to help students by providing their data

Stats service is public service which investigates the labour market and can provide data regarding jobs and earnings. YFJ uses the data from stats for its computation but it doesn't own these data. The endpoint YFJ will consume from stats is /job_earnings which provides a list of jobs together with average earning for each jobs

Assignment

Your mission is to help YFJ build a RESTful Web Service that can be consumed by various frontend clients: web, mobile apps.

For that you should implement the endpoints for students and volunteers in YFJ site

  1. Student can input his school performance as average scores for school subjects: Math, Physics, Chemistry, Biology, Literature, History, Geography, Phylosophy, Art and Foreign Language and get back 3 most apropriate jobs in recommendation. When student input data, the system stores his/her data for the future computation. Students can also update or delete their data at any time if they have concern regarding privacy. The URL for student is /{PeopleID}/advices

  2. Volunteers are people who have already landed on good jobs. They come back and use the URL /{PeopleID}/jobs to tell about their current job(s), so that the system can use those data to make a better recommendation to students. Volunteer can come to system many times if he/she has changed job in various periods of life. But the prerequisite is that volunteer should input his/her school performance at least once before input data about job The format of data to be input is like {jobs: [job1, job2, ...]}, e.g: a list of job name, nothing else.

  3. Student and volunteer can come back to site at any moment and update or delete his/her data at will

Note:

  • To maintain user's privacy, the PeopleID should not be stored as unencrypted text in the database
  • The most appropriate jobs are recommended based on student performance as well as the data about job earning from stats service.
  • There is no unique solution in computing the recommended jobs, feel free to suggest one.
  • You should not care about authentication or authorization, YFJ is open to wide public

How to complete and what is expected

Software needed to install

How to run

  1. Run all services with docker: docker-compose up -d

  2. Or run only db and stats services with docker and run flask for local development docker-compose up -d db stats export FLASK_APP=app && flask run --port 9000

To see output of Stats Service, browse to: localhost:8000/job_earnings

To see YFJ site, browse to: localhost:9000

The above instructions are given for Linux user, please adapt to your system if you use another OS

What we expect from you

  • You do not have to make any modification to service stats or code in stats folder

  • You work with the code in folder yfj to complete your assignment.

    • While working with YFJ site you are allowed to add any libraries, made any modification to setup files, add new files, ...
    • Please update requirements.txt when adding new libraries
    • Please update migration when adding new models
    • Please make GIT commits as small as possible so we can review your development process step by step.
  • You have 2 weeks to complete this assignment and submit your result to [email protected] with following checklist:

    • GIT repo for your source code
    • Documentation files for your YFI RESTfull web service (Optional)
    • Screen shots to demo how your application running (Optional)

ca-backend's People

Contributors

manhngodh avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.