Your web application will need to offer core functionality similar to Assignment 1: the ability to login, create, read, update and delete records in a simple database schema:
- Log in
- Create a record (e.g.,
INSERT INTO ...)
- List records (e.g.,
SELECT ... WHERE ...)
- View a record (e.g.,
SELECT ... WHERE id = ?)
- Update a record (e.g.,
UPDATE...)
- Delete (or hide) a record (e.g.,
DELETE ... or UPDATE ... SET visible = 'N' WHERE id = ?)
- Log out
- Your application must provide useful error messages if the user enters invalid input
In addition, it must also have the following functionality:
- Sign up as a new user (e.g.,
INSERT INTO SystemUsers ...)
- An administrator account that can view and edit the details of all users in the system as well as make changes that an administrator would normally perform, as appropriate to your application (e.g., in an online store, the administrator might be able to view all orders placed)
- Your application must use the JAX-RS client to integrate with at least at least one RESTful web service API (e.g., Pin Payments, Twilio, Nexmo, Google Cloud Platform APIs, The Echo Nest)
Innovation Functionality
For this assignment, 15 marks are devoted to innovative use of Java EE technologies. To get 15 marks, you would be expected to implement three of the following innovation features:
- Add shopping cart functionality with checkout (the shopping cart should be retained even if the user logs out)
- Provide AJAX interactions (e.g., an AJAX-enabled search)
- Live real-time updates in the user interface (i.e., users are notified of updates without needing to refresh the page)
- All record updates are protected against concurrent modifications (Hint: See the Week 11 Challenge problem)
- Implement the user interface as a single-page web application using React.js, Angular.js or a comparable modern client-side JavaScript framework
- Send email messages to verify the address of new users when they sign up and provide email-based password reset functionality
- Deploy your application on the internet using a Java EE server hosted on Amazon Web Services (EC2) or Microsoft Azure
- Implement a comprehensive suite of unit tests for your application
You are not limited to this list: please feel free to negotiate alternative functionality of comparable difficulty with your tutor.
Note that the innovation functionality should go beyond the subject matter taught in class. You are expected to do independent study and learning in order to complete this functionality.
Costs
Please use trial periods and free non-commercial licenses when integrating with commercial services. Reimbursement or financial support will NOT be provided if you choose to use paid plans or services that cost money.
Functionality Proposals
You must propose your application to your tutor within two tutorials following your group’s formation.
Your tutor will provide the following template for you to complete:
(Application Name):
My application will help (user) to (need) by keeping track of (record).
My application will allow users to sign up, login and then create, read, update and delete (records).
My application will allow administrators to login and then view and edit users as well as (perform administrative tasks).
My application will integrate with (web service) to provide (functionality).
My application will also (provide innovation functionality).
Consider the following two examples of how to use the above template:
1.
Restaurant Booking System:
My application will help restaurant owners to manage their tables by keeping track of reservations.
My application will allow users to sign up, login and then create, read, update and delete table reservations.
My application will allow administrators to login and then view and edit users as well as view reservations and send reservation reminders by SMS.
My application will integrate with Twilio to provide SMS reservation reminders.
My application will also provide administrators with real-time updates of new bookings (3), be implemented as a single-page web app using React.js (5) and have a comprehensive suite of unit tests (8).
2.
Ben’s Java Book Store:
My application will help Java Programmers to learn about Java by keeping track of books in their shopping cart that they can then purchase.
My application will allow users to sign up, login and then create, read, update and delete books in their shopping cart.
My application will allow administrators to login and then view and edit users as well as see the details of ordered placed by customers.
My application will integrate with Pin Payments to provide credit card payment processing.
My application will also provide shopping cart functionality with checkout (1), confirm email addresses and provide email password resets (6) and be deployed on Amazon Web Services using the Free Hosting Tier (7).