Portfolio

Portfolio

  • Google Cloud Platform

    • Google OAuth 2.0 integration- Server to Server

      Objective

      Platform should connect to Google services in a seamless manner so that every expected and initiated transactions can be executed successfully for every google cloud services that we are using or expected to be use in future.

      Alternative approaches available (and their exploration)
      There were following approaches we evaluated for the best fit, for our platform to consume

      1. OAuth 2.0 web server Authentication
      2. OAuth 2.0 server to server Authentication
      3. Using OAuth 2.0 for Client-side Applications

      Among these, we found the most practical to use for our platform on google cloud, was OAuth 2.0 server to server Authentication, as It supports the required server-to-server interactions such as those between platform and the Google service. Further it also supported seamlessly to use our own drive of service account for file and folder operation.

      Delivery

      1. First to implement was a Google ‘service account’ (which is an account that belongs to your application instead of to an individual end user). Your application calls Google APIs on behalf of the service account, so users aren’t directly involved.
      2. A service account’s credentials include a generated google email address that is unique and at least one public/private key pair.
      3. Download the service account credential key in JSON format and create Google credential object to consuming Google services to connect to google cloud services
        GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream(“credential file path ”).createScoped(Collections.singleton(DriveScopes.DRIVE));
        And we can use this Google credential object for other Google API requests by defining the API scope and enabling the API in google API library
      4. Google cloud services that we connected to using OAuth 2.0
        1. Compute Instances
        2. Gmail
        3. Drive
        4. Static IPs
        5. Cloud DNS
        6. Google Identify and Access management (Iam).
        7. G Suite Admin SDK Directory API
      Technology Stack
      Back-end Java
      Front-end No Front-end
      Middle-Tier Google Client libraries
      Framework None
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      We were able to automatically and seamlessly, create and manage any of above listed services upon action trigger (such new client sign up). Thus, propelling a self deploying application that with 2 minutes, rolls out an automatically deployed and ready to use application instance.

    • Google sheet Integration; Using Google Service Account

      Objective

      To execute full control over google sheet functionality through API calls so that it can be consumed as “Calculation Engine’ for the Financial Modelling complex calculations.

      Delivery

      Prerequisites; that were ready and available before coding

      1. Available Google OAuth 2.0 server to server credential to perform these operations
      2. Enable Sheets API on Google cloud library console

      Delivered Feature set

      1. First created google Sheets Service object using the credential
        Sheets sheets = new
        Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(),
        JacksonFactory.getDefaultInstance(),
        credential).setApplicationName(GOOGLE_SHEET_MESSAGE).build();
      2. Used this Sheets object to create & manage following operations in google sheet
      3. Create new spreadsheets (with in folder or without folder)
      4. Delete or rename spreadsheets
      5. Rename spreadsheets
      6. Add, delete or rename sheet in an existing spreadsheet
      7. Rows and columns operations (insert, delete, update )
      8. Data update operations ( both single and batch updates)
      9. Data fetch from spreadsheets (both single and batch requests)
      10. Row or column formatting (both single and batch request)
      Technology Stack
      Back-end Google Sheet API, Java 9
      Front-end No Front-end
      Middle-Tier Google Client Libraries
      Framework Spring, Hibernate
      Methodology Agile- Scrum, DevOPS (Cultural)

      Delivery Success

      All operations are successfully working since Feb 2017 without any issues and google sheet implementation becomes successful as as “Backend Calculation Engine’. As a result Client was able to raise intended funding and good number of new customers, based on these stable & performing provisions.

       

    • Google Drive Integrations

      Objective

      Client was using a dedicated drive account for each customer’s calculation engine i.e to store google sheet. It was therefore needed to automatically create the google drive for each new client’s google instance created and associate with the created instance.

      Delivery

      Prerequisites:

      1. Available Google OAuth 2.0 server to server credential to perform these operations
      2. Enable Drive API on Google cloud library console

      Delivered Feature set

      1. Create google Drive Service object using the credentials
        Drive driveService = new
        Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(),
        JacksonFactory.getDefaultInstance(),
        credential).setApplicationName(GOOGLE_SHEET_MESSAGE).build()
      2. Used this Drive object we have done following operations on google Drive
      3. Created files and folder on drive
      4. Shared the files and folder to other users or provide selective permission
      5. Delete or rename files or folder on drive
      6. Rename files or folder on drive
      7. Upload files on drive with in folder or without folder
      8. Move files into and between the folders
      Technology Stack
      Back-end Google Drive API, Java 9
      Front-end No Front-end
      Middle-Tier Google Client Libraries
      Framework Spring, Hibernate
      Methodology Agile- Scrum, DevOPS (Cultural)

      Delivery Success

      All operations are successfully working for a long time without any issues and clients drive is working as isolated drive for users data security purposes. There were not a single reported incident where one client was seeing other client’s data, till date, while this was implemented long back.

       

    • Google Directory API Create Google User Accounts

      Objective

      To create a google user account for the new client instance request
      Exploration of possible solutions
      Upon all candidate evaluations it was revealed that G Suite Admin SDK Directory API is the best way to create a google user account.

      Delivery

      Prerequisites: that were ready and available before coding –

      1. Available Google OAuth 2.0 server to server credential to perform these operations

      Delivered Feature set

      1. Using Google credential Object ) create Directory Object
        List String SCOPES
        =Arrays.asList(“https://www.googleapis.com/auth/admin.directory.user”);
        Directory directory=new
        Directory.Builder(GoogleNetHttpTransport.newTrustedTransport(),
        JacksonFactory.getDefaultInstance(), google credential))
        .setApplicationName(“google”).build();
      2. Following param values given along with the request
        Family Name,Full Name,GivenName,PrimaryEmail,Password,CreationTime
      3. Automation suite gets authenticated with google services with the Google OAuth 2.0 system
      4. Provides ability to automatically create ,delete and manage- a google user account
      Technology Stack
      Back-end Java (Collections, FileInputStream) Google Directory API
      Front-end No Front-end
      Middle-Tier Google Client libraries
      Framework Spring, Hibernate
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      Solution seamlessly created the google users account along with their drives. Same was seamlessly associated with created client instance; thus providing quick rollout of customer useable instance.

       

    • Creating and Managing Google Service Accounts

      Objective

      Web application was needed to connect to Google cloud is an seamless manner. And it should create and manage service accounts that are in core to Google Cloud access.
      Client can therefore access other google cloud services using this service account credential (a json file)

      Exploration of Possible Solutions

      To create and manage service accounts using the Google Cloud’s Identity and Access Management i.e. we have used Google IAM API.

      Delivery

      To create & manage – Google Service Account

      1. Created the IAM service object
        Iam iam Service =new Iam.Builder(httpTransport, GsonFactory.getDefaultInstance(), google credential).setApplicationName(“Iam”).build();
      2. Next made the request to Google Cloud IAM to create s service account by giving service account name or Id and provide the necessary roles and permissions

      To download the required credential key (json file) for the future authentication and accesses

      1. Made the request to Google Cloud IAM by providing service account Id and created & downloaded the credential json format and it for future authentications
      Technology Stack
      Back-end Java, JACKSON, Google IAM API
      Front-end No Front-end
      Middle-Tier Google IAM API
      Framework Spring, Hibernate
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      This credentials json is subsequently used for any of the Google Cloud services authentication and access; and that can be done is neat and seamless manner

       

    • Implement Google Compute Engine API

      Objective

      To create automatically the Google Compute Instance upon new client’s requests.

      Exploration of Possible Solutions

      Due to unique delivery model of the client (where each user of application gets customer set of modules); it was decided with client and management team to choose Google Cloud as an IAAS and consume the related google API named Google Compute Engine API

      Delivery

      To devise an engine that can automatically create (or delete) a Google Cloud VM using Compute Engine API. For this

      1. First we create a Static IP address and later set to for created instance. This calls for Google Cloud’s related network API i.e DNS API to be consumed- using Compute.Addresses.Insert with the attributes address(Name,Region,Kind)
      2. Create Google Compute services Object –
        Compute compute= new Compute.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), set Http Timeout(GoogleCredential))
        .setApplicationName(“Google-Compute Sample/0.1”).build();
      3. Prepared the request of Instance with following attributes Name,Zone,MachineType,CpuPlatform,ServiceAccounts, Disks, Address, NetworkInterfaces
      4. After instance is created, its access on internet needed to set, at this place we assigned the generated Static IP to the newly created instance.
      Technology Stack
      Back-end Java, JACKSON, Google Compute Engine API
      Front-end No Front-end
      Middle-Tier Google Compute Engine API, Google IAM API, Google DNS API
      Framework Spring, Hibernate
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      As and when new client has signed up, this functionality automatically created a new Google Compute and made it accessible over internet, immediately.

       

    • Google Cloud DNS API integration

      Objective

      In order to automatically create Google Compute Instance upon new client’s requests, it’s also required to set its access over internet via domain name assigned to it.

      Delivery

      For the domain name registration, we have used the Google Cloud DNS services API.

      1. Create or register and deregister DNS of an VM on google cloud using DNS API
        Create Google DNS Services Object as follows

        Dns dnsService= new Dns.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), set Http Timeout(GoogleCredential))
        .setApplicationName(“Google-DnsSample/0.1”).build();
      2. Prepared an request of DNS with following attributes
        Kind, Name, TTL, Type, IP address of instance
      3. Registered DNS for the VM using DNS.change().create method using attributes
        projectId,Zone, and the prepared request Body
        DNSService.changes().create(“cloud project Id”,”Zone”, requestBody).execute();
      Technology Stack
      Back-end Java , JACKSON , Google CLOUD DNS API
      Front-end No Front-end
      Middle-Tier Google Client libraries
      Framework Spring, Hibernate
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      While creating the instance the domain names were seamlessly assigned to the instance and it was readily accessible over internet. (Similarly when subscriptions were terminated by the any clients, the reverse/deletion process takes place).

       

    • Google Kuberntes

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

    • AppEngine

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

    • Google Functions

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

  • Web Development

    • Centralized Lists and Blocks Implementation

      Objective

      To create a centralised control of all commonly used dimensions in modules such as products, departments, staff etc so that any changes in them automatically updates the underlying modules data.

      Delivered Feature Set

      1. Created ability to generate multiple lists and blocks in one go (using javascript and jquery front end framework).
      2. For drag and drop used jquery drag drop ui API.
      3. For persistence data used JSON and AJAX.
      4. List added, were both in platform platform as well as google drive with multiple validations.
      5. Ability to assign list from selected row to all the rows below selected one (also update the corresponding google sheets).
      6. Ability to move items between list and blocks
      7. Validations
        1. to restrict,user to create duplicate list
        2. Also to restrict a module to which have already assigned list
      Technology Stack
      Back-end Java, Google Sheet API
      Front-end HTML5, css3, Bootstrap framework, javascript, jquery
      Middle-Tier Google client library
      Framework Spring, Hibernate
      Methodology Agile- Scrum, DevOPS (Cultural)

      Delivery Success

      This provided the required centralised control of all commonly used dimensions and automatically updates all the underlying modules data. This provided the desired speed and accuracy to the module development process.

    • Dashboarding Tool (Manual & Auto charts)

      Objective

      For our financial modeling domain project we need to visualize the customer data on dashboard by virtue of multiple charts

      Exploration of possible solutions

      For charting related taska we have decided to use Highcharts as it provide rich API which is simple and easy to use. It also provides important functionality which fulfills the requirements, key features that helped decisions

      1. Open Source with Commercial Options
      2. Responsive across devices
      3. Annotations
      4. Flexible styling

      Delivery

      In order to provide more insightful data, we provided this tool to create and add charts to dashboards. We pass following parameters through the API, to create chart

      1. Chart name
      2. Axis
      3. Chart type (line, column etc)
      4. Chart stacking (normal, stack)
      5. Chart data, format

      Charts are provided to be created in two ways

      1. Interface for the users to create their own different types of charts
      2. Developer can pass the parameter in the uploaded file and charts would be automatically

      Chart are also provided to be created against

      1. Single axis
      2. Multiple axis
      Technology Stack
      Back-end Java , JSON
      Front-end Highchart API v 6.0.1,JQuery
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum

      Delivery Success

      As desired by dashboard tool , we were able to deliver customers an intuitive interface and solid stable code that allowed them create their dashboards, made up of multiple types of the charts and on multiple axis; and Stacked/Normal.
      This tool is widely used and loved by the customers.

       

    • Autosnaping & Auto Linking

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Financial Modelling Platform

      Objective

      Financial Modules are in core of Financial Modelling plan. This functionality is developed to enable end user to create an OnPlan Financial Module within the Platform which inherits all the attributes of the Parent Financial Model.

      Delivery

      • For creating an OnPlan Financial Module in the platform, we set
      • Technology Stack
      • Back-end
      • Java, Google Sheet API
      • Front-end
      • HTML5,css3,Bootstrap framework,javascript,jquery
      • Middle-Tier
      • Google Client Library
      • Framework
      • Spring, Hibernate
      • Methodology
      • Agile- Scrum, Cultural DevOPS
      • following set of features & functionality
      1. Created the required metadata at the time of creation.
      2. Set the parent Model time series
      3. Set other related model meta metadata such as display name of module
      4. Implement forecast logic as per Google Sheet/drive provisions
      5. Create Module with first few blank rows for user to do immediate actions
      6. Create module also in the calculation engine i.e. on google sheet on clients dedicated drive to be in sync with platform.
      7. Extend the QB mapping functionality to the created module
      8. Extend the List & Blocks to the created module
      9. Also extend the Create Chart functionality
      10. Extend all Editable features such as
        1. Add new Row
        2. Copy Row
        3. Move Row
      Technology Stack
      Back-end Java, Google Sheet API
      Front-end HTML5, css3, Bootstrap framework, javascript, jquery
      Middle-Tier Google Client Library
      Framework Spring, Hibernate
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      Creating a financial module use to big exercise and needs lot of experities in the Financial Modelling world, With this functionality, end users can create a new financial module with in few minutes and with basic knowledge of Financial modeling and platform provisions.

       

    • Edit Mass Function at Same Time

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • BVA

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • User Commenting

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • User Specific Formatting

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Implementing Javascript Iterations

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • System Audit : Change Logs

      Objective

      To implement a mechanism for logging every user transactions that any user has wroteed in the platform so that later an audit can be performed when any data problem comes to notice.

      Delivery

      1. Centralized provision was placed inside all the places in product from where transaction can be initiated by the users.
      2. Utility written to perform complex calculations that can be triggered due to the change and measuring its impact and shift from original values.
      3. As future development of classes initiated from template file, this change log code becomes automatic part of finally block
      4. This method inculcates method name; from which functionality the change log is invoked like user name, data and time of transactions, the controller name, and the process initiated by the transactions.
      5. Change log UI designed and developed intuitively where user can filter of multiple columns simultaneously.
      Technology Stack
      Back-end Java
      Front-end HTML5, css3, Bootstrap framework, javascript, jquery
      Middle-Tier NA
      Framework Spring, Hibernate
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      This functionality proved to be path breaking for the problem identification and solving; problems that arises in the platform. This centralized and well executed functionality become pivotal to solve any data related issues for critical financial modelling perspective.

       

    • Trace Prcedent

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Trace Depandent

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Structured file Upload Tool

      Objective

      To upload an excel file that is having data as per defined structures into the platform in a seamless manner

      Delivery

      1. Structured excel file is parsed using Apache POI libraries; it validates the files against the defined structures for the model to be uploaded.
      2. Upon successful validations, files gets uploaded to the corresponding google sheet account.
      3. Subsequently, creates a google spreadsheet in google drive with the same name as the uploaded excel name by using BatchUpdateValuesRequest class provided by Google API.
      4. Next, copying all the sheets present in the excel to the google spreadsheet with the help of SheetProperties and CopySheetToAnotherSpreadsheetRequest classes. (to keep part of the same financial model, one spreadsheet= one model)
      5. Implementing data massaging (as google imposes limits on number of cells in spreadsheets)
        • Deleting extra rows and column
        • Rectifying ‘REF errors’ by connecting sheets as per the formula if exist or just removing the formula and making it a normal value.
        • Restricting duplicate copying of sheets.
      6. Segregating formulae and normal value to give a clear vision to the user about the data and their relationships
      7. Providing similar user interface like excel to alleviate the risk of confusion in understanding the application separately.
      Technology Stack
      Back-end Java 8, Google Sheet API
      Front-end HTML5, CSS3, JavaScript, JQuery
      Middle-Tier Google Client Library, Apache POI API
      Framework Spring 5.0, Hibernate 5.3.2
      Methodology Agile- Scrum, Cultural DevOPS

      Delivery Success

      Implementing this raised us to a new milestone as we could use the benefit of using google sheet as our cloud computing engine and saved significant efforts to develop own calculation engine for financial modelling. Further this helped with google precisions of calculations.

       

    • Monthly Update

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Version/Scenario

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Assumption (Favorite) and Impacted Modules

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Forecast Update

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

  • Integrations

    • Sales Force OAuth 2.0 integration- web to Server Authentications

      Objective

      Web application we developed was also expected to connect to Salesforce so that SalesForce data can be used for the Financial forecasting by the platform.

      Delivery

      Exploration of available alternatives for the best platform usage

      1. Web Server OAuth Authentication Flow – For the Apps that are hosted on a secure server to make use the web server authentication flow.
      2. User-Agent OAuth Authentication Flow – The user-agent authentication flow is used by client apps (consumers) that reside on the user’s device or computer. But, because the apps are widely distributed, the client secret are difficult to be kept confidential.
      3. Username-Password OAuth Authentication Flow – totally out of context for using this for the platform implementation

      Upon all candidates evaluations, it was arrived that the best way to get your platform gets authenticated with Salesforce is the Salesforce OAuth 2.0 system. It is because it supports the required web-to-server, one time interaction ( those between platform in google clouds and a Salesforce Connected app)..

      Delivered Functionality

      1. Keeping in mind the Salesforce architecture, we implemented one common callback controller. This served the following services
      2. Handles the call back request from connected app (our app in Salesforce App Store).
      3. Retrieve & save the access token in one centralized credential table, that maintains client wise information
      4. Sending back Responses to the connected client’s instance.
      Technology Stack
      Back-end Java, Mysql SalesForce API
      Front-end HTML5, css3, Bootstrap framework, javascript, jquery
      Middle-Tier Rest API of Salesforce
      Framework Spring, Hibernate
      Methodology Agile- Scrum, DevOPS (Cultural)

      Delivery Success

      Post this authentication, we were able to seamlessly connect to Salesforce data and retrieve whatever we wanted and store in the platform. This stored data was sufficiently consumed the client for their analytics and projections.

       

    • SalesForce: Automatic fetch and module for leads & opportunity

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

    • Apache POI

      Objective

      Our platform used existing excel financial modules to be uploaded and to create them as cloud platform financial modules.

      Delivery

      1. We uploaded the excel file using spring multipart file upload, to our platform.
      2. Subsequently, we parse and extract the excel data using Apache POI from all the sheets and load it into our DB.

      Various Classes and methods used of Apache POI, for the purpose
      For workbook related operations
      XSSFWorkbook workbook = new XSSFWorkbook();
      For sheet creation and getting the sheet from workbook
      XSSFSheet sheet = workbook.createSheet(“sheetname”);
      XSSFSheet sheet = workbook.getSheetAt(i);
      For row related operations
      XSSFRow row =sheet.getRow(index)
      XSSFRow row =sheet.createRow((short) i)
      For cell related operations
      Iterator <Cell> cellIterator = row.cellIterator()
      Cell cell=Row.getCell(i),
      For getting cell Values
      getStringCellValue(), getBooleanCellValue(), getDateCellValue(), getCellFormula() etc.
      For cell styling
      CellStyle and its method like setDataFormat(), getDataFormat()
      For data formatting we have used
      XSSFDataFormat dataFormat =workbook.createDataFormat()

      Technology Stack
      Back-end Java, Apache POI Java library
      Front-end JQuery, Angularjs
      Middle-Tier NA
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum

      Delivery Success

      As this was the very core foundation of the platform, Apache POI java library greatly helped us to accomplish our objectives

    • Unstructured Excel Model Upload( ETL)

      Objective

      This is about the uploading the existing financial models written by the prospective customers.in excel in their own format, a format that platform does not recognizes.
      This tool was intended to intuitively extract & transform the customer format and load into the platform into the platform format.

      Delivered Feature set

      1. We first identify whether the uploaded file is as per platform structures or not by using Apache POI java library (Using classes: XSSFWorkbook, XSSFSheet, XSSFRow, Cell, CellStyle).
      2. If the file is NOT per structure, we prompted the user to upload it via this tool.
      3. Then, we first extract the excel file data using Apache POI and show it on this ETL tool interface for the ‘transformations’.
      4. On this interface, the customer is prompted to transform his data into platform style through a guided tool. The tool asks the customer to select and map the data and data range according to our platform model structures.
      5. Post mapping, the modified data is requested via JSON to be pasted to the google sheets and upload the file into corresponding google drive and convert into a spreadsheet.
      6. We further massaged the data and delete still unwanted data from the google spreadsheet Using Google Sheet API methods and classes ( BatchUpdateSpreadsheetRequest, AppendDimensionRequest, CutPasteRequest, GridRange, GridCoordinate, BatchUpdateValuesRequest )
      7. Now that the data in google spreadsheet is according to platform model structure, we call platform upload services to load into the database.
      Technology Stack
      Back-end Java, Google Sheet API, Apache POI library
      Front-end JQuery, AngularJS
      Middle-Tier Google Client libraries
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum

      Delivery Success

      Prospective customers were successfully able to upload any of their excel models and able to use them as a platform model in very quick time.

    • QuickBook OAuth 2.0 Integration

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

    • QuickBook Data Fetch

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

    • QuickBook Mapping Interface

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

  • Backend

    • Connecting Multiple Database Using Spring, Hibernate and JPA

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • Sync with Google

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

    • MYSQL Database Developer and Administration

      Objective

      Technology Stack
      Back-end
      Front-end
      Middle-Tier NA
      Framework
      Methodology

      Delivery Success

       

  • Frontend Developments

    • Customized HTML5 Table

      Objective

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap3, JavaScript, JQuery, AJAX, JQuery-UI, JQuery drag-n-drop API
      Middle-Tier Google Sheet REST API
      Framework Spring 5 , Hibernate 5
      Methodology Agile- Scrum

      Delivery Success

    • HTML Redesigning

      Objective

      The project was based on the heavy JSP pages that needed a lightweight and totally responsive UI.

      Delivered Feature Set

      1. Designed fully responsive financial modeling theme and implement them in the products for (modules views, drag n- drop interface, dashboards, user views, file upload, ETL tool)
      2. Made interface for every type of data visualization like Charts, Dashboards, widget boxes, grid views, tree grids etc
      3. Developed fully customized and fully editable components for the views.
        1. Dynamic list and blocks
          • (Input and JQuery event )
          • (JSON and AJAX)
        2. Dynamic grid data change
          • (Input and JQuery event )
          • (JSON and AJAX)
        3. ETL tool for transformation
          • (Cell selection and focus change)
          • (JSON and AJAX)
          • (Javascript and JQuery events)
        4. User commenting
          • (Dynamic HTML for comment messages and UI)
          • (JSON and AJAX)
          • (Javascript and JQuery events)
      4. We have developed an interface for dynamic contentations .For editing data of cell click on cell Input will appear dynamically and after change value click anywhere on the platform dynamic input content goes off.
      5. Developed drag and drop interface and also designed thumbnails for financial modules using JQuery drag-n-drop API and JQuery event.
      6. We have customized and implemented pre-designed theme- Metronic Theme
        1. Customized Side nav In multi-level
        2. Change Theme popup model themes
        3. Change theme table structures per requirement
      7. We have customized themes for messaging and info sharing in the platform.
        1. BootBox
          • Use for confirmation box(BootBox.confirm(<Message Here>))
          • Use for messaging and alert(BootBox.alert(<Message Here>))
        1. Toaster
          • For every event notifications(Toaster.Success(<Message Here>))
          • For Error Handling Of AJAX(Toaster.Erro(<Message Here>))
      8. Also developed themes with using frontend frameworks like (BootStrap, vue.js and many more…).
      9. We have developed some specific themes using (JQuery UI)
        We have designed fully responsive and user-friendly UI for multiple projects . and also implemented pre-design interfaces in the products and customized as per customer requirements.
      Technology Stack
      Back-end NA
      Front-end HTML5, CSS3, Bootstrap 3, JavaScript, JQuery, AJAX
      Middle-Tier JQuery-UI, JQuery drag-n-drop API
      Framework Bootstrap 3
      Methodology Agile- Scrum
    • Drag-N-Drop Interface

      Objective

      Excel modeling files that gets uploaded in platform, needed to have an interface that can move the uploaded files thumbnails using drag-n-drop to their respective destinations (Financial Module Areas).

      Delivered Feature Set

      1. Created interface that had a clean list view of draggable components ( thumbnail of excel models).
      2. This provided user with ease of draggability to the destination (In left nav); user can select any thumbnail, make it draggable by single click event and further move using mouse to the destination.
      3. In an enhanced feature request, the dropped assets (financial modules) can again be dragged, with in another draggable area within dropped region.(resolved many conflicts with existing functionality)
      4. After drop, iterated all the assets (Financial modules) inside the dropped destinations.
      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap3, JavaScript, JQuery, AJAX, JQuery-UI, JQuery drag-n-drop API
      Middle-Tier Google Sheet REST API
      Framework Spring 5 , Hibernate 5
      Methodology Agile- Scrum

      Delivery Success

      This interface provided an easy & flexible draggable contents ( single sheet or multi- sheet excel, both) so that dropped items (financial modules) are ready for further expected transactions in the platform. It has been working in seamless manner since last 18 months without any customer reported issues.

  • Towards DevOps

    • Automated Update of the Database Changes

      Objective

      Once a new release is needed to be deployed to customer instances in an automated manner. In our delivery model where each customer instance is unique, and each customer instances also needed to be updated with the latest release.

      Delivery

      We maintains all changes in a centralised database. Then using MySQL Utilities, we
      compare the each instance database with this uptodate centralised database. There were following type of changes observed, that goes with almost each release; such transformations were initiated and completed with single click of the button (automated updation of the releases)

      1. Add New Tables
      2. Drop Tables
      3. Update Procedures
      4. Alter table (Add/Drop columns, Add/Drop properties -add primary key, make foreign key,update cascading).
      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

      Customer Instances are getting updated with latest data structures in seamless and clean manner.

    • Automated Instances Roll Out

      Objective

      Delivery

      Technology Stack
      Back-end Java, MySQL
      Front-end HTML5, CSS3, Bootstrap 3, (Minor- JavaScript, JQuery)
      Middle-Tier None
      Framework Spring 5, Hibernate 5
      Methodology Agile- Scrum, DevOPS

      Delivery Success

  • SaaS

    • Centerlized Login to all Instances

      Objective

      Platform has multi-instance SaaS architecture due to uniqueness of structure of each instance.
      However for the sake of simplicity and controllability, one centralised login was required; that should authenticate centrally and then redirect it to the respective instance (very much like SalesForce.com)

      Delivery

        1. We have create one centralized application as login app and have all customer user data was moved to centralized table in the database; so that users of all distinct instances can login & authenticated through this centralized login server. (Incase any user want to access directly their instance without login then they will be redirect to this login app)
        2. Once any user login through centralized login server after successful login, we generate one unique access token using our tokenizer services (and also save this to database).
        3. After successful login, we subsequently call our instance redirection services and redirect the user to the corresponding instance along with the access token generated.
        4. On the instance, we check whether the request contains the access token or not and validate this access token from the DB.
        5. If the token matches, then we create the user session (using the ‘session generating services’) and process user to his instance .

      If token cannot be validated, then redirect the user back to the centralized login app.

      1. This also helped in our integrations like Quickbook and SalesForce, where we are able to use only one configuration account (client id, client secret and redirect url) overcoming limitations of multi-instance SaaS model.
      2. For the associated use cases that of Quickbook and Salesforce call backs, we set the instance id as payload param to identify which instance response is this; so that we can to redirect to appropriate instance after their transactions.
      3. After QB or SF transactions, we get the access token from api call back response (which contain realmId and auth code in json response) and save these auth token into DB ( to be used for future requests)
      Technology Stack
      Back-end Java, JSON, QuickBook API, SalesForce API
      Front-end Html5, CSS 3, JQuery, Bootstrap
      Middle-Tier None
      Framework Spring 5.0, Hibernate 5.0
      Methodology Agile- Scrum

      Delivery Success

      Any user of every instance was seamlessly able to use their unique instances and along with their respective QuickBooks & SalesForce accounts. All operations are running seamlessly and successfully, according to their respective roles and permissions.