Automation Launcher
This project involved many technologies and gave me a chance to dig into Azure's stateless Functions.
Project Goals
The goal of this project was to create a web application that serves as a central location where all of our automations could be launched no matter what technology we're using on the backend. Another goal was to allow non-programmers to update specific front-end web forms without having to access the front-end code. This app accomplished those goals by creating a SPA application that talks to Azure which subsequently sends events to start automations or start automations directly on the cloud. The UI forms for each automation are generated dynamically using a Json form builder that allows developers with little to no coding experience to make updates to their forms without having to access code.
Project Technologies
- React and Emotion.js - The splash page and all the components were designed with React and styled with Emotion. Emotion allowed me to scope styles to each component, easily make updates to colors and fonts throughout the entire application, and make the code more maintainable by making it clear what styles were effecting each component.
- React Redux - The API requests are made through redux so that when the store is updated with new data the components using that data will be re-rendered. For example, once a request has been sent to start an automation, the Job History tab will update with this automation that was started and show an In-Progress status.
- C# + Azure Functions - The backend for the Web App was built using a stateless Azure Function. While the user authenticates, the Azure function spins up and submits an update request to the Azure Queue. While the data is being updated, the web app is sent data from a previous update. The authenticated user is only sent data in which they are authorized to access.
- UI Path API - This automation launcher was originally designed to launch RPA projects built by members of our team. I used their API to query information that would be needed to start the project in UI Path.
- Powershell - We didn't want to open up more ports on the firewall or give application outside our network access to the UI Path Server, so we built a worker in Powershell that would query an Azure Queue for events that would trigger actions it would need to perform.