Challenge Overview

Overall Description

We're working to re-imagine a legacy PowerBuilder application as an HTML 5 web application. The application is used to track construction projects and their tasks, hours, costs, materials, and equipment.

This challenge focuses on the middleware between the node.js based application running on the end user's system and an existing MS SQL 2008 database. The API/server software will need to run on Microsoft IIS, running on Windows Server 2008 hosted at the customer location. This system will have unimpeded network access to the MSSQL 2008 database. The database will be upgraded to MSSQL 2012 in the very near future and the Windows server will also be upgraded to 2012. Please ensure that these results will be compatible with these versions as well.

General Requirements

  • Provide the connectivity layer between the MSSQL 2012 server and node.js based web application (node.js based front end web application is still in early stages of development)
  • Middleware should be node.js based
  • Meets all required API capabilities (see below)
  • Fully documented (see below)

Required API Capabilities

  • RESTful interface to the MSSQL database
  • Data exchange with the client application is in JSON format (both the request and the response)
  • Receive INDIVIDUAL calls from front end web clients to Insert, Update, and Delete records in the database and return JSON formatted result information (success, failure, failure details, ...etc)
    • Insert: Client supplies Database Name, Table Name, and Data
    • Update: Client supplies Database Name, Table Name, ID of Record to Update, and Data
    • Delete: Client supplies Database Name, Table Name, and ID of Record to Delete
  • Receive BULK calls from front end web clients to perform multiple operations (Inserts, Updates, and Deletes) in a single transaction, returning JSON formatted result information (success, failure, failure details, ...etc)
  • Select/Return data from the database - Note: this will be defined and implemented in a future challenge (extending these results), it is not required in this challenge
  • Transaction support (commit/rollback)
  • Database connection can be defined at the client level (IP or FQDN, credentials, database name, ..etc.)
  • Option for a "default" database connection to be defined on the middleware server (so that the client requires no connection/authentication information)

Documentation Requirements

  • Detailed server installation instructions must be provided
  • Any necessary modifications or configuration settings to the web server must be documented
  • All third party library installations and setup steps must be documented
  • All API calls (the calls that the font end application, running on the end user's workstation, can make to this middleware server) must be clearly documented with example code
  • Examples of a database connection defined on a client as well as a client utilizing the "default" database connection

Submission Guidelines

  • All source files and compiled execuatables
  • All documentation specified above
  • Screenshots of running examples

Related Challenges

Potential Technologies

The following is a list of some technologies that may assist with completing this goal. Other technologies identified by the community are welcome! Please feel free to discuss in the forums.

Additional Resources

  • Attached file depicting the database schema


Final Submission Guidelines

Code Aesthetics

  • Code must be clean (no non-applicable comments, unused variables etc), tidy (consistent indents) and well commented
  • Clear and purposeful naming for variables, classes etc.

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30044426