Lacroix Precision Optics
Automated Quote System
This client makes precision optics (lenses, etc.) for customers all around the world. They wanted to implement an automated quote system for use on the website and to connect to a third-party lens design program.
I was the sole developer for the duration of this project.
Platform: Drupal 8
AWS Services: API Gateway, Lambda, S3, Cognito, EC2, RDS, Route53, CodeCommit, IAM
This was a massive one-man undertaking.
…but ultimately, everything came together. The client designed a program that would input the specifications, dimensions, and materials of a proposed lens design and then output a cost estimation for each lens that was provided. The program accepted and returned XML and had an accompanying rule document that needed to be easily changed by non-programmers if the need were to arise. The client’s customers also needed federated logins so that they could make quote requests by uploading XML lens specification documents and also by using CAD-like lens design software to send the quote request to an API, all with the same login credentials. An out-of-scope feature request was made after development started for all user sign-ups to be fed through a Hubspot form.
I modified their Drupal 8 site on both the front-end and back-end to facilitate these changes. Using a contributed module that I lightly modified, I was able to augment the Drupal 8 user functionality to tie directly into AWS Cognito to manage federated logins between the website and API requests. A back-end module was also made to send requests back and forth between the quote API using a handler for the Webform contrib module. Front-end work was done to present and style these interfaces (HTML, CSS, Twig, JavaScript).
AWS is a Godsend
I learned so, so much about AWS during this project. The API Gateway had to be immediately modified to accommodate for the XML to be passed through to the Lambda function. Cognito was assigned as an authorizer for any requests made to the endpoint, and an S3 bucket was made to hold the ruleset so that the Lambda function could quickly and easily access the configuration data. The Python program that the client provided had quite a few dependencies that needed to be compiled specifically for Amazon Linux since that’s the OS that Lambda uses, so SSH access was granted on their private dedicated server to accommodate for these needs.
Looking for my resume?
Look no further!