The overall objective of the app is to support a consultancy company to track all the meetings its employees have with customer representatives (named contacts), for each project.

For the sake of simplicity, we assume that the app will be used by just one user profile, who will be able to both configure the lookup registries (employees, customers and projects) and keep track of the meetings.

Almost all the requirements described hereunder are satisfied out-of-the-box by the backend service generated by Livebase from the engine model we provide. As a small challenge for you, we have added just three additional requirements that will require you to extend the engine model provided by us and regenerate the backend service with Livebase.

If you have questions on some specific requirements, feel free to contact us at support@livebase.com.

Keep this page as a reference, and follow our step-by-step guide to generate and deploy a fully functioning backend for the app to be submitted (it will take less than an hour).

Employees management

  1. The app must allow the user to manage a registry of the employees working for the company (i.e. create, list, read, modify and delete such employees).

  2. For each employee, the app must allow the user to enter, modify and view the following attributes: full name, phone, and email.

  3. When creating or modifying an employee, the app must verify that the phone attribute contains only digits and the “+” sign.

  4. When creating or modifying an employee, the app must verify that the email attribute contains a string syntactically compatible with an email address.

Customers management

  1. The app must allow the user to manage a registry of the customers of the company (i.e. create, list, read, modify and delete such customers).

  2. For each customer, the app must allow the user to enter, modify and view the following attributes: name, some notes, and a boolean flag telling if the customer is archived (i.e. no more active).

  3. When creating or modifying a customer, the app must force the user to select an employee as the account manager of that customer.

Contacts management

  1. The app must allow the user to manage a registry of the contacts of each customer (i.e. create, list, read, modify and delete contacts of that customer).

  2. For each contact, the app must allow the user to enter, modify and view the following attributes: full name, phone, email, and a boolean flag telling if the contact is archived (i.e. no more available).

  3. When creating or modifying a contact, the app must verify that the phone attribute contains only digits and the “+” sign.

  4. When creating or modifying a contact, the app must verify that the email attribute contains a string syntactically compatible with an email address.

  5. Each customer must have its own contacts (i.e. each contact must belong to exactly one customer), and deleting a customer must automatically delete all its contacts.

  6. In order to manage the contacts of a given customer, the user should first open that customer for editing. Any change made to the contacts of a given customer must be saved on database only if (and when) the customer is finally saved.

Projects management

  1. The app must allow the user to manage a registry of the projects run by the company. (i.e. create, list, read, modify and delete such projects). 

  2. For each project, the app must allow the user to enter, modify and view the following attributes: name, description, and a boolean flag telling if the project is active.

  3. When creating or modifying a project, the app must force the user to select a customer as the customer who commissioned the project.

  4. When creating or modifying a project, the set of customers from which the user must select the one who commissioned that project must contain only customers not marked as archived.

  5. When showing the details of a project, the app must retrieve and show the name of the customer who commissioned the project.

  6. When creating or modifying a project, the app must allow the user to select a set of employees as staff for that project.

  7. When creating or modifying a project, the app must force the user to select an employee as the manager of that project.

  8. When creating or modifying a project, the set of employees from which the user must select the manager of that project must contain only employees previously assigned to the project as staff.

  9. When creating or modifying a project, the app must force the user to select a contact as the primary contact for the project.

  10. When creating or modifying a project, the set of contacts from which the user must select the primary contact for that project must contain only contacts not marked as archived.

  11. When creating or modifying a project, the set of contacts from which the user must select the primary contact for that project must contain only contacts belonging to the customer who commissioned the project.

  12. When showing the details of a project, the app must retrieve and show the full name of the primary contact of the project.

  13. When showing the details of a project, the app must calculate and show the cumulated meeting effort (man/hours) spent by the company for that project. For instance, the cumulated meeting effort for a project that required a one-hour meeting attended by two employees and a two-hours meeting attended by three employees is 8 man/hours. 

Meetings management

  1. The app must allow the user to manage a registry of the meetings of each project  (i.e. create, list, read, modify and delete meetings of that project).

  2. For each meeting, the app must allow the user to enter, modify and view the following attributes: date, subject, description and duration in minutes.

  3. Each project must have its own meetings (i.e. each meeting must belong to exactly one project), and deleting a project must automatically delete all its meetings.

  4. In order to manage the meetings of a given project, the user should first open that project for editing. Any change made to the meetings of a given project must be saved on database only if (and when) the project is finally saved.

  5. When creating or modifying a meeting, the app must allow the user to select a set of employees as the employees attending that meeting.

  6. When creating or modifying a meeting, the set of employees from which the user can select the ones attending the meeting must be restricted to the employees assigned as staff to the project the meeting is held for.

  7. When creating or modifying a meeting, the app must allow the user to select a set of contacts as the contacts attending that meeting.

  8. When creating or modifying a meeting, the set of contacts from which the user can select the ones attending the meeting must be restricted to the contacts belonging to the customer who commissioned the project the meeting is held for.

  9. When showing the details of a meeting, the app must show the number of employees who attended the meeting.

Statistics

  1. When showing the details of an employee, the app must calculate and show the total time (minutes) spent by that employee in all the meetings he attended, regardless of the project.

  2. When showing the details of a project, the app must calculate and show the cumulated meeting effort (man/hours) spent by the company for that project. For instance, the cumulated meeting effort for a project that required a one-hour meeting attended by two employees and a two-hours meeting attended by three employees is 8 man/hours. 

Additional requirements to be modeled

  1. When showing the details of a customer, the app must calculate and show the cumulated meeting effort (man/hours) spent by the company for all the projects commissioned by that customer.

  2. When modifying a contact, the app must show a warning and refuse to save the changes if the contact has been marked as archived while it’s still referred to as primary contact by one or more active projects (i.e. the contact can be saved as archived only if all projects referring to it as their primary contact are not active).