
Case Study: The Making of This Website
A deep dive into the architecture, technology, and AI-assisted development process behind this portfolio, built with React, TypeScript, GitHub Copilot, and Microsoft Copilot in VS Code.
Project details
Project Goals & Vision
Latest Updates (January 2026)
This project is continuously evolving. Recent updates include:
- SOC2+ Compliance Readiness: implemented granular cookie consent (GDPR/privacy), automated weekly security scanning via GitHub Actions, and PII log redaction.
- Performance Optimization: Integration with a CDN for optimized image delivery, with auto-tagging via a multimodal LLM pipeline.
- Robustness Improvements: Enhanced error handling for the page builder to prevent crashes during data fetch failures.
- Security Hardening: Updated CSP headers and image domain policies for enterprise-grade security.
The primary vision for this portfolio was to create more than just a digital resume. The goal was to build a modern, professional, and performant portfolio website as a single-page application (SPA) that not only showcases my work but also serves as a live demonstration of my technical capabilities. Key objectives included:
- Modern User Experience: A clean, responsive, and aesthetically pleasing design that works flawlessly on all devices.
- High Performance: Fast load times and smooth navigation to keep users engaged.
- Dynamic & Scalable Content: An architecture that allows for easy content updates and the addition of new projects without code changes.
- AI-Assisted Build: To showcase the same Microsoft Copilot in VS Code + GitHub Copilot pair-programming workflow that I use on Microsoft Copilot Studio engagements at Witivio.
- Bilingual Support: Full internationalization (i18n) to serve content in both English and French seamlessly.
Core Architecture: Containerized Next.js
The website is a high-performance Next.js application running in a Docker container on a serverless platform. This architecture ensures infinite scalability with zero maintenance and is portable to Azure Container Apps or Azure App Service with no code changes. The site uses a 'headless CMS' pattern where content is decoupled from code, stored in structured JSON files.

A custom React Context, the I18nProvider, acts as a central content aggregator. When the user switches languages, this provider dynamically fetches all relevant JSON files, merges them into a single content object, and makes it available throughout the application via the useI18n hook. This powerful pattern completely decouples the application's code from its content, making the site incredibly easy to maintain and scale.
Skills Showcase
Development Toolchain
Containerized Serverless Hosting
The Dockerized Next.js application is deployed on a serverless container platform (Belgium / europe-west1) and is fully portable to Azure Container Apps.
Docker
Ensures the application runs identically in development and production (Node 20 Alpine).
GitHub Actions CI/CD
Automated CI/CD pipeline that builds, tests, and deploys code on every push to main.
Key Feature: Generative AI Integration
A central feature of this portfolio is the integration of a multimodal LLM stack to demonstrate the same patterns I deploy in Microsoft Copilot Studio engagements:

- ElliotBot (AI Co-Pilot): A context-aware chatbot that uses a detailed system prompt and streaming responses to act as an AI guide for the portfolio. It leverages tool-use to perform actions like navigation and filtering based on the user's conversational requests, the same agentic pattern I deploy in Microsoft Copilot Studio.
- Interactive Demos: Projects like the Automated Invoice Processing demo showcase multimodal capabilities, sending an image and a text prompt to extract structured JSON data, the same data-extraction pattern that maps onto Azure AI Document Intelligence in production.
- Real-Time AI Player: The AI Reflex Rush game demonstrates low-latency decision-making, where a fast LLM processes the game state on each frame and returns an action ('JUMP' or 'WAIT'), configured for maximum speed.
Pro Tip
When designing a content-driven site, abstracting your content into a CMS-like structure (even simple JSON files) from the start is a huge long-term win for maintainability and scalability.
SEO & Performance Strategy
For an SPA, ensuring proper search engine indexing is critical. The routing logic in App.tsx dynamically updates the page's title and meta description on every navigation change. Furthermore, it injects structured data (JSON-LD) into the page header, providing search engines with rich context for every page, including individual project case studies. This ensures that every piece of content is individually indexable and optimized for search.
Frequently Asked Questions
All content, from project details to blog posts, is managed in JSON files, acting like a headless CMS. This decouples the content from the code, making updates fast and easy without needing to redeploy the application.
The application is designed to be very cost-effective. Features like 'AI Reflex Rush' use low-latency, low-cost models. The chatbot uses streaming to manage token usage efficiently. All interactive demos are designed to illustrate concepts with minimal API calls. The same cost-optimization techniques apply when migrating the bot backend to Azure OpenAI for enterprise governance.
The most challenging aspect was architecting the dynamic content rendering system in a clean and scalable way. Ensuring the `ProjectDetailLayout` component could flexibly render any combination of content blocks—from simple text to interactive demos—required careful planning of the component map and the JSON data structure.


