Goal
This project aimed to provide users of the Sentimate platform with the ability to export product and category analytics—as seen on the website—into PowerPoint presentations, PDF documents, and CSV files. The generated files had to precisely match the UI’s displayed data, including dynamic charts, tables, and images.
Key Milestones
- Developed a proof-of-concept (POC) to validate chart rendering and export feasibility.
- Stage 1 – Export product-specific charts into a PowerPoint file.
- Stage 2 – Export category-level analytics.
- Stage 3 – Support exporting individual charts and tables.
- Enforced authentication and authorization rules for export functionality.
- Stage 4 – Added support for CSV exports.
- Stage 5 – Added support for PDF exports.
Technologies Used
- Architecture: New microservice based on Clean Architecture principles
- Backend: .NET 6, Syncfusion.Presentation.Net.Core
- Frontend: Angular
- Cloud: AWS Blob Storage
- Images: SkiaSharp for image rendering and resizing
- Assets: PowerPoint design templates provided by the in-house designer
Implementation Breakdown
Client-Side
- Created a dedicated Angular service to aggregate all chart data from observables.
- Implemented this service across chart/table components.
-
Used
ngAfterContentInit
lifecycle hook to ensure all visual data was collected prior to export.
Server-Side
- Developed a new microservice in .NET 6, adhering to Clean Architecture.
- Modeled each exportable component (chart/table/slide) using strongly typed classes.
- Built page-level services for structured export logic.
- Integrated AWS blob storage access to manage dynamic PowerPoint templates.
- Developed functionality to retrieve product images from external sources and embed them in exports.
Project Highlights & Challenges
Syncfusion Package Limitations
Some chart types required by the UI were not yet supported in the version of
Syncfusion.Presentation.Net.Core
used. I worked closely with
Syncfusion’s support team to either patch limitations or find effective
workarounds.
PowerPoint Template Handling
Frequent updates to the slide templates made Git-based versioning impractical.
Solution
- Moved template storage to AWS Blob Storage, with environment-specific variants.
- Added CI logic to sync templates from staging to production via command-line automation.
Dynamic Product Images
Each report slide required insertion of product images from external sources, while maintaining Docker/Linux compatibility.
Solution
-
Used SkiaSharp to fetch, resize, and embed images:
- On overview slides
- Inside dynamic tables
This project highlights my ability to manage full-stack requirements, integrate cloud services, and produce pixel-perfect document exports from web interfaces—all while working within enterprise-grade architecture and third-party package constraints.