[{"data":1,"prerenderedAt":453},["ShallowReactive",2],{"content":3},{"content":4,"version":452},{"published":5,"timeline":210,"projects":291},{"styled":6,"ats":162},{"variant":7,"layout":8,"pages":9},"full","styled",[10,117],{"profile":11,"sections":17,"education":23,"competencies":34,"achievements":41,"skills":50,"experience":71},{"name":12,"title":13,"email":14,"website":15,"summary":16},"Warren Scantlebury","Full Stack Software Engineer","warren.scantlebury@gmail.com","warren.scantlebury.io","Results-oriented Software Engineer with a Master’s in Computer Science and significant experience in building scalable web applications. Expert in \u003Cstrong>TypeScript (Node.js\u002FReact)\u003C\u002Fstrong> and \u003Cstrong>DevOps (GCP\u002FKubernetes)\u003C\u002Fstrong>. Proven track record of architecting serverless APIs and leading frontend initiatives.",[18,19,20,21,22],"education","competencies","achievements","skills","experience",[24,29],{"degree":25,"uni":26,"dates":27,"details":28},"MSc Computer Science","University of Nottingham","Sep 2021 – Sep 2022","Distinction.",{"degree":30,"uni":31,"dates":32,"details":33},"BSc Computer Science","UWI Cave Hill","2014 – 2018","(1:1) First Class Hons. Double Major.",[35,36,37,38,39,40],"Agile & Scrum","CI\u002FCD Pipelines","TDD","JIRA","Microservices Architecture","Junior Mentorship",[42,46],{"role":43,"org":44,"note":45},"Submitted Academic Research Paper (Under Review)","Emerging Networks and Services in Developing Nations -- Barbados Use Case","Co-authored with Supervising Professor, Dr. Milena Radenkovic",{"role":47,"org":48,"note":49},"Startup Weekend Winner","Google for Entrepreneurs","Awarded 'Most Innovative Idea'",{"Frontend":51,"Backend":58,"DevOps & Cloud":63},[52,53,54,55,56,57],"TypeScript","JavaScript","React","Next.js","Vue.js","Tailwind CSS",[59,60,61,62],"Node.js","Express","RESTful APIs","GraphQL",[64,65,66,67,68,69,70],"GCP","AWS Lambda","Kubernetes","Terraform","GitOps","Kafka","SQL",[72,85,110],{"title":73,"company":74,"dates":75,"details":76,"engagements":78},"Independent Software Consultant","Warren Scantlebury Consulting","Feb 2025 – Present",[77],"Sole trader consultancy taking on end-to-end product work for small businesses: scoping, build, deployment and handover, with the client owning the result.",[79],{"client":80,"dates":75,"details":81},"Bright Sparks Tutoring Agency",[82,83,84],"Designed and delivered the public website and enrolment platform for \u003Cstrong>Bright Sparks Tutoring Agency\u003C\u002Fstrong> end to end, from requirements and copy through launch and handover.","Built it on \u003Cstrong>Next.js, React and Firebase\u003C\u002Fstrong> (Firestore, Auth, Cloud Functions): a multi-step enrolment form with validation, a role-based admin dashboard, and email notifications for new enrolments.","Owned delivery and operations: \u003Cstrong>GitHub Actions\u003C\u002Fstrong> deploys to Firebase App Hosting, Cypress end-to-end tests, honeypot and reCAPTCHA v3 bot protection, and a documented daily backup plan for submissions.",{"title":86,"company":87,"dates":88,"details":89,"engagements":91},"Software Engineering Consultant","The RAD Consulting Group","Oct 2022 – Oct 2026",[90],"Architected full-stack applications using \u003Cstrong>TypeScript, React (Next.js), and Node.js\u003C\u002Fstrong>, serving as a core contributor.",[92,96,100,104],{"client":93,"dates":94,"details":95},"Cakebox","Apr 2026 – Sep 2026",[],{"client":97,"dates":98,"details":99},"JCDecaux","Jan 2026 – Mar 2026",[],{"client":101,"dates":102,"details":103},"Direct Wines","Oct 2025 – Dec 2025",[],{"client":105,"dates":106,"details":107},"OVO Energy","Oct 2022 – Nov 2025",[108,109],"Orchestrated containerized microservices on \u003Cstrong>Kubernetes\u003C\u002Fstrong>, integrating \u003Cstrong>Kafka\u003C\u002Fstrong> for event streaming and \u003Cstrong>BigQuery\u003C\u002Fstrong>.","Engineered cloud infrastructure on \u003Cstrong>GCP\u003C\u002Fstrong> using \u003Cstrong>Terraform\u003C\u002Fstrong> and \u003Cstrong>Helm\u003C\u002Fstrong>, implementing",{"title":111,"company":112,"dates":113,"details":114},"Software Engineer","Smartterm Ltd","Jan 2021 – Jun 2021",[115,116],"Developed high-performance educational platforms using Agile methodologies.","Built secure video conferencing features in \u003Cstrong>Next.js\u003C\u002Fstrong> integrating AWS Chime SDK and AWS Cognito.",{"profile":118,"sections":119,"continued":122,"experience":123,"interests":137,"projects":149},{"name":12,"title":13,"email":14,"website":15},[22,120,121],"interests","projects",[22],[124,130],{"title":111,"company":125,"dates":126,"details":127},"Smartmatic International","Sep 2019 – Dec 2020",[128,129],"\u003Cstrong>Lead Frontend Developer\u003C\u002Fstrong> for an Angular 9 election application, implementing complex Internationalization.","Co-developed a company-wide Design System focused on Accessibility using \u003Cstrong>Web Components\u003C\u002Fstrong> and Vue.js.",{"title":131,"company":132,"dates":133,"details":134},"Web Developer","Hyuna International","May 2017 – Sep 2019",[135,136],"Designed and deployed a critical internal RESTful API central to daily operations.","Developed serverless microservices using AWS Lambda and API Gateway.",[138,141,144,147],{"name":139,"desc":140},"Hardware Tinkering","Raspberry Pi & Arduino, Home automation, Homelab setup",{"name":142,"desc":143},"Cricket","Competitive play & Captaincy",{"name":145,"desc":146},"PWA Research","Coding on the bleeding edge of web tech and Pushing web capabilities",{"name":148},"Homelab",[150,154,158],{"title":151,"desc":152,"tech":153},"Web Chat","Engineered a PWA with real-time messaging, voice notes, and push notifications.","Vue • Socket.IO • MongoDB • Firebase • Service Workers",{"title":155,"desc":156,"tech":157},"Noez","Developed a multiplayer game with real-time state synchronization and live chat using Firestore.","React • TypeScript • Vite • Capacitor • Firebase Functions • Firestore",{"title":159,"desc":160,"tech":161},"Fitnese","Fitnese is an activity tracking app focused on detailed exercise metadata, injury risk tracking, rehabilitation benefits, and offline-first functionality.","React • TypeScript • Vite • Supabase • PostgreSQL • Capacitor • Workbox",{"variant":163,"layout":163,"pages":164},"ats",[165],{"profile":166,"sections":167,"experience":168,"education":192,"skills":195,"competencies":199,"interests":200,"achievements":204,"projects":207},{"name":12,"title":13,"email":14,"website":15,"summary":16},[22,18,21,19,120,20,121],[169,174,186,188,190],{"title":73,"company":74,"dates":75,"details":170,"engagements":171},[77],[172],{"client":80,"dates":75,"details":173},[82,83,84],{"title":86,"company":87,"dates":88,"details":175,"engagements":177},[90,176,108],"Engineered cloud infrastructure on \u003Cstrong>GCP\u003C\u002Fstrong> using \u003Cstrong>Terraform\u003C\u002Fstrong> and \u003Cstrong>Helm\u003C\u002Fstrong>, implementing \u003Cstrong>GitOps\u003C\u002Fstrong> workflows.",[178,180,182,184],{"client":93,"dates":94,"details":179},[],{"client":97,"dates":98,"details":181},[],{"client":101,"dates":102,"details":183},[],{"client":105,"dates":106,"details":185},[108,109],{"title":111,"company":112,"dates":113,"details":187},[115,116],{"title":111,"company":125,"dates":126,"details":189},[128,129],{"title":131,"company":132,"dates":133,"details":191},[135,136],[193,194],{"degree":25,"uni":26,"dates":27,"details":28},{"degree":30,"uni":31,"dates":32,"details":33},{"Frontend":196,"Backend":197,"DevOps & Cloud":198},[52,53,54,55,56,57],[59,60,61,62],[64,65,66,67,68,69,70],[35,36,37,38,39,40],[201,202,203],{"name":139,"desc":140},{"name":142,"desc":143},{"name":145,"desc":146},[205,206],{"role":47,"org":48,"note":49},{"role":43,"org":44,"note":45},[208,209],{"title":151,"desc":152,"tech":153},{"title":155,"desc":156,"tech":157},{"name":12,"items":211},[212,220,225,230,239,244,250,254,259,266,272,278,283],{"id":213,"kind":214,"title":93,"start":215,"end":216,"dates":94,"tags":217,"parent":219},"eng-cakebox","engagement","2026-04","2026-09",[218],"client","job-rad",{"id":221,"kind":214,"title":97,"start":222,"end":223,"dates":98,"tags":224,"parent":219},"eng-jcdecaux","2026-01","2026-03",[218],{"id":226,"kind":214,"title":101,"start":227,"end":228,"dates":102,"tags":229,"parent":219},"eng-direct-wines","2025-10","2025-12",[218],{"id":231,"kind":214,"title":80,"start":232,"end":233,"dates":75,"tags":234,"parent":237,"bullets":238},"eng-bright-sparks","2025-02",null,[218,235,236],"fullstack","devops","job-wsc",[82,83,84],{"id":237,"kind":240,"title":73,"start":232,"end":233,"dates":75,"tags":241,"org":74,"bullets":243},"job",[235,236,242],"consulting",[77],{"id":245,"kind":214,"title":105,"start":246,"end":247,"dates":106,"tags":248,"parent":219,"bullets":249},"eng-ovo","2022-10","2025-11",[218,235,236],[108,109],{"id":219,"kind":240,"title":86,"start":246,"end":251,"dates":88,"tags":252,"org":87,"bullets":253},"2026-10",[235,236],[90],{"id":255,"kind":18,"title":25,"start":256,"end":257,"dates":27,"tags":258,"org":26,"details":28},"edu-msc-nottingham","2021-09","2022-09",[],{"id":260,"kind":240,"title":111,"start":261,"end":262,"dates":113,"tags":263,"org":112,"bullets":265},"job-smartterm","2021-01","2021-06",[264],"frontend",[115,116],{"id":267,"kind":240,"title":111,"start":268,"end":269,"dates":126,"tags":270,"org":125,"bullets":271},"job-smartmatic","2019-09","2020-12",[264],[128,129],{"id":273,"kind":240,"title":131,"start":274,"end":268,"dates":133,"tags":275,"org":132,"bullets":277},"job-hyuna","2017-05",[276],"backend",[135,136],{"id":279,"kind":18,"title":30,"start":280,"end":281,"dates":32,"tags":282,"org":31,"details":33},"edu-bsc-uwi","2014","2018",[],{"id":284,"kind":18,"title":285,"start":286,"end":287,"dates":288,"tags":289,"org":290},"edu-hc","Associate Degree","2012-09","2014-09","Sep 2012 – Sep 2014",[],"Harrison College",[292,312,324,339,356,373,389,402,414,426,438],{"id":293,"title":294,"tagline":295,"description":296,"tech":297,"year":303,"status":304,"links":305,"tags":307,"home":311},"proj-budgit","Budgit","Photograph a receipt, get a budget","Snap a receipt and the line items, discounts, store and date are extracted and categorised for you. A Next.js app on Firebase with Genkit and Gemini for the understanding, backed by a self-hosted FastAPI and PaddleOCR service that pre-processes and reads the image so the model gets clean text.",[55,298,299,300,301,302],"Firebase","Genkit","Gemini","FastAPI","PaddleOCR",2026,"in-progress",{"live":233,"source":306},"https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fbudgit-full",[308,309,310],"ai","ocr","fintech","featured",{"id":313,"title":314,"tagline":315,"description":316,"tech":317,"year":303,"status":304,"links":320,"tags":322,"home":323},"proj-ebay-deal-finder","eBay deal finder","Scheduled marketplace searches with explainable ranking","A self-hostable monorepo for scheduled marketplace searches, AI-assisted listing normalisation and ranking that shows its reasoning. Next.js 16, Supabase and a ports-and-adapters core so the marketplace and AI providers can be swapped.",[55,52,318,319],"Supabase","pnpm workspaces",{"live":233,"source":321},"https:\u002F\u002Fgithub.com\u002Fwarren488\u002Febay-shenanigans",[308],"more",{"id":325,"title":326,"tagline":327,"description":328,"tech":329,"year":303,"status":331,"links":332,"tags":335,"home":311},"proj-healthlog","HealthLog","One timeline for every condition you manage","A multi-condition health logging PWA with consent-based sharing, so a doctor or caregiver sees only what you grant them. Next.js App Router with cookie-based Supabase auth, Serwist for offline, and a schema designed for scoped and revocable access.",[55,54,318,57,330],"Serwist","live",{"live":333,"source":334},"https:\u002F\u002Fhealth-monitor-bay.vercel.app","https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fhealth-monitor",[336,337,338],"pwa","health","privacy",{"id":340,"title":341,"tagline":342,"description":343,"tech":344,"year":303,"status":304,"links":351,"tags":353,"home":311},"proj-homelab-monitoring","Homelab monitoring","Prometheus and Grafana for the rack at home","A Docker Compose stack watching a Proxmox cluster and a TrueNAS box: node, SMART, cAdvisor, blackbox and Proxmox exporters into Prometheus, Grafana dashboards, and Alertmanager so I hear about a dying disk before it dies.",[345,346,347,348,349,350],"Prometheus","Grafana","Alertmanager","Docker Compose","Proxmox","TrueNAS",{"live":233,"source":352},"https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fmonitoring",[354,355],"homelab","observability",{"id":357,"title":155,"tagline":358,"description":359,"tech":360,"year":303,"status":331,"links":365,"tags":368,"home":311},"proj-dominoes","Multiplayer Caribbean dominoes, on the web and in your pocket","Live sessions with friends, spectators on the rail, table votes, stats and ranks, and play-by-play replays of every finished game. One React codebase ships as a web app, a PWA and an Android app. All writes go through Cloud Functions, with a tested Firestore rules suite guarding the read side.",[54,52,361,362,363,364],"Vite","Capacitor","Firebase Functions","Firestore",{"live":366,"source":367},"https:\u002F\u002Fnoes-246.web.app","https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fnoez",[369,264,370,371,372],"personal","mobile","realtime","game",{"id":374,"title":375,"tagline":376,"description":377,"tech":378,"year":303,"status":384,"links":385,"tags":387,"home":311},"proj-reo-bridge","Reo Bridge","Battery cameras for Frigate NVR","Frigate expects always-on RTSP streams. Battery cameras sleep and only upload short motion clips over FTP. This bridge watches for clips and plays them through one persistent RTSP stream, filling the gaps with idle frames so Frigate never disconnects. Python, FFmpeg and MediaMTX in a container, with CI and a small web UI for tuning.",[379,380,381,382,383],"Python","FFmpeg","MediaMTX","Docker","GitHub Actions","open-source",{"live":233,"source":386},"https:\u002F\u002Fgithub.com\u002Fwarren488\u002Freolink-battery-to-frigate",[354,388,384],"video",{"id":390,"title":391,"tagline":392,"description":393,"tech":394,"year":303,"status":331,"links":397,"tags":400,"home":323},"proj-project-me","This site","A CV that publishes itself","The CV on this site is built from a library of reusable entries and named variants, each picking sections, bullets and page breaks. A publish step resolves a variant to JSON, the same data feeds the timeline page, and a dev-only dashboard edits it all. Print styles cut it into A4 sheets, with a plain single-column variant for applicant tracking systems.",[395,52,396],"Vue 3","Firebase Hosting",{"live":398,"source":399},"https:\u002F\u002Fwarren.scantlebury.io","https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fproject-me",[401],"meta",{"id":403,"title":404,"tagline":405,"description":406,"tech":407,"year":410,"status":218,"links":411,"tags":413,"home":323},"proj-bright-sparks","Bright Sparks Tutoring","Website and enrolment platform for a tutoring agency","Client work through my consultancy: the public site plus a multi-step enrolment form, role-based admin dashboard and email notifications. Next.js and Firebase, with Cloud Functions, Cypress end-to-end tests, GitHub Actions deploys to Firebase App Hosting and a daily backup plan.",[55,54,298,408,409,383],"Cloud Functions","Cypress",2025,{"live":233,"source":412},"https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fstudio-creation",[218],{"id":415,"title":159,"tagline":416,"description":417,"tech":418,"year":410,"status":331,"links":421,"tags":424,"home":311},"proj-fitnese","Workout tracking that understands injuries and rehab","An offline-first fitness PWA where exercises inherit from parents, target muscles hierarchically, and carry injury risk and rehabilitation metadata, so training can follow what your body actually needs. React 19 and Supabase, wrapped with Capacitor for Android.",[54,52,361,318,419,362,420],"PostgreSQL","Workbox",{"live":422,"source":423},"https:\u002F\u002Ffitenese-2.web.app","https:\u002F\u002Fgithub.com\u002Fwarren488\u002Ffitnese-2",[336,425,337],"offline-first",{"id":427,"title":428,"tagline":429,"description":430,"tech":431,"year":433,"status":304,"links":434,"tags":436,"home":323},"proj-comment-extractor","Comment Extractor","A VS Code extension for keeping long comments out of the code","Point a short reference in the code at a longer explanation stored in another file, and read it in place from the editor.",[52,432],"VS Code API",2023,{"live":233,"source":435},"https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fcomment-extractor",[437],"tooling",{"id":439,"title":151,"tagline":440,"description":441,"tech":442,"year":447,"status":331,"links":448,"tags":451,"home":311},"proj-chat-pwa","A chat PWA built to see how far the web could go","Offline support with a service worker and IndexedDB, push notifications, voice notes, image sharing straight from the OS share sheet, friend requests, read receipts and typing indicators, and watching YouTube together with synced playback. Vue 2 on the front, Socket.IO and MongoDB behind it.",[443,444,445,298,446],"Vue","Socket.IO","MongoDB","Service Workers",2020,{"live":449,"source":450},"https:\u002F\u002Fwebchat.scantlebury.io","https:\u002F\u002Fgithub.com\u002Fwarren488\u002Fweb-chat-app",[369,235,336,371],1790663586129,1790666428616]