Software Developer
ProvakilJan, 2022 - Present3 yr 4 months
Litigation management software for businesses. Employed NodeJS, Python, and VueJS technologies to develop a Mail Configurator tool, empowering the creation of customized emails. This initiative yielded a significant 90% decrease in developer workload and deployment efforts. Restructured the cron job responsible for email delivery to align with the new data format, by developing a Python script to enhance its functionality and efficiency. Incorporated the ADOBE PDF services API to introduce a PDF to Docx feature within the product. Achieved a 50% decrease in bugs affecting metric cards, while also improving Elasticsearch and MongoDB queries. Successfully addressed synchronization issues between MongoDB and Elasticsearch to guarantee precise metric data. Upgraded the Elasticsearch infrastructure from version 6.8 to the latest stable release. This involved removing deprecation from the previous version of Elasticsearch and creating new mappings to improve the search functionality of the product. Additionally, developed a Python consumer script to facilitate the migration of old data to the new format in accordance with the updated mapping. Developed a new NodeJS API to retrieve data from Elasticsearch, replacing the previous data retrieval process from MongoDB. This optimization resulted in a significant performance enhancement of the product, improving it by fivefold. Migrated module queries from Mongo to Elasticsearch, reducing loading times by over 50% and significantly enhancing efficiency for handling large datasets. Successfully optimized cloud storage costs by migrating data storage from S3 to Backblaze, implementing new writes and reads with fallback to S3, and completing the final migration of existing data to Backblaze, resulting in significant cost savings. Developed a custom calendar module using Vue Cal, integrating Hijri calendar support with moment-hijri for Arabic-clients, and implemented dynamic grouping by date fields (e.g., contract expiry, createdAt) to allow flexible resource display based on user- selected criteria.