Semantic HTML
Proper semantic elements such asheader,main,nav,section, andfooterare used to improve document structure and compatibility with assistive technologies.
I believe the web should be accessible to everyone, regardless of ability, device, or assistive technology. Accessibility is considered throughout the design and development process of this portfolio rather than being treated as an afterthought. My goal is to create an experience that is inclusive, intuitive, and usable for every visitor.
This website is designed with accessibility in mind and aims to align with the principles of the Web Content Accessibility Guidelines (WCAG) 2.1 Level AA wherever reasonably possible. While accessibility is an ongoing process rather than a finished task, I continuously review and improve the experience as the portfolio evolves.
Every new feature, project showcase, and interface enhancement is evaluated with usability, readability, and keyboard accessibility in mind to provide a consistent experience across desktop, tablet, and mobile devices.
The following practices have been incorporated throughout the development of this portfolio to improve usability for all visitors.
Proper semantic elements such asheader,main,nav,section, andfooterare used to improve document structure and compatibility with assistive technologies.
Interactive components are designed to be fully operable using a keyboard, with logical focus order, visible focus indicators, and support for standard keyboard interactions.
ARIA attributes are added where appropriate to improve context for screen readers without replacing semantic HTML. Decorative elements are hidden from assistive technologies whenever possible.
The light and dark themes are designed with sufficient colour contrast to improve readability while maintaining a clean, modern appearance across different lighting environments.
Every page is built using responsive layouts that adapt to various screen sizes without compromising usability or content accessibility.
Reduced motion preferences are respected using theprefers-reduced-motionmedia query to minimise animations for visitors who request a less animated experience.
The development of this portfolio is guided by four core accessibility principles that help create an inclusive browsing experience for all visitors.
Content is structured with clear headings, descriptive text, meaningful labels, and sufficient colour contrast to improve readability across different devices and assistive technologies.
Navigation and interactive elements are designed to be usable with a keyboard and compatible with modern browsers and accessibility tools.
Information is presented using consistent layouts, descriptive headings, and straightforward language to improve clarity for all users.
Modern web standards, semantic HTML, and progressive enhancement are used to maximise compatibility with browsers, assistive technologies, and future platform improvements.
Accessibility extends beyond visual design. A fast and responsive website benefits everyone, including visitors using assistive technologies, mobile networks, or lower-powered devices.
This portfolio follows modern development practices such as server-side rendering, responsive layouts, optimized images, semantic markup, efficient code splitting, and performance monitoring to deliver a reliable browsing experience while aiming for excellent Google Lighthouse scores.
Although accessibility is considered throughout development, some limitations may still exist while new features continue to be improved.
Accessibility is an ongoing commitment. If you experience any difficulty accessing content, encounter an accessibility barrier, or have suggestions that could improve your experience, I would appreciate hearing from you.
Please use the Contact page to report any accessibility issue or provide feedback. Every report is reviewed carefully and helps improve the portfolio for all visitors.
As my experience as a full-stack developer continues to grow, this portfolio will evolve alongside modern accessibility standards, browser capabilities, and user expectations. Regular reviews, testing, and updates are performed to improve usability, performance, and compatibility over time.
Welcome to my professional portfolio and platform. By accessing or using this website, including the integrated AI assistant, blog, and associated services, you agree to comply with and be bound by the following terms and conditions. If you do not agree to these terms, please refrain from using this site.
All original content featured on this website—including but not limited to project source code, architectural documentation, UI designs, blog articles, brand assets, images, and graphics—is my personal intellectual property unless explicitly stated otherwise or attributed to open-source licenses.
You are welcome to explore my public repositories and live implementations for educational purposes. However, duplication, commercial exploitation, or distribution of closed-source material, custom branding, or proprietary backend code without prior written authorization is strictly prohibited.
The interactive conversational interface on this website is powered by an artificial intelligence assistant utilizing Google's Gemini Large Language Model (LLM) API. This tool is intended solely for informational, interactive, and contextual demonstration purposes.
Important Notice regarding AI Output:
AI model outputs can fluctuate and may occasionally include inaccurate, incomplete, or hallucinated technical statements. Content generated by the assistant does not constitute official engineering blueprints, binding software consultations, or legal/professional development advice. You assume full responsibility for validating any code snippets, strategies, or technical insights generated by the assistant before production deployment.
To preserve the availability, performance, and security of this platform for all visitors, you agree not to engage in any of the following prohibited behaviors:
You must not execute programmatic script injections, automate spam submissions via the contact form, or consciously prompt the AI assistant to perform heavy-resource exhaustion vectors.
Any deliberate attempts to bypass rate limits, probe security endpoints, scrape content database paths, or force access into secure Admin panels or backend systems will be immediately restricted and reported.
This website and all included text, assets, code samples, and operational features are provided on an "as-is" and "as-available" basis without warranties of any kind, whether explicit or implied.
Under no circumstances shall I be held liable for any direct, indirect, incidental, or consequential damages, operational losses, data discrepancies, system disruptions, or security issues arising from your reliance on my blog, external hyperlinks, live project portfolio deployments, or third-party cloud infrastructure.
These terms and conditions are governed by and construed in accordance with the relevant local and international data security frameworks and electronic transaction standards. Any disputes or enforcement initiatives pertaining to platform vulnerability exploitation or unauthorized structural abuse will be addressed within the respective competent legal jurisdictions.
Your privacy is of paramount importance. This Privacy Policy outlines the specific types of data collected through this portfolio application, how that information is securely handled, and the measures taken to safeguard your identity. This platform is designed to align with the Kenya Data Protection Act (KDPA) alongside international frameworks like GDPR and CCPA.
This website strictly minimizes data acquisition to explicit user interactions. Data is only captured through the following conduits:
When sending a query, the application collects your name, email address, and the raw text of your message. This data is exclusively processed to establish direct communication regarding professional opportunities or feedback.
Interacting with published blog items (such as submitting optional reader comments or analytical feedback) may require contextual indexing of user identities or timestamps to maintain high comment integrity and protect against automated scripts.
The embedded conversational assistant uses Google's Gemini API to process prompts. Any text queries or code inputs you submit directly to the AI assistant are securely transmitted to Google cloud infrastructure for dynamic real-time generation.
Conversations managed by the assistant are intended to be completely transient. Chat interactions are not persistently written to my core databases, nor are they used to build hidden advertising identities. Please avoid entering highly sensitive financial credentials, private API keys, or confidential source files into the chat prompt interface.
To preserve the security and delivery of this portfolio, specific transactional metadata is routed through trusted technology providers:
Dynamically evaluates natural language input to deliver responsive portfolio summaries and tech support context.
Hosts core structured relational tables, administers contact messages, and governs security schemas for Admin portal authentication.
Validates human telemetry during form submissions without tracking user habits or collecting commercial cookies.
This application avoids invasive or commercial retargeting cookies. Instead, the architecture utilizes browserlocalStorageand essential telemetry keys purely to handle security and system continuity:
Robust defensive measures protect user submissions from intercepted exfiltration. Data streams are fully encrypted in transit using Secure Sockets Layer (SSL/TLS) mechanisms. Backend access layers are hardened via programmatic honeypots and multi-factor admin guardrails to keep internal logs resilient against malicious exploits or bulk data harvesting.
Pursuant to the provisions of the Kenya Data Protection Act (KDPA) and related global frameworks, you retain complete ownership of your information. You possess the following legal entitlements regarding any personal data processed on this site:
To initiate an explicit data deletion or inspection request, please reach out directly through the Contact interface.