Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/projects/msc-thesis.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/projects/persona-site.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/projects/supercines.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 12 additions & 11 deletions src/infrastructure/repositories/in-memory-about-repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,35 @@ export class InMemoryAboutRepository implements AboutRepository {
return {
name: "Andrés Sánchez",
heroDescription: [
"Senior iOS Engineer with 8+ years of experience delivering resilient mobile banking apps (99.5% uptime) for millions of users.",
"Specializing in Swift, Clean Architecture, and FinTech systems across Latin America.",
"Full mobile stack: iOS native, React Native native modules, Cordova hybrid plugins, and React microfrontends.",
"Endurance athlete, coffee enthusiast, ASOIAF/GOT maester.",
"Senior Mobile & Frontend Engineer with 8+ years of experience delivering secure, high-performance banking platforms for millions of users.",
"Specializing in iOS native architecture, React Native bridges, and React microfrontends.",
"Proven track record in FinTech security compliance, CI/CD automation, and high-volume mobile systems.",
"Endurance athlete and coffee enthusiast.",
"Structure creates freedom, details create intuition, discipline creates flow."
],
bio: [
"Andrés has spent 8+ years building iOS banking apps for millions of users — at Bancolombia, at 99.5% availability, through bi-annual security audits, under real production load.",
"His work spans the full mobile stack, but the iOS native layer is where he's always gone deepest — from MVC to state-driven architecture, from architecture patterns to security compliance and production observability.",
"Andrés has spent 8+ years building resilient mobile banking apps and frontend platforms for millions of users—maintaining high-stability operations under strict SLAs and high-volume production loads.",
"His work spans the full mobile and hybrid stack, with deep expertise in Swift/iOS native module development, React Native, and React microfrontends. He focuses on clean architecture, security compliance (PCI DSS, OWASP MASVS, ISO 27001), and end-to-end telemetry observability.",
],
stats: [
{ label: "Years of Experience", value: "8+" },
{ label: "App Uptime", value: "99.5%" },
{ label: "Crash-Free Sessions", value: "99.9%" },
{ label: "Active Users", value: "10M+" },
],
skills: [
"Swift", "SwiftUI", "UIKit", "Combine",
"Clean Architecture", "VIPER", "MVVM", "State-Driven Architecture", "Server-Driven UI",
"XCTest", "TDD", "BDD",
"React 18", "TypeScript", "React Native", "Cordova",
"Clean Architecture", "VIPER", "MVVM-C", "Server-Driven UI", "Microfrontends",
"Jest", "XCTest", "TDD",
"Fastlane", "CI/CD", "GitHub Actions",
"OWASP MASVS", "ISO 27001", "PCI DSS", "SSL Pinning",
"OWASP MASVS", "ISO 27001", "PCI DSS", "SSL Pinning"
],
personalBio: [
"For as long as I can remember, I have loved running. For the last 10 years it has been the third leg of my stool — it gives me balance, discipline, focus, and determination. This passion has grown into becoming an endurance athlete: long hours running through mountains, Gran Fondo cycling, and marathons. The most obvious next goal was triathlon, so I finally learned to swim properly and I am now preparing for my first tri race.",
"I'm a bottom-up learner who goes down the rabbit hole, builds from first principles, and trusts that the discipline of going deep creates the freedom to execute with intuition and flow.",
"All of this fueled by my passion for coffee. Living in Ecuador is a blessing — having access to some of the best coffee in the world. The thing I enjoy most is grinding and brewing my coffee every morning. I sleep just so I can have my first cup the next morning.",
],
hobbies: ["Endurance Sports", "Running", "Trail", "Bicycle", "Swimming", "Coffee", "Music", "Game of Thrones", "Languages"],
hobbies: ["Endurance Sports", "Running", "Trail", "Bicycle", "Swimming", "Coffee", "Music", "Languages"],
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export class InMemoryExperienceRepository implements ExperienceRepository {
year: "2023 - 2025",
title: "Senior Software Engineer (iOS · React / React Native)",
company: "iuvity (Todo1 Services Inc.)",
description: "Senior technical reference and production certification authority for iuviBANKINGiuvity's white-label banking SaaS deployed for Financiera Comultrasan, Banco Mundo Mujer Retail, and BMM Corporate. All artifacts required sign-off before reaching operations. Owned the AppShell web-to-native bridge and Swift/Objective-C native modules for the React Native shell. Highest AWS developer access across all client accounts.",
description: "Senior Software Engineer and platform technical reference for iuviBANKINGiuvity's white-label banking SaaS deployed across regional financial institutions. Served as the quality certification gatekeeper for production handovers. Architected the AppShell web-to-native bridge contract, engineered React microfrontends, and authored secure Swift/Objective-C native modules for the React Native container.",
imagePath: '/iuvity.jpeg',
color: "text-green-600"
},
Expand All @@ -18,7 +18,7 @@ export class InMemoryExperienceRepository implements ExperienceRepository {
year: "2020 - 2023",
title: "Senior iOS Engineer",
company: "iuvity (Todo1 Services Inc.)",
description: "Engineered resilient iOS banking apps for Bancolombia (10M+ active users) through iuvity's SaaS platform. Achieved 99.5% availability and 95% on-time SLA resolution. Drove architecture from MVC to VIPER and state-driven patterns, improving testability by 40%. Implemented Server-Driven UI, cutting deployment time by 60%. Delivered ISO 27001, OWASP MASVS, and PCI DSS compliance — FaceID, Apple Pay, SSL pinning, jailbreak detection.",
description: "Engineered high-availability mobile banking solutions for Bancolombia (10M+ users). Achieved 99.9% crash-free session rates while meeting strict 99.5% system availability SLAs. Modernized codebase architectures from legacy MVC to VIPER and MVVM-C, reducing coupling and enforcing an 80%+ unit testing standard. Delivered secure, regulatory-compliant mobile features (FaceID, Apple Pay, freeRASP).",
imagePath: '/iuvity.jpeg',
color: "text-green-700 dark:text-green-500"
},
Expand All @@ -36,7 +36,7 @@ export class InMemoryExperienceRepository implements ExperienceRepository {
year: "2017 - 2018",
title: "Mid-level iOS Developer",
company: "iuvity (Todo1 Services Inc.)",
description: "Delivered banking UI features for Banistmo (Panama) using VIPER architecture through iuvity's SaaS platform. Refactored legacy Objective-C codebases to Swift, migrated layouts to iPhone X (Safe Area, AutoLayout), and coordinated App Store releases via TestFlight, Fastlane, and Jenkins. Stepped up as de facto coordinator for a distributed team of external providers.",
description: "Delivered mobile banking features for Banistmo Panama using UIKit and VIPER. Refactored legacy Objective-C modules to Swift and updated layout form factors for iPhone X (Safe Area). Coordinated code standards and pull reviews for a distributed external team while automating beta distribution via Fastlane and Jenkins.",
imagePath: '/iuvity.jpeg',
color: "text-green-700 dark:text-green-400"
},
Expand All @@ -45,7 +45,7 @@ export class InMemoryExperienceRepository implements ExperienceRepository {
year: "2015 - 2017",
title: "iOS Developer",
company: "Bayteq Cia Ltda",
description: "Built Supercines Cinema App with a custom seat-selection SDK and PCI DSS-compliant payments. Developed white-label mobile banking for Produbanco and integrated FacePhi biometric verification for Banco Bolivariano. Developed a Points of Interest module (branches/ATMs) using MapKit. Contributed to a 20-week Agile transformation from concept to App Store.",
description: "Built the Supercines Cinema App from concept to App Store, implementing custom seat-selection UI SDKs and PCI DSS-compliant payment integrations. Engineered white-label mobile banking blueprints for Produbanco and integrated biometric identity verification (FacePhi) for Banco Bolivariano.",
imagePath: '/bayteq.jpeg',
color: "text-sky-700 dark:text-sky-400"
}
Expand Down
42 changes: 31 additions & 11 deletions src/infrastructure/repositories/in-memory-project-repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,53 @@ export class InMemoryProjectRepository implements ProjectRepository {
const iuvibanking: Project = {
id: 'iuvibanking',
title: 'iuviBANKING Platform',
role: 'Senior iOS Engineer — Technical Ownership',
description: 'Production certification authority across React microfrontends, React Native, and the iOS native layer — cutting deployment time by 60% through Server-Driven UI.',
challenge: 'Maintaining zero-defect handoffs across independent teams through certification gates, failure triage, and ownership routing — without people-management authority.',
techStack: ['React', 'React Native', 'Swift', 'TypeScript', 'AWS', 'Modyo', 'OIDC', 'Server-Driven UI'],
role: 'Senior Software Engineer — Platform Ownership',
description: 'Technical reference and quality certification gatekeeper across React microfrontends, React Native shells, and iOS native modules, responsible for stable production handovers.',
challenge: 'Establishing zero-defect handoff protocols across independent product and operations teams, and resolving critical cross-layer failures through technical influence rather than formal authority.',
techStack: ['React', 'React Native', 'Swift', 'TypeScript', 'AWS', 'Modyo DXP', 'OIDC', 'Server-Driven UI'],
imagePath: '/projects/iuvibanking.webp',
}

const bancolombia: Project = {
id: 'bancolombia',
title: 'Bancolombia iOS App',
role: 'Senior iOS Engineer',
description: 'iOS banking app for 10M+ active users99.5% uptime, 95% on-time SLA, full security compliance stack.',
challenge: 'Modernizing a legacy MVC codebase to VIPER and state-driven patterns without disrupting a live app under continuous high-volume traffic.',
techStack: ['Swift', 'VIPER', 'MVVM', 'Combine', 'Firebase', 'freeRASP'],
description: 'High-availability native iOS banking integrations serving 10M+ active users, with a 99.9% crash-free session rate under strict 99.5% system SLAs.',
challenge: 'Modernizing a complex legacy MVC codebase to VIPER and MVVM-C architectures without introducing regressions or interrupting live transaction traffic.',
techStack: ['Swift', 'VIPER', 'MVVM-C', 'Combine', 'Firebase', 'RASP'],
imagePath: '/projects/bancolombia.webp',
}

const supercines: Project = {
id: 'supercines',
title: 'Supercines iOS App',
role: 'iOS Developer',
description: 'Cinema app for Supercines — custom seat-selection SDK, PCI DSS-compliant payments, and CoreData offline support.',
challenge: 'Building a pixel-accurate interactive seat map SDK with custom touch handling, then wiring a compliant payment gateway under strict PCI DSS requirements.',
techStack: ['Swift', 'Objective-C', 'UIKit', 'CoreData', 'MapKit', 'PCI DSS'],
description: 'Cinema booking application featuring a custom seat-selection SDK, PCI DSS-compliant payment integrations, and offline persistence.',
challenge: 'Building a high-performance interactive seat selection UI SDK using UIKit with custom touch handling, and securing transactional pipelines under strict PCI compliance.',
techStack: ['Swift', 'Objective-C', 'UIKit', 'Core Data', 'MapKit', 'PCI DSS'],
imagePath: '/projects/supercines.webp',
}

return [iuvibanking, bancolombia, supercines]
const personalSite: Project = {
id: 'personal-site',
title: 'Personal Website',
role: 'Designer & Engineer',
description: 'This site, a clean architecture Next.js portfolio with App Router, TypeScript, and Tailwind CSS, deployed to GitHub Pages.',
challenge: 'Applying Clean Architecture principles (entities, use cases, repositories, interface adapters) to a static portfolio site, keeping presentation fully decoupled from data while working within GitHub Pages constraints.',
techStack: ['Next.js', 'TypeScript', 'Tailwind CSS', 'Clean Architecture', 'GitHub Pages'],
imagePath: '/projects/persona-site.webp',
}

const msThesis: Project = {
id: 'msc-thesis-ppm-idyot',
title: 'PPM★ vs IDyOT: Statistical Language Modeling',
role: 'MSc Researcher — VUB AI Lab',
description: 'MSc thesis at Vrije Universiteit Brussel comparing PPM★, a compression-based language model, against IDyOT, a cognitive architecture for hierarchical prediction. Implemented both algorithms in Python, validated against established benchmarks, and identified the optimal IDyOT configuration via KL divergence analysis.',
challenge: 'PPM★ achieves high prediction accuracy as a descriptive black box but offers no cognitive explanation. The challenge was formally documenting IDyOT\'s within-layer interactions (implicit in prior literature), implementing a zero-probability smoothing fix, and connecting statistical accuracy to cognitive plausibility.',
techStack: ['Python', 'PPM★', 'IDyOT', 'Word2Vec', 'Statistical NLP', 'Cognitive Architecture', 'Information Theory'],
imagePath: '/projects/msc-thesis.webp',
}

return [iuvibanking, bancolombia, personalSite, msThesis, supercines]
}
}
Loading