FasterFood Application
Project Tracking
Overall Project Progress:
100%
Last updated: Mar 03, 2022

  1. Administrative Tasks

  2. Task ID
    Administrative Area Description
    Assigned to Role(s) Status
    Comments
    AD-1 HR Tools
    1. Build your personal software development environment according to the following documents:

    2. Install Visual Studio Code

    3. Install the Postman application in order to send http server requests to the back end.
    Everyone All application development roles 25%

  3. Training Tasks

  4. Task ID
    Skill Area Description
    Assigned to Skill Role Type
    Status
    Comments
    TR-1 Data Architecture Study current data architecture by looking into orderedItem.ts in the front-end folder and order.server.model.js in the back-end folder. Some PowerPoint slides will be provided to help. Also reference the Data Architecture document being created. Everyone Data Architect 25%

  5. Development Tasks

    Task ID
    Development
    Areas
    Description
    Assigned to Task's Role Type
    Overall
    Status
    Comments
    FS-1 Mobile Front-end
    Configuration
    Fix front-end to remove hardocoding of back-end URL and set as a configuration/environment parameter. The hardcoded URL can be found at persist.service.ts. It should be something similar to what is done in the back-end where there is a config folder and those parameters are handled depending on the environment (i.e., development, testing, production).
    Completed
    Freddie García
    Developer Completed
    FS-2 Mobile Front-end
    Usability
    Main ordering window must make it obvious that clicking on an item image will get them to the item detail window. Propose first. Upon approval you may start coding. Not Assigned Web Designer Pending
    FS-3 Mobile Front-end
    Feature
    Start design of "checkout window" and transfer order submit button.
    Completed
    Freddie García
    Web Designer Completed
    FS-4 Mobile Front-end
    Usability
    Provide a Dashboard option to clear current order.
    Completed
    Freddie García
    Developer Completed
    FS-5 Mobile Front-end
    Feature
    Implement VISA Checkout Interface
    Active
    Freddie García
    System Analyst In Progress
    FS-6 Mobile Front-end
    Feature
    Implement Google Pay Interface
    Postponed
    Freddie García
    System Analyst Postponed
    FS-7 Mobile Front-end
    Feature
    Implement ATH Móvil Interface
    On Hold
    Freddie García
    System Analyst Completed
    FS-8 Mobile Front-end
    Usability
    Include a small wait animation over the email notification envelope to be shown when the envelope is clicked and disappearing when confirmation of the notification action is completed.
    Postponed
    Freddie García
    Web Designer
    Developer
    Postponed
    FS-9 Mobile Front-end
    Usability
    When the viewport screen refreshes, it should stay in the same page instead of going to the last one.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FS-10 Mobile Front-end
    Usability
    Implement a "My Recent Orders" feature where customers can go back and pick from around the last 6 orders mostly for viewing purposes but even perform limited actions depending on the current status of the order such as changing the notification email, pickup time or update the customer note.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed This feature was completed and now it addresses the concerns that had been identified for repeated orders:

    • There is no guarantee that all the items and/or options from a customer's past order are available at the time that a repeated order is to be placed. Therefore, unavailable items must be removed from the repeated order.

    • There is no guarantee that the prices on the saved order are the current prices for each item. The prices on the repeated order must be updated.

    The approach taken was as follows:
    To build a repeated order it is best to start from the current menu and use the saved order as an information source to insert items and options in a new order with the current prices as per availability.
    FS-11 Mobile Front-end
    Usability
    When less than 6 orders are shown, the viewport window spots should be filled starting from window #1 (left/top).
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FS-12 Mobile Front-end
    Usability
    The Orders Viewport auto refresh time interval should be configurable at least globally.
    Completed
    Freddie García
    Developer Completed The refresh rate was made configurable at the project level.
    FS-13 Mobile Front-end
    Usability
    Incorporate receipt printing at the checkout view using the industry standard paper sizes.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FM-1 Order Management Front-end Overall design of a customer orders management module to be used mainly by employees of the Fast Food restaurants to dispatch such orders must be started.

    This module will read orders from the common back-end.
    Completed
    Freddie García
    Web Designer Completed
    • Working on continuous order stream layout as of 2019-01-26.

    • Automated order number sequence generation based on date/time tags
    • Completed on 2019-02-06.

    • Time zone handling per restaurant location.
    • Completed

    • Display of order number at the monitor.
    • Completed

    • Implement application demo features and deploy to A2 hosting (e.g., Maximum number of demo orders).
    • Pending:

      • Order status and viewport control at the monitor.
      • Error handling.
      • Code cleanup.
    FM-6 Order Management Front-end
    Logic
    After a new user is registered, the form keeps the current user displayed while the [REGISTER] button is active.

    The form must be handled in such a way that while it lets the administrator keep a view of the registered user, the immediate actions available thereafter do not include [REGISTER] because that would imply a duplicate record.

    The form layout as soon as a user is successfully registered may include actions such as "Register another", "Clear form", "Edit existing user", etc.

    Only if the administrator confirms the intention of registering another user should the [REGISTER] button become active.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FM-7 Order Management Front-end
    Logic
    When the Order Viewport is loading the existing order pool, a "loading" animation should be shown while the download is being completed.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FM-8 Order Management Front-end
    Logic
    When updating a user profile, there must be a checkbox to indicate that the password will be updated. By default, the password should not be updated.
    Also, users should be able to update their password from the "View Profile" UI. Perhaps the window title should be updated to indicate that it can be used to change the password.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FM-9 Order Management Front-end Show pickup/delivery time.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FM-10 Order Management Front-end Orders for which delivery was set by the customer must show a special icon. Upon clicking this action the application should allow sending a notification to a "delivery boy".
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FM-11 Order Management Front-end A set of filters and other features should be implemented in order to enable the following:

    • Make visible orders that have been made hidden via the close ☒ button. Orders that are currently invisible can initially be made visible by using a filter. An order that becomes temporarily visible using the filter could then be made permanently visible (restore original visibility). A suggestion is to use a "restore" button in place of the normal close button for these orders.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FM-12 Order Management Front-end Access to "request for delivery" information must be provided for each order that is visible in the monitoring view. The presence of the delivery request must be indicated with a small icon that will not interfere with the rest of the information from the order (perhaps a delivery vehicle icon).
    The icon should behave as a button that would trigger the following:

    • Open a window that shows a list of "delivery boys" or services. Each person or entity in the list must be associated to an email address.

    • Upon clicking on any of the items, an email should be delivered to the associated address containing:

      • The three digit order number(sequence) and the Order ID.

      • The physical address provided by the user.

      • The geographical coordinates as generated by the mobile application when the customer indicates his/her delivery location within the map configured by the restaurant.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed Around 90% complete.
    The only thing pending is:

    To include the customer's physical address in the message sent to the delivery boy or service.
    FM-13 Order Management Front-end Failed login attempts should show a message.
    Also, it has been observed that the name of the logged user sometimes does not become appropriately updated at the page header. When this happens, it is uncertain whether the user is logged or not.
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    BE-1 Back-end For the current product scope, propose hosting models and design replication strategy to handle fault tolerance where needed if needed (i.e., Internet Only, Wi-Fi Only, Both internet and Wi-Fi). Not Assigned System Analyst
    Data Architect
    In Progress A draft of this document was started.
    BE-2 Back-end Research on availability and requirements of credit card processing development sandboxes.
    Completed
    Freddie García
    System Analyst Completed
    BE-3 Back-end Start design of remote license control mechanism.
    Completed
    Freddie García
    System Analyst
    Developer
    Completed The license control mechanism is completed.
    Some improvement tasks are likely to be added.
    BE-4 Back-end Implement transaction event log
    Completed
    Freddie García
    System Analyst
    Data Architect
    Developer
    Completed One of the areas pending is the fact that when an authorization token fails, the console reports an unhandled error. The following is an example:

    node : UnauthorizedError: jwt malformed
    At C:\Users\fgarc\Documents\Development
    \SVN\ShellScripts\ffserver.ps1:2 char:1
    BE-5 Back-end Implement receipt item abbreviation
    Completed
    Freddie García
    Data Architect
    Developer
    Completed
    BE-6 Back-end The list of projects/databases along with their corresponding subdomain names should be obtained from the global configuration. This information should not be hardcoded as is currently the case in the "getFqdnAndDbname" function at common.js.
    Completed
    Freddie García
    Developer Completed
    BE-7 Back-end The email notification of order completion must take into account that the message will vary depending on whether the customer will pickup the order himself or delivery was requested.
    Completed
    Freddie García
    Developer Completed
    FB-1 Front-end and Back-end Continue building the Data Model and how the application handles it.
    Active
    Freddie García
    Data Architect Pending
    FB-2 Front-end and Back-end
    • Implement web token authentication client features
    • Design/develop web token server-side authentication.
    Complete
    Freddie García
    System Analyst Complete JSON Web Token authentication was implemented.
    FB-3 Front-end and Back-end Design/develop role-based access and privilege mechanism.
    Completed
    Freddie García
    System Analyst Completed Around 70% complete. Pending an assessment of what is still missing.

    Still pending control of access to process transactions at the backend and the corresponding backend response handling at the client side.

    Example: An employee with the "Server" role is not allowed to set the status of an order to "PAID".

    For orders that will not be paid online using a credit card, a cashier can set the status to "PAID" from the Orders Management Module.

    Possible Scenarios are:
    • The customer will pay with cash.
    • A company is paying food to its employees.
    FB-4 Front-end and Back-end Implement adding a customer note to orders
    Completed
    Freddie García
    Web Designer
    Developer
    Completed
    FB-5 Front-end and Back-end Create storage for VISA API and encryption keys which are currently hardcoded.
    Cancelled
    Freddie García
    Data Architect Not Started The VISA Checkout interface was cancelled.
    FB-6 Front-end and Back-end Implement order completion notifications (e.g., email message).
    Completed
    Freddie García
    System Analyst
    Developer
    Completed
    FB-7 Front-end and Back-end Implement mechanism to inactivate payment methods.
    Completed
    Freddie García
    Developer Completed
    FB-8 Front-end and Back-end Make the Order Management Module obtain the privilege definitions from the backend.
    Completed
    Freddie García
    Developer Completed
    FB-9 Front-end and Back-end Implement order calorie count.
    Completed
    Freddie García
    System Analyst Developer Completed This feature was implemented as an optional energy value indicator (e.g., calories) that is shown by default on each menu item. If the restaurant owner provides nutrition information beyond energy (also optional), then the indicator still displays the energy value but becomes a button that shows a complete nutrition information label upon clicking. The feature works for the main menu item and each of its optional ingredients.
    FB-10 Front-end and Back-end Implement order pickup time.
    Completed
    Freddie García
    System Analyst Developer Completed This feature is pending to be made to work in harmony with the "eat in/take out/for delivery" ordering options (refer to FB-11).
    FB-11 Front-end and Back-end Implement "eat in/take out" ordering options.
    Completed
    Freddie García
    System Analyst Developer Completed Pending minor layout control fine-tuning.
    Also, this feature must be synced with the delivery option.
    FB-12 Front-end and Back-end Implement "for delivery" ordering option.
    Completed
    Freddie García
    System Analyst Developer Completed Still pending:
    • This feature must be synced with the "eat in/take out" ordering option. An order for which delivery is requested is a type of "take out" order. If a customer submits an "eat in" order and later successfully updates the order to have it delivered before the order is served, then the backend must record it as a "take out" order. Conversely, if delivery option is removed, then pickup by customer must be assumed. The customer will have the opportunity of making that type of change only if the browser tab where the order originated is not closed and it has not been served.

    • When the delivery option is cancelled and the order has already been processed, a database update must be performed only if status permits.
    • Implementation of this feature was reopened for logic fine-tuning after the option to charge the customer for delivery service was added.
      What needs to be fine-tuned is that if the order has been paid, then the customer cannot add delivery service.
    FB-13 Front-end and Back-end Remove hardcoding of tax rate and include it in project-level configuration.
    Completed
    Freddie García
    Developer Pending Since some jurisdictions apply more than one tax type to a single class of item, the tax rates must be implemented as a collection of rates where each tax has a corresponding abbreviated description.

    For restaurants that provide delivery, it should also be considered that delivery might be taxed:
    • At the same rate that food is taxed.
    • At special rate.
    • Not taxed at all.
    FB-14 Front-end and Back-end Order modification features:
    Completed
    Freddie García
    Developer In Process As of this writing current design philosophy considers that there are order details that should made available for modification by the customer even after the order has been submitted. The action would be allowed if order processing has not reached a status that would make honoring such a record modification impractical. The following is a list of these features along with their current implementation status:

    • For restaurants that provide a delivery option, the customer may set the delivery address before or after the order is submitted. For orders that have already been submitted, the application will allow delivery address change if the order has not been "served". A refinement may be considered in the future if the application adds an "out for delivery" status which is currently not the case.
      This feature is complete except that the delivery option feature as a whole must be synced with the "pickup time" and "eat-in/takeout" options.

    • A note can be added or modified in the order if it has not been served.
      ✓ This feature is complete.

    • An email can be provided by the customer to be used as a notification mechanism when the order is completed. There is currently no need to allow the customer to enter this email before the order is submitted because the current implementation prompts the customer. The customer may close the window to opt out of the notification feature.
      ✓ This feature is complete.

    • The customer may set a pickup time for an order if the order has not been served.
      ✓ This feature is complete except that still pending is to block the using from setting a time earlier than the current time.

    • Eat-In/Takeout:
      The customer is allowed to set the the order's eat-in/takeout options before the order is submitted only.
    FB-15 Front-end and Back-end Explore the possibility of adding an alternative to project segregation besides subdomain.
    Completed
    Freddie García
    System Analyst Developer Completed This was given careful consideration but in the end it was cancelled at least in the short term. At this point it is undesirable to experiment with routing scheme alternatives that could impact horizontal scalability.
    This objective was finally achieved with major changes to the whole application that now support project segregation at the URL path level. The project is identified as the first segment of the URL path.
    FB-16 Front-end and Back-end Item prices should not be available from the unpaid (current) order that is persisted at sessionStorage. Only menu selections should be persisted. Order totals must be calculated from item prices that are loaded from the back-end at checkout time.
    Completed
    Freddie García
    System Analyst Developer Completed
    FB-17 Front-end and Back-end VISA Checkout Interface
    1. Secure API key, encryption key and shared secret in the project's database.
    2. Enable the mobile checkout process to complete order confirmation subject to risk rules.
    3. Allow an order management module to inspect and manage transaction data.
    Cancelled
    Freddie García
    System Analyst Developer In Process This interface was cancelled.
    FB-18 Front-end and Back-end Create and implement a model for the protection of customer Personally Identifiable Information (PII). The model must take into consideration legal aspects as well as the the impact to the image of the application. At this point the following PII elements have been identified:
    • Name
    • Email
    • Physical Address
    • Phone Number
    Consider encrypting all personal information at the database level.
    Pending
    Freddie García
    System Analyst
    Developer
    Completed
    FB-19 Front-end and Back-end Perform a reassessment of what minimum customer information will be required on every order regardless of whether or not delivery is requested. The results must be aligned with the final policy on the management of Personally Identifiable Information.
    Once completed, proceed to implementation.
    Pending
    Freddie García
    System Analyst
    Developer
    Completed
    CC-1 Code Cleanup
    • Backend: Remove "await" from functions calling "getConnection" which is a function exported by common.js.

    • Backend: Provide consistency in naming the database connection variable from "sdbc" to "dbc".

    • Backend: Delegate obtaining all data models to the "getDataModel" function at common.js

      Example:

      var lib = require('../fflibrary/common.js');
      .
      .
      .
      let User = lib.getDataModel(req, 'User');
      .
      .
      .
    Completed
    Freddie García
    Developer Completed
    CC-2 Code Cleanup
    • Backend: Remove user profile route by consolidating to more general route.

    Cancelled
    Freddie García
    Developer Cancelled It was determined at this point that the /profile route segment should be left as a route separate from the more general /register route.
    CC-3 Code Cleanup
    • Front Ends: Complete TSLint fixes.

    Completed
    Freddie García
    Developer Completed This project migrated to ESLint as a result of the deprecation of TSLint. When migration completed, many linting issues disappeared. This task was regarded as complete when major linting issues as reported by ESLint were resolved.
    PF-1 Performance There seems to be a small memory leak in the Order Management front-end.
    Completed
    Freddie García
    Developer Completed Most of the source code that makes use of subscriptions to Observables was enhanced to ensure that they get unsubscribed when the containing Angular component is destroyed. At this point an actual memory leak cannot be observed. A more detailed performance evaluation will likely be performed in the future.
    IB-1 Identified Bugs Ordering client
    The customer sets the street delivery location geographically on the delivery map and closes the Delivery Information window. Then if the window is opened again, the push pin location indicator looks shifted away from the originally selected location.
    Completed
    Freddie García
    Developer Completed