Challenge Overview

INTRODUCTION
This is the first in a series of challenges to develop the front end for a REST generator web app.  The web app accepts WSDL or JSON and generates the REST service and all necessary artefacts including property files, mapping files, Maven POM, etc.

REQUIREMENTS
For this challenge you'll be creating web services to support user CRUD functions and subscription management via Stripe.  Your backend should be written in Java and run with Spring Boot with PostgreSQL for data storage.

User Endpoints
These endpoints are specific to users and will handle user registration, authentication, and account update functions.

User endpoints should include:
-- User registration
-- User login (email/hashed password)
-- User logout
-- User account termination

-- Forgot password (with email confirmation)
-- Account update (email/password/payment method)

Stripe Integration
These endpoints are specific to service subscriptions and will handle creating customers and billing on a monthly recurring basis.  The front end will use Stripe Checkout to collect payment details.

Stripe endpoints should include:
-- Creating a new customer in Stripe when a user registers
-- Associating the customer with the monthly subscription and billing them on registration
-- Updating a user's payment details from Stripe connect back to the Stripe customer
-- Cancelling a customer's subscription - done when terminating a user account
-- A webhook to receive notifications from Stripe when plan payments succeed or fail
    -- Users would need to be notified and/or deactivated on payment failure

You can set up your own Stripe account for free and set it to development to not incur charges.  Stripe keys should be configurable for different environments.



Final Submission Guidelines

-- Swagger descriptor for all endpoints
-- Postman collection of requests for testing all endpoints
-- Database dump of any necessary static data
-- Guide describing how to deploy/run/test your submission
-- Source project and supporting files
-- Video overview of your submission

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30058527