Web Applications and Services – Assignment (50%)
Online Fundraising Donations Project
This assignment is about the implementation of a web-based, multi-user, fundraising donations service using Java Enterprise Edition (J2EE) technologies. The system will be a very simple version of Just Giving (www.justgiving.com)
Through a JSF-based web interface:
-Charities should be able to:
1. Register with the fundraising service
2. Register specific causes for donation (e.g. to raise awareness for lung cancer, or to send doctors to a place where doctors are urgently required)
3. Check their virtual online account balance and amount of money raised for specific causes
-Users should be able to:
1. Create accounts and profile pages describing a few things about themselves
2. Create fundraising activities for which other users can donate some money (e.g. bike ride, parachute jump or cake sale)
3. Donate money for other users’ activities (for a specific cause)
4. Check funds raised for their activities
-Administrators should be able to:
1. Access all charities’ accounts and causes
2. Access all users’ accounts and fundraising activities
As a final step, the implemented system should be deployed into the cloud (Amazon Web Services (AWS)).
After successfully completing the assignment, you will have demonstrated that you can:
• Design and implement user interfaces using JavaServer Faces
• Design and implement business logic using Enterprise Java Beans (EJBs)
• Design and implement the data tier using Java Persistence (JPA)
• Design and implement a secure multi-user system
• Deploy a web application into the cloud.
All money mentioned in this assignment is pretend money. No connection to real sources of money should exist.
2. System Architecture
2.1. Web Layer
The web layer consists of a set facelets (.xhtml) pages through which users (fundraisers), charities and administrators interact with the web application.
-Charities should be able to:
1. Register with the service: details, such as name, unique name as registered with an imaginary charity registry (e.g. MSF for Medecins Sans Frontiers), which will be verified using a REST service (see section 2.4), date of establishment, full address and a short description up to 1000 characters about the activities of the charity, should be registered
2. Register specific causes for donation (e.g. to raise awareness for lung cancer, or to pay and send doctors to a place where doctors are urgently required): a charity should be able to register (name, short description up to 1000 characters) specific causes for donation. Users can only register fundraising activities for a specific cause.
3. Check their virtual online accounts: the system maintains a virtual account for each charity. All donations for specific causes and for specific fundraising activities end up to this account.
4. Check amount of money raised for specific causes: a charity should be able to look-up the amount of money raised for a specific cause. All relevant information, such as cause name, amount of money, users and specific user fundraising activities must be available to registered charities.
-Users (fundraisers) should be able to:
1. Create accounts and profile pages describing a few things about themselves: other users should be able to look up users’ profile pages (where all fundraising activities are presented) by name or through a table presenting all users with links to their profile pages.
2. Create fundraising activities for which other users can donate money (e.g. bike ride, parachute jump or cake sale): a user can create a fundraising activity, including a name and short description up to 1000 characters.
3. Donate money for other users’ activities (for a specific cause): a user should be able to look-up for current fundraising activities and donate money for a specific activity (e.g. a 10km bike ride) published by another user. Donations can be up to £500 and a user cannot donate for his/her own activities. All users, upon registration, start with an amount £10,000.
4. Check funds raised by other users for their fundraising activities: a user should be able to look-up funds raised for their activities and details about donations (donating user, amount of money, date of donation)