{"schemaVersion":"1.0","asOf":"2026-09-10","owner":"Tino Muzambi","count":26,"projects":[{"id":"music-rec-path-signatures","name":"Music Recommendation Evaluation","summary":"A reproducible Python evaluation pipeline for music-recommendation research using path signatures, ranking metrics and diversity metrics. Its tested pipeline fails closed when required inputs or validation steps are missing.","technologies":["Python","Path signatures","Recommendation systems","Evaluation pipelines"],"featured":true,"sourceUrl":"https://github.com/TinoMuzambi/MusicRecPathSignatures"},{"id":"clock-in-out","name":"Clock In/Out Analysis","summary":"An end-to-end data-analysis project covering collection, cleaning, visualisation and storytelling with personal office clock-in data.","technologies":["R","Quarto","ggplot2","Plotly","GitHub Pages"],"featured":true,"liveUrl":"https://tinomuzambi.github.io/ClockInOut/","sourceUrl":"https://github.com/TinoMuzambi/ClockInOut"},{"id":"trainerr","name":"Trainerr","summary":"A Flutter app for viewing Cape Town train schedules, backed by a Next.js API that scrapes timetable data and stores it in MongoDB.","technologies":["Flutter","Dart","Next.js","TypeScript","MongoDB","Puppeteer"],"featured":true,"sourceUrl":"https://github.com/TinoMuzambi/trainerr"},{"id":"advice","name":"Advice","summary":"A student-advising platform that collates UCT curriculum information, calculates credits and answers common questions through a chatbot.","technologies":["Next.js","TypeScript","React","MongoDB","NextAuth.js","Cypress"],"featured":true,"liveUrl":"https://advice-uct.vercel.app/","referenceUrl":"https://advice-docs.netlify.app/"},{"id":"landon-hotel","name":"Landon Hotel","summary":"A course project demonstrating a serverless React application across AWS Amplify, Lambda, DynamoDB and API Gateway.","technologies":["React","Node.js","AWS Amplify","Lambda","DynamoDB","API Gateway"],"featured":true,"sourceUrl":"https://github.com/TinoMuzambi/ReactServerlessAWS"},{"id":"colour-schemes","name":"Colour Schemes","summary":"A TypeScript React Native colour-scheme generator powered by The Color API.","technologies":["React Native","Expo","TypeScript","Android","iOS"],"featured":false,"liveUrl":"https://expo.dev/accounts/tinomuzambi/projects/ColourSchemes","sourceUrl":"https://github.com/TinoMuzambi/RNColourScheme"},{"id":"tailwind-expo","name":"Tailwind Expo","summary":"A responsive Next.js and TypeScript landing page built as a first exploration of Tailwind CSS.","technologies":["Tailwind CSS","Next.js","TypeScript","React"],"featured":true,"liveUrl":"https://tailwind-expo.vercel.app","sourceUrl":"https://github.com/TinoMuzambi/TailwindExpo"},{"id":"paystack","name":"Paystack","summary":"A Next.js payment playground that initialises Paystack payments and verifies transactions in a serverless function.","technologies":["TypeScript","Next.js","Paystack","React","Vercel"],"featured":false,"liveUrl":"https://paystack-blue.vercel.app/","sourceUrl":"https://github.com/TinoMuzambi/Paystack"},{"id":"recomments","name":"ReComments","summary":"A full-stack commenting service for YouTube videos whose native comments are disabled, with Google sign-in, nested replies and email notifications.","technologies":["TypeScript","React","Next.js","MongoDB","YouTube API","Google APIs"],"featured":true,"liveUrl":"https://recomments.tinomuzambi.com","sourceUrl":"https://github.com/TinoMuzambi/ReComments"},{"id":"marvel-characters","name":"Marvel Characters","summary":"A React interface for browsing, searching and sorting characters from the Marvel API.","technologies":["React","JavaScript","Marvel API"],"featured":false,"liveUrl":"https://marvel-characters-sepia.vercel.app/","sourceUrl":"https://github.com/TinoMuzambi/MarvelCharacters"},{"id":"clash-ratios","name":"Clash Ratios","summary":"A TypeScript app that compares two Clash of Clans players' donation ratios through the game's API.","technologies":["TypeScript","Next.js","React","Node.js","Express"],"featured":false,"liveUrl":"https://clashratios.tinomuzambi.com/","sourceUrl":"https://github.com/TinoMuzambi/ClashRatios"},{"id":"ml-video-annotations","name":"ML Video Annotations","summary":"A browser experiment that classifies hand and facial gestures, then maps each category to a visual overlay.","technologies":["Machine learning","ml5.js","p5.js","JavaScript"],"featured":true,"sourceUrl":"https://github.com/TinoMuzambi/MLVideoAnnotations"},{"id":"tweet-streams","name":"Tweet Streams","summary":"A React app that streams tweets in real time for a supplied search query.","technologies":["React","Express","Socket.IO","Twitter API","Node.js"],"featured":false,"sourceUrl":"https://github.com/TinoMuzambi/TweetStreams"},{"id":"next-blog","name":"Next Blog","summary":"A server-rendered Next.js port of Blog.TinoMuzambi.","technologies":["Next.js","React","JavaScript"],"featured":false,"liveUrl":"https://next-blog-tinomuzambi.vercel.app/","sourceUrl":"https://github.com/TinoMuzambi/NextBlog"},{"id":"cubing-algos","name":"Cubing Algos","summary":"A compact reference for 2-look OLL and PLL Rubik's Cube algorithms.","technologies":["HTML","CSS","JavaScript","Firebase","Firestore"],"featured":true,"liveUrl":"https://cubingalgos.netlify.app","sourceUrl":"https://github.com/TinoMuzambi/CubingAlgos"},{"id":"tinomuzambi-com","name":"TinoMuzambi.com","summary":"A personal site and online CV covering technical skills, work experience, education and project work.","technologies":["Next.js","React","TypeScript","Tailwind CSS"],"featured":true,"liveUrl":"https://tinomuzambi.com","sourceUrl":"https://github.com/TinoMuzambi/ReactPortfolio"},{"id":"working-with-clash","name":"Working With Clash","summary":"A full-stack React app for retrieving Clash of Clans player and clan information by tag.","technologies":["React","JavaScript","Node.js","Express","Clash of Clans API"],"featured":true,"liveUrl":"https://wwc.tinomuzambi.com","sourceUrl":"https://github.com/TinoMuzambi/WorkingWithClash"},{"id":"table-time","name":"Table Time","summary":"A progressive web app for scoring table-tennis matches and persisting match history.","technologies":["React","Node.js","Express","MongoDB","Pusher"],"featured":true,"liveUrl":"https://table.tinomuzambi.com","sourceUrl":"https://github.com/TinoMuzambi/TableTime"},{"id":"projects-tinomuzambi","name":"Projects.TinoMuzambi","summary":"A searchable Next.js catalogue of personal projects, their technology stacks and live links.","technologies":["Next.js","React","JavaScript"],"featured":true,"liveUrl":"https://projects.tinomuzambi.com","sourceUrl":"https://github.com/TinoMuzambi/Projects.TinoMuzambi"},{"id":"whatsapp-chat-analyser","name":"WhatsApp Chat Analyser","summary":"A Python app that parses exported WhatsApp chats and derives statistics and insights through string processing.","technologies":["Python","Flask","HTML","CSS"],"featured":true,"sourceUrl":"https://github.com/TinoMuzambi/WhatsAppAnalyser"},{"id":"remove-contractions","name":"Remove Contractions","summary":"A Python web utility that expands contractions in a supplied body of text.","technologies":["Python","Flask","HTML","CSS"],"featured":false,"sourceUrl":"https://github.com/TinoMuzambi/RemoveContractions"},{"id":"amount-divider","name":"Amount Divider","summary":"A Python utility that divides an amount into a configurable number of uneven partitions.","technologies":["Python","Flask","HTML","CSS"],"featured":false,"sourceUrl":"https://github.com/TinoMuzambi/AmountDivider"},{"id":"blog-tinomuzambi","name":"Blog.TinoMuzambi","summary":"A React-based personal blog with Firebase and Firestore integrations.","technologies":["React","JavaScript","Firebase","Firestore"],"featured":true,"liveUrl":"https://blog.tinomuzambi.com","sourceUrl":"https://github.com/TinoMuzambi/ReactBlog"},{"id":"twibot","name":"TwiBot","summary":"A Python bot built as an early experiment with the Twitter API.","technologies":["Python","Twitter API"],"featured":false,"sourceUrl":"https://github.com/TinoMuzambi/TwiBot"},{"id":"go-conversion-tool","name":"Go Conversion Tool","summary":"A Go command-line tool for common bidirectional conversions.","technologies":["Go"],"featured":false,"sourceUrl":"https://github.com/TinoMuzambi/GoConversionTool"},{"id":"automate-mail","name":"Automate Mail","summary":"A configurable Python script that sends email at regular intervals.","technologies":["Python","smtplib"],"featured":false,"sourceUrl":"https://github.com/TinoMuzambi/AutomateMail"}]}