Register
Submit a solution
The challenge is finished.

Challenge Overview

 

CHALLENGE OBJECTIVES

  • Design the microservices for the following two modules:

    • Secure Message

    • Document Repository

 

TECHNOLOGY STACK

  • Java 11

  • Spring 5.2.8

  • Spring Boot 2.3.3

  • Spring Security 5.3.5

  • Log4j/Slf4j

  • JSON (gzipped)

  • REST

  • Microservices

  • Docker

  • SMTP

  • MySQL 8.0

  • JPA

  • Swagger

 

REQUIREMENTS

The following common and generic requirements must all be followed:

  • Design the microservics for the two mentioned modules

    • Secure Message

      • Get messages summary (which includes total number, number of unread, number of read, number of inbox, number of sent, number of trash etc…)

      • List inbox / sent / trash messages, which should support pagination / sorting / grouping etc…

      • Trash / Delete / Unread / Print messages, should support batch operations too

      • Get message detail (including attachments)

        • Please suggest a file storage solution and keep in mind that we run the whole system on google cloud

      • Send message (should support attachments too)

    • Document Repository

      • List documents, should support pagination and sorting

      • Download document

        • Deisgn suggests that users can select the type of the document to download, but that’s a mistake in design, document will downloaded in the original format it’s uploaded to the system

        • Document upload will be done by another system, so that’s not in scope

      • Preview document (this might be frontend only work)

  • Please cross-check with the design to make sure all features from the design are covered unless otherwise specified above

  • Follow the same structure and practices that we have used in the existing microservices (design for one of the previous microservices provided for your reference). Please note that we do not expect you to provide as many details as the reference microservice, but we are at least expecting the following:

    • Swagger based API design

    • Data model design

    • Implementation notes of the API

    • Mapping from API to the screens

  • These two modules will each have its own microservice, meaning there will be two separate microservices designed in this challenge

  • The java root package name will be com.cyn.ccds, and the service name must start with CYN_ prefix, please check the reference documents to see how these are applied

  • All the endpoints will require authentication, which would be a JWT token included in the request header. The endpoints will then call /introspect endpoint of authentication service to verify the token and get the customer unique id which can be considered a PK to retrieve and manage documents / secure messages

  • Licenses to be followed in development:

    • Apache License 2.0

    • MIT License

    • Common Development and Distribution License

    • Eclipse Public License version 2.0

  • Each microservice will have its own / separate database schema



Final Submission Guidelines

FINAL DELIVERABLES

A single zip file containing all the documents mentioned above.

ELIGIBLE EVENTS:

2021 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30153973