Advanced Training Evaluation

You should only attempt this evaluation after working through and feeling comfortable with the following sections:

  • The Basics
  • Hello World Example
  • Basic Training Exercise and Evaluation
  • The Advance Training Exercise

The exercise below is intended to evaluate your level of understanding of the more advanced concepts of divbloxPHP. If you are able to build this exercise successfully, your skill will be considered proficient.

info

If you would like to have your exercise graded for certification, you can submit it to us at support@divblox.com. Please note, certification may carry a cost. Please send us:

  1. Link to your GitHub project (access given to @DaniS0312)
  2. Link to a divbloxPHP sandbox with your functional application, as well as admin and user credentials to log in with.

Exercise Brief - Build a personal finance tracker.

You should be able to create monthly budgets, and each can have multiple budget items. Each of these budget items may be a parent of further budget items (e.g. Utilities -> Water + Electricity + Internet). Budget items should have at least a name and amount. For each budget item, you can add expenses. Expenses should have at least a name, amount, description and date captured. The expenses can have multiple receipts attached to them. Each receipt should have either, data of issue, amount or document.

As a user you should be able to quickly log an expense, and either immediately or later be able to link it to a budget item. You should be able to see unallocated expenses (not linked to a budget item) separated from the financial tracker. You should also have a dashboard summarizing your expenses progress over a month, both as a monthly single percentage and separately by budget items (categories).

You should try split this into 3 distinct areas: An admin page to configure budget items, a new expense page to quickly add expenses (and possibly update them further) and the dashboard to summarize any metrics you would deem fitting for a budget.