[{"data":1,"prerenderedAt":288},["ShallowReactive",2],{"/projects/recalls-app":3,"/projects/recalls-app-surround":261},{"id":4,"title":5,"additionalTags":6,"body":7,"description":17,"excerpt":228,"extension":229,"featured":230,"hero":18,"meta":231,"name":239,"navigation":230,"openSource":240,"path":241,"projectDate":242,"projectFolder":233,"seo":243,"sitemap":244,"status":248,"stem":249,"subtitle":250,"tags":251,"thumbnail":259,"__hash__":260},"projects/projects/2.recalls-app.md","Recalls App",[],{"type":8,"value":9,"toc":218},"minimark",[10,14,19,24,43,48,103,107,110,113,133,140,144,148,154,158],[11,12],"stats-table",{":stats":13},"[{\"label\": \"release date\", \"value\": \"2024\"}, {\"label\": \"URL\", \"value\": \"recalls.crateos.com\", \"url\": \"https://recalls.crateos.com\"}]",[15,16],"full-img",{"alt":17,"src":18},"Tailored CPSC product recalls for parents & busy people.","/projects/crateos/hero.webp",[20,21,23],"h2",{"id":22},"overview","Overview",[25,26,31],"div",{"className":27},[28,29,30],"not-prose","callout","pb-6",[32,33,34,35,42],"p",{},"The product recall remedy process is often confusing, time consuming, and parents are too busy to dedicate the time & effort.\n",[36,37,41],"a",{"href":38,"rel":39},"https://recalls.crateos.com",[40],"nofollow","Recalls"," is a web application that I created to make it easier to discover and track recalled products.\nIt was also an opportunity to tackle full-stack development.",[44,45,47],"h3",{"id":46},"challenge","Challenge",[49,50,51,87],"app-two-col",{},[52,53,55,68],"template",{"v-slot:left":54},"",[32,56,57,58,67],{},"The Consumer Product Safety Commission (CPSC) PWA ",[36,59,62],{"href":60,"rel":61},"https://m-recalls.cpsc.gov/",[40],[63,64],"icon",{"name":65,"size":66},"lucide:external-link","3rem"," is very bare-bones has several UX issues:",[69,70,71,75,78,81,84],"ul",{},[72,73,74],"li",{},"Very text heavy, means a lot of reading to get the relevant information.",[72,76,77],{},"Wasted space, can only view recalls one-at-a-time.",[72,79,80],{},"Only a single image for each recall and they are often cropped in ways that obscure the product.",[72,82,83],{},"Can't enlarge images.",[72,85,86],{},"No way to track recalls.",[52,88,89],{"v-slot:right":54},[32,90,91,98],{},[92,93],"img",{"alt":94,"className":95,"src":97},"CPSC's Recalls PWA",[96],"max-w-40","/projects/crateos/cpsc-recalls-pwa.webp",[36,99,102],{"href":60,"rel":100,"target":101},[40],"_blank","Try the CPSC's app",[44,104,106],{"id":105},"my-solution","My Solution",[32,108,109],{},"My primary goal was to make the recall discovery process quicker and easier.",[32,111,112],{},"My approach features:",[69,114,115,118,121,124,127,130],{},[72,116,117],{},"Images are full visible and can be enlarged in a modal.",[72,119,120],{},"ElasticSearch enables a fast and mistake-tolerant search experience.",[72,122,123],{},"Iconography enables understanding hazards at a glance quickly.",[72,125,126],{},"Thoughtfully designed UI + UX.",[72,128,129],{},"Follow Companies to receive recall alerts.",[72,131,132],{},"Track recalls, refunds/replacements in-progress and savings-to-date.",[32,134,135],{},[36,136,139],{"href":137,"rel":138,"target":101},"https://recalls.crateos.com/",[40],"Give it a try for yourself",[141,142],"image-carousel",{":items":143},"[\"/projects/crateos/home-dark.jpg\",\"/projects/crateos/home.jpg\",\"/projects/crateos/recall.jpg\", \"/projects/crateos/recall-dark.jpg\"]",[44,145,147],{"id":146},"promo-video","Promo Video",[149,150],"player",{"posterDesc":151,"posterSrc":152,"src":153},"A brief walkthrough of the CrateOS Recalls app.","https://www.crateos.com/images/demo-poster.gif","https://www.crateos.com/media/crateos-recalls-promo-720.mp4",[44,155,157],{"id":156},"technologies-utilized","Technologies Utilized",[159,160,161,174],"table",{},[162,163,164],"thead",{},[165,166,167,171],"tr",{},[168,169,170],"th",{},"Frontend",[168,172,173],{},"Backend",[175,176,177,186,194,202,210],"tbody",{},[165,178,179,183],{},[180,181,182],"td",{},"Vue 3",[180,184,185],{},"ExpressJS",[165,187,188,191],{},[180,189,190],{},"Composition API",[180,192,193],{},"Loopback",[165,195,196,199],{},[180,197,198],{},"Pinia",[180,200,201],{},"PostgreSQL",[165,203,204,207],{},[180,205,206],{},"VueUse",[180,208,209],{},"ElasticSearch",[165,211,212,215],{},[180,213,214],{},"Bulma / Buefy",[180,216,217],{},"NodeJS",{"title":54,"searchDepth":219,"depth":219,"links":220},2,[221],{"id":22,"depth":219,"text":23,"children":222},[223,225,226,227],{"id":46,"depth":224,"text":47},3,{"id":105,"depth":224,"text":106},{"id":146,"depth":224,"text":147},{"id":156,"depth":224,"text":157},null,"md",true,{"url":232,"slug":233,"items":234},"https://crateos.com","crateos",[235,236,237,238],"/projects/crateos/home-dark.jpg","/projects/crateos/home.jpg","/projects/crateos/recall.jpg","/projects/crateos/recall-dark.jpg","Recalls PWA",false,"/projects/recalls-app","2025-01-01T00:00:00.000Z",{"description":17},{"loc":241,"lastmod":245,"changefreq":246,"priority":247},"2025-05-18","monthly",0.8,"published","projects/2.recalls-app","Solo Founder + Full Stack + Design  + Branding",[252,253,254,255,256,170,173,257,258],"VueJS","Bulma","SCSS","TypeScript","Postgres","PWA","Git","/projects/crateos/thumb.webp","FR99UQfs5Iwp3cIbK7PsHz8KS8nlZudEIDhcITnvNSU",[262,273],{"title":263,"path":264,"stem":265,"name":263,"description":266,"subtitle":267,"thumbnail":268,"tags":269,"children":-1},"Portfolio Refresh","/projects/portfolio-refresh","projects/1.portfolio-refresh","Rebuilding my website with modern tech.","Gotta go fast","/projects/portfolio/thumb.webp",[252,270,271,272,255,258],"Nuxt","GSAP","Tailwind",{"title":274,"path":275,"stem":276,"name":277,"description":278,"subtitle":279,"thumbnail":280,"tags":281,"children":-1},"Shooting Gallery For Playdate","/projects/shooting-gallery-for-playdate","projects/3.shooting-gallery-for-playdate","Shooting Gallery","A carnival inspired game for the Playdate console.","Game Design & Development","/projects/playdate/thumb.webp",[282,283,284,285,286,287,258],"Lua","Playdate SDK","Graphic Design","SFX","Game design","Game Development",1784418351566]