If you have directly landed here, and have questions about this whole “assignment” thing, you may read this first!

Now you are settled, the purpose of this assignment is to check if you can write the quality Laravel code.

Assignment Alternatives

If you have existing work samples to show and you missed submitting them during the application process, you can still submit them by replying to the email you receive upon your application.

Acceptable

  1. We accept any link where we can see your source code in a version control environment such as WordPress.org, Github, Gitlab, Bitbucket.
  2. Link to one or more git/svn commits in case you do not have a solo project to show but have a significant contribution to a larger project where we can see your code commits.

Not Acceptable

  1. Sending links to public sites! It doesn’t tell us anything about your code quality or if you have followed coding standards or written test cases.
  2. Sending zip files either as an attachment or via dropbox or some public link. Zip files do not give us visibility into your commit history over the time which tells a lot about how disciplined you are!

Scenarios

As we attract people from different walks of life, we have many options to suit everyone’s needs, tastes, and experiences here. So please carefully read every scenario described below and pick the one as per your comfort, you can always reach out to our hiring team for further clarification.

Sample Programming Challenges

Just to clarify again, if you have code samples to show, you don’t need to solve a programming challenge. You can (re) read the section above.

We have two kinds of challenges for Laravel Engineers.

You need to complete anyone. If you wish to complete two, we won’t mind. 😉

Challenge 1: Quiz System

This Laravel project will provide a basic quiz system where users can create and attempt quizzes. Apart from that, a daily report of the quiz attempts needs to be sent to the quiz author as well.

  1. Non Logged In Users should be able to view the list of quizzes available
  2. Logged In Users should be able to create a quiz and attempt existing quizzes
Requirements for quiz:
Quiz creation:
  1. Interface to create a new quiz.
  2. Interface to add questions(MCQs) and correct answers for them.
  3. Option to add a time limit for the quiz attempt.
  4. Option to subscribe to daily digest of the quiz that will be sent at 10 am if there are any new attempts in that quiz.
    • Daily digest email will contain:
      • List Users who attempted the quiz.
      • Number of attempts they made.
      • Average, Max and Min marks they scored.
Quiz Attempt:
  1. Interface to attempt the quiz.
  2. Ability to switch to different questions.
  3. Interface to review the whole quiz attempt.
  4. Once the attempt is submitted, an interface to display the results/score.

Challenge 2: Support Forum/Discussion

This laravel project will provide a basic support forum system, where users can create forums, threads and replies, and be able to subscribe to a given thread.

  1. Non Logged In Users should be able to view support forums and support threads.
  2. Logged In Users should be able to create support forums, create support threads, reply in existing support threads and subscribe to a support thread.
Definitions:

Support forum:

A section consisting of similar types of support threads. Eg. On a coding support site, there can be separate forums for PHP, JavaScript, WordPress, Laravel, etc. Threads will belong to one of the defined/created forums.

Support thread:

It will be a topic/thread, belonging to a support forum, to which logged-in users can reply. It can have status:

  1. Unresolved
  2. Resolved
  3. No Replies

Support reply:

A support reply will belong to a support thread. It can be nested, so a user can create a reply to a reply.

Subscription:

If a user is subscribed to a support thread/s, he/she will receive a daily email notification containing the new replies that were created in the thread throughout the day.

Coding Guidelines

Irrespective of which challenge you choose, please note down our common minimum requirements applicable to all challenges.

  1. Responsive – Your code must work on mobile devices like iPhone/Android.
  2. Code Organisation – All 3rd party codes, libraries must be inside vendor folder. No unwanted files e.g. IDE files, temporary files should be committed on git-repo. (Hint: Write a nice .gitignore)
  3. Coding Standard – Your code must adhere to PSR-2 coding standard and the PSR-4 autoloading standard. Additionally, you can configure scrutinizer-ci so your code quality can be seen easily.
  4. Unit Testing – Having unit tests for the code you write will be a plus point. You may use php artisan make:test ExampleTest to create a unit test for an Example class.
  5. Github Readme – Write a nice Github Readme using markdown syntax. Make sure you include a demo link and links to libraries used in the readme.

Have Questions?

We request you to read FAQ here.