[{"data":1,"prerenderedAt":205},["ShallowReactive",2],{"slug-content-en-\u002Fprojects\u002Fikea-watcher":3},{"kind":4,"item":5,"categories":52},"project",{"id":6,"title":7,"body":8,"dateEnd":35,"dateStart":36,"description":37,"extension":38,"featuredInCv":39,"link":40,"meta":41,"navigation":39,"path":42,"repo":43,"seo":44,"stem":45,"tags":46,"__hash__":51},"projects_en\u002Fprojects\u002Fikea-watcher.md","ikea-watcher",{"type":9,"value":10,"toc":30},"minimark",[11,16,20],[12,13,15],"h2",{"id":14},"about-the-project","About the Project",[17,18,19],"p",{},"ikea-watcher is a Typescript-based Discord bot that lets you monitor search terms in IKEA's Second Chance markets and sends notifications when matching items become available.",[17,21,22,23,26,27,29],{},"A configuration file is used to set which IKEA stores are relevant and to define a list of search terms for the bot to monitor.",[24,25],"br",{},"\nIf a new result appears in one of the relevant stores, a notification is sent to the specified Discord user via direct message.",[24,28],{},"\nThis includes a link to the product page where the item can be reserved directly, a description of its condition, the store where the item was found, and a Google Maps link for navigating to that store.",{"title":31,"searchDepth":32,"depth":32,"links":33},"",2,[34],{"id":14,"depth":32,"text":15},"2026-04","2026-03","A Typescript-based Discord bot for emptying entire channels.","md",true,null,{},"\u002Fprojects\u002Fikea-watcher","https:\u002F\u002Fgithub.com\u002FLinusTebbe\u002Fikea-watcher",{"title":7,"description":37},"projects\u002Fikea-watcher",[47,48,49,50],"typescript","deno","rest","git","-OhatnF4-a7gJBMoVbfYfbERdWvFG09fQEWqhfAbltY",[53,62,83,102,132,144,153,162],{"name":54,"items":55},"Databases",[56,59],{"slug":57,"name":58},"sql","SQL (MySQL, MariaDB)",{"slug":60,"name":61},"sqlite","SQLite",{"name":63,"items":64},"Frontend",[65,68,71,74,77,80],{"slug":66,"name":67},"html5","HTML5",{"slug":69,"name":70},"css3","CSS3",{"slug":72,"name":73},"tailwindcss","Tailwind CSS",{"slug":75,"name":76},"bootstrap","Bootstrap",{"slug":78,"name":79},"uikit","UIkit",{"slug":81,"name":82},"extjs","Ext JS",{"name":84,"items":85},"JavaScript Ecosystem",[86,89,91,94,97,100],{"slug":87,"name":88},"javascript","JavaScript",{"slug":47,"name":90},"TypeScript",{"slug":92,"name":93},"nodejs","Node.js",{"slug":95,"name":96},"vuejs","Vue.js",{"slug":98,"name":99},"nuxt","Nuxt.JS",{"slug":48,"name":101},"Deno",{"name":103,"items":104},"Backend",[105,108,111,114,117,120,123,126,129],{"slug":106,"name":107},"php","PHP",{"slug":109,"name":110},"laravel","Laravel",{"slug":112,"name":113},"symfony","Symfony",{"slug":115,"name":116},"laminas","Laminas",{"slug":118,"name":119},"mezzio","Mezzio",{"slug":121,"name":122},"zend","Zend Framework",{"slug":124,"name":125},"wordpress","WordPress",{"slug":127,"name":128},"shopware","Shopware",{"slug":130,"name":131},"spryker","Spryker",{"name":133,"items":134},"Mobile",[135,138,141],{"slug":136,"name":137},"dart","Dart",{"slug":139,"name":140},"flutter","Flutter",{"slug":142,"name":143},"android","Android",{"name":145,"items":146},"Other Languages",[147,150],{"slug":148,"name":149},"java","Java",{"slug":151,"name":152},"python","Python",{"name":154,"items":155},"Operating Systems",[156,159],{"slug":157,"name":158},"linux","Linux",{"slug":160,"name":161},"windows","Windows",{"name":163,"items":164},"Other",[165,167,170,173,176,179,182,185,188,191,194,197,199,202],{"slug":50,"name":166},"Git",{"slug":168,"name":169},"docker","Docker",{"slug":171,"name":172},"jenkins","Jenkins",{"slug":174,"name":175},"jvm","JVM",{"slug":177,"name":178},"aws","AWS",{"slug":180,"name":181},"cloudflare","Cloudflare",{"slug":183,"name":184},"nginx","Nginx",{"slug":186,"name":187},"redis","Redis",{"slug":189,"name":190},"networking","Networking",{"slug":192,"name":193},"rabbitmq","RabbitMQ",{"slug":195,"name":196},"oidc","OIDC",{"slug":49,"name":198},"REST",{"slug":200,"name":201},"terraform","Terraform",{"slug":203,"name":204},"cicd","CI\u002FCD",1782416851469]