Web-based internal application to allow us to have a client create an account and then authorize (using oauth or other app-specific method) the admin-level API access to multiple other SaaS applications such as Salesforce, gSuite, and JIRA. Script will query application APIs on a set schedule to download data from the apps and store it in an organized, client-specific way in a graph database.
* Backend in Golang with a modern frontend (using Ember, Vue, React or other acceptable declarative language) which allows for the following:
* Creation of new customer account and login / session management using [url removed, login to view] service
* Golang custom software architecture to allow for:
* Module-based (aka extensible base classes) clients for both the authorization of admin/owner level APIs for a selection of SaaS services and the scheduled pulling of multiple endpoints of data for each service, to be declared per service
* Storage of RAW API responses in Neo4j graph database, organized by client and application
* Ability for application to "step back in time" given a beginning date, which queries the SaaS APIs capable of such date-ranged pulling of information and download that data to backfill from a previous date
* Application must remember the last content piece from each API endpoint, for each application, for each client account, in order to not pull duplicated data on the next scheduled run
* Creation and demonstrated passing of acceptance tests in Golang for major components of application
SaaS Applications to be Integrated:
* Google Suite - all read only - specifically email content & metadata download from gMail, calendar events, Google Drive content & metadata download, users
* Atlassian JIRA - all read only - projects, tasks/stories metadata & content, comment content and metadata, users, sprints
* Bitbucket: commit messages, pull requests, repos, users
* Slack: users, channels, message content, uploaded file metadata
* **specific endpoints and data dictionaries to be described for each but expect a near-full pull of information available from each app for the models named**
If this project is successful, additional features such as an admin portal, rate limiting capability, more SaaS client modules, etc. will be requested and bids likely awarded to the same Engineer. A code review will be performed to ensure the initial software can support iterative and modular extensible development moving forward before continuing.