Developer Hiring Test

Why this test?

At Frappe, we build applications for the web, so understanding how web applications work, is a pre-requisite for any new engineer.

If you have never worked on web applications before, this test will also help you evaluate whether this is something you are skilled at or can easily learn doing.

Library Management Web Application

A local library is in dire need of a web application to ease their work. The library management system must allow a librarian to track books and their quantity, books issued to members, book fees.

For the sake of simplicity, you don't have to implement sessions and roles, you can assume that the app will be used by the librarian only.

The following functionalities are expected from the application:

Base Library System

Librarians must be able to maintain:

  • Books with stock maintained
  • Members
  • Transactions

The use cases included here are to:

  • Perform general CRUD operations on Books and Members
  • Issue a book to a member
  • Issue a book return from a member
  • Search for a book by name and author
  • Charge a rent fee on book returns
  • Make sure a member’s outstanding debt is not more than Rs.500

Integration for Data Import

The librarian should be able to import books into the system using the Frappe API and create book records.

How the API works?

  • This API will give you only 20 books at a time.
  • It accepts title, authors, isbn, publisher and page as parameters.

How to use the API?

  • Build an interface in your app to interact with our API.
  • Add a field to specify the number of books to import, at the very least.
  • You may additionally give the librarian any set of parameters; for instance, they should be able to import 30 books titled "Harry Potter".
  • Insert book records.
# Usage

$ curl https://frappe.io/api/method/frappe-library?page=2&title=and

{"message":[{"bookID":"35460","title":"Star Wars: Clone Wars Adventures  Volume 6","authors":"W. Haden Blackman/Matt Fillbach/Shawn Fillbach/Ronda Pattison/Mike Kennedy/Stewart McKenney/Rick Lacy/Dan Jackson/Michael David Thomas/Joshua Elliott","average_rating":"3.78","isbn":"1593075677","isbn13":"9781593075675","language_code":"eng","  num_pages":"88","ratings_count":"176","text_reviews_count":"10","publication_date":"8/23/2006","publisher":"Dark Horse Books"},{"bookID":"17828","title":"The Master and Margarita","authors":"Mikhail Bulgakov/Michael Karpelson","average_rating":"4.30","isbn":"1411683056","isbn13":"9781411683051","language_code":"eng","  num_pages":"332","ratings_count":"493","text_reviews_count":"47","publication_date":"4/1/2006","publisher":"Lulu Press"},{"bookID":"34908","title":"Here  There Be Dragons (Chronicles of the Imaginarium Geographica  #1)","authors":"James A. Owen","average_rating":"3.86","isbn":"1416912274","isbn13":"9781416912279","language_code":"en-US","  num_pages":"326","ratings_count":"10103","text_reviews_count":"917","publication_date":"9/26/2006","publisher":"Simon & Schuster Books for Young Readers"},{"bookID":"40395","title":"A Princess of Mars (Barsoom  #1)","authors":"Edgar Rice Burroughs/John Seelye","average_rating":"3.81","isbn":"0143104888","isbn13":"9780143104889","language_code":"eng","  num_pages":"186","ratings_count":"38926","text_reviews_count":"2355","publication_date":"1/30/2007","publisher":"Penguin Books"}]}

Reports

  • Most popular books with quantity available in the library and total quantity.
  • Highest paying Customers.

Tests

Basic Unit Tests to test your business logic.

Optional Features

These are features not essential to the interview, but something that we would definitely appreciate

  • Ability to download the reports
  • Charts in report views
  • Sessions with a guest view for users to view available books

How to Submit

Once this application is ready, push your code to GitHub and add a README.md file in your repository. Add screenshots showing the screens and reports in your README.

After this, just drop in an email to the engineer who requested you for this test or at jobs@frappe.io saying that your project is done.

Next Steps

After this, we will get in touch with you and you will have to walk us through your code. We will then ask for a few changes or additional features that will help us evaluate how well you know your code base.

Tips to Ace the Code Evaluation

  • Build a good UI, with clean forms and reports
  • Avoid code duplication, abstract out functions that can be reused
  • Good formatting and structuring of both your client and server code is important
  • Write concise SQL queries if not using an ORM
  • Brownie points if you deploy your app on a platform like Heroku or PythonAnywhere

If you're new to Python, please take a few extra days to learn about the language and best practices before diving into development.

This test should be done using the Flask Python Framework for the backend with any frontend framework of your choice. Flask also has a great tutorial for your reference.

A word of caution: In the past, applicants have not done this test themselves and have completely failed to explain or make changes. We know it sounds dumb, but people do such things.

Feel free to ask for help from anyone or just look on the web. Do this project by yourself if you want to sustain a career in programming and technology!

All the best! 👍