Challenge Overview
The purpose of this system is to track and manage pledges for the annual Community Service Fund (CSF) – United Way (UW) campaign. The system must allow campaign leaders, captains and co-captains to
manage their hierarchies of Eligible Employees, and allow them to communicate dates and other campaign information, collect Eligible Employees’ pledges, provide reports on the status of the campaign, and manage disbursements to the relevant charities.
The main business objectives are to facilitate the CSF-UW campaign in a way to maximize participation and pledges. The functionality to be provided includes: ability to manage the population of Eligible Employees, ability to communicate with the Eligible Employee's, ability for the Eligible Employees to make their pledges, ability to track the progress of the campaign, and ability to manage disbursements of the collected pledges.
This assembly is responsible for building Java REST API and its backend implementation.
Competition Task Overview
Note: Please read the whole Application Design Specification first. All the details not mentioned in this specification are provided in that document.
Java API
You are building a Jersey RESTful api following the provided swagger definition and the functionality details provided in SDS document.
The backend will use Postgres DB, your code should add a persistence layer separated from controllers.
There is no interface definition for the java code, so the classes and interfaces must be created by you with proper naming and best practices, following the provided documentation.
Implement user token authorization server for the api access.
Invision App and Swagger Definition
The proposed Swagger definition is based on the invisionapp https://projects.invisionapp.com/share/HD7RUUH28#/screens
You are encouraged to look at the prototype and suggest any endpoints we are missing, we will add extra 10% to review scorecard to address this.
ERD/Models
You are provided with an ERD diagram, please follow it, and if there is any required changes, post in forums for discussion.
Unit Tests
Developers are required to provide tests, both unit and functional tests.
Project Setup
Consider the following when preparing the project folder :
- Project folder structure with properly configured .gitignore
- Maven build/deploy/test scripts
- Maven library configurations
- Src folder
- Configuration
- Swagger sample for API
- Unit tests for api using JUNIT, and Mockito (if you need omcking)
- README.md - Basic markdown deployment documentation in the readme.md
- Required tools
- How to run tests and deployment
Technology overview
- Java 8
- REST API
- JSON
- Tomcat - should an inline server in maven or to be deployed as separate war
- Postgresql
- Apache commons library
- Spring Framework 4.x http://projects.spring.io/spring-framework/
- Log4j 2.x http://logging.apache.org/log4j/1.2/
Existing Documents
- Application Design Specification
- ERD
- Swagger API definition
- Client files
Final Submission Guidelines
Deliverable
- All source code, tests and scripts that address the requirements.
- Updates to project README files with an updated deployment requirements or steps.
- Updates to postman.json files to test the API