Challenge Overview
Project Overview
IBM is building a versatile, extensible Mail and Calendaring interface on top of their existing infrastructure. As part of this contest, you will make use of Strongloop’s Loopback Framework to create an API server and expose some API endpoints. These endpoints will be used by an Angular application and native mobile clients to be built in subsequent challenges.
This challenge is part of the *IBM Castle* Challenge Series. Competitors who win challenges in this series will compete in a leaderboard of points for additional prizes. We have lots of contests coming in this series so it is best that you participate early and frequently. More information, rules, and leaderboards available here.
Competition Task Overview
For this challenge, we need to build a file / document preview service, more specifically, we need to build an API to receive an Office file or PDF and return PNG files to preview.
Here are the requirements:
- Create new endpoint in our API stack, it should accept the following parameters
- Source File URL
- Destination File Type (PNG / JPG, defaults to PNG)
- Fidelity - how small / low resolution / small dimensions pngs should be returned
- The endpoint should return status code, an array of images and image URLs that can be used later to preview the images
- At minimum the following file types must be supported:
- Standard, Current, Microsoft Office Filetypes (.doc / .docx, .xls / .xlsx, .ppt / .pptx)
- The new endpoint must handle errors gracefully and not crash if errors happen (example: if an invalid file is sent)
- The server will be raspberry pi
- Your solution should compulsorily use Strongloop’s Loopback framework.
- You need to use AirBnb’s ESLinter for both javascript code style and checks.
- We'll provide a Swagger doc, make sure you update it with the new endpoint from this challenge and you must follow the same standards already used by the swagger doc.
- Unit tests are required for the api.
- You must follow the format of the strongloop code.
Notes
The conversion from document to images must be done at the server side and performance must be taken into consideration.
We are ok with a solution that essentially uses LibreOffice / OpenOffice to do the conversion, but we need to use it in server mode so that when converting documents there’s no need to fireup a new instance of LibreOffice / OpenOffice which could drain the server resources.
We are open to other solutions that work better than one based on LibreOffice / OpenOffice and better solutions will get bonus points in the scorecard compared to one based on LibreOffice / OpenOffice.
Timeline
This challenge has shorter timeline, please make sure you don't miss the deadlines.
Technology Overview
- Node.js
- Strongloop
- REST
- MongoDB
- Raspberry Pi
Final Submission Guidelines
Submission Deliverables
-
1. Double check your submission passes all the lint checks using the ESLint rules that we mentioned and includes Unit Tests. POSTMAN extension based imports are NOT allowed.
-
2. Upload complete code (including updated swagger doc) as well as documentation for how to run your submission
-
3. Add huangqun as a member of your forked repository
-
4. Winner will be required to submit a merge request on gitlab against the branch specified and provide merge conflict support.
Final Submission
For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.