[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"slug-content-en-\u002Fprojects\u002Fvertretungsplan":3},{"kind":4,"item":5,"categories":65},"project",{"id":6,"title":7,"body":8,"dateEnd":41,"dateStart":42,"description":43,"extension":44,"featuredInCv":45,"link":46,"meta":47,"navigation":48,"path":49,"repo":46,"seo":50,"stem":51,"tags":52,"__hash__":64},"projects_en\u002Fprojects\u002Fvertretungsplan.md","Vertretungsplan",{"type":9,"value":10,"toc":36},"minimark",[11,16,24,33],[12,13,15],"h2",{"id":14},"about-the-project","About the Project",[17,18,19,20,23],"p",{},"During my Abitur at Pictorius Berufskolleg, an early version of the Untis school cloud was in use.",[21,22],"br",{},"\nAt the time, the provider offered no interfaces, no responsiveness, and very little UX, especially for mobile users.",[17,25,26,27,29,30,32],{},"As a solution, I wrote my own Symfony backend with a web crawler and API that fetched the data from the provider, cached it, and served it back in a processed form.",[21,28],{},"\nA native Android app was built alongside it, which fetched and displayed the data via the API.",[21,31],{},"\nThe app was distributed via the Google Play Store and was widely used throughout the school, across courses and grade levels.",[17,34,35],{},"I discontinued the app once the school cloud provider offered their own alternative and had locked down their interfaces enough that simple crawling was no longer possible.",{"title":37,"searchDepth":38,"depth":38,"links":39},"",2,[40],{"id":14,"depth":38,"text":15},"2018-06","2017-10","An app to improve the substitute teacher schedule at my vocational college","md",false,null,{},true,"\u002Fprojects\u002Fvertretungsplan",{"title":7,"description":43},"projects\u002Fvertretungsplan",[53,54,55,56,57,58,59,60,61,62,63],"php","symfony","sql","rest","nginx","flutter","dart","android","html5","css3","git","tK8H9DnnBSmksZypNMZMPKukEMo24gDn2pmKBKznhiY",[66,74,93,120,148,157,169,178],{"name":67,"items":68},"Databases",[69,71],{"slug":55,"name":70},"SQL (MySQL, MariaDB)",{"slug":72,"name":73},"sqlite","SQLite",{"name":75,"items":76},"Frontend",[77,79,81,84,87,90],{"slug":61,"name":78},"HTML5",{"slug":62,"name":80},"CSS3",{"slug":82,"name":83},"tailwindcss","Tailwind CSS",{"slug":85,"name":86},"bootstrap","Bootstrap",{"slug":88,"name":89},"uikit","UIkit",{"slug":91,"name":92},"extjs","Ext JS",{"name":94,"items":95},"JavaScript Ecosystem",[96,99,102,105,108,111,114,117],{"slug":97,"name":98},"javascript","JavaScript",{"slug":100,"name":101},"typescript","TypeScript",{"slug":103,"name":104},"nodejs","Node.js",{"slug":106,"name":107},"vuejs","Vue.js",{"slug":109,"name":110},"nuxt","Nuxt.JS",{"slug":112,"name":113},"react","React",{"slug":115,"name":116},"next","Next.JS",{"slug":118,"name":119},"deno","Deno",{"name":121,"items":122},"PHP Ecosystem",[123,125,128,130,133,136,139,142,145],{"slug":53,"name":124},"PHP",{"slug":126,"name":127},"laravel","Laravel",{"slug":54,"name":129},"Symfony",{"slug":131,"name":132},"laminas","Laminas",{"slug":134,"name":135},"mezzio","Mezzio",{"slug":137,"name":138},"zend","Zend Framework",{"slug":140,"name":141},"wordpress","WordPress",{"slug":143,"name":144},"shopware","Shopware",{"slug":146,"name":147},"spryker","Spryker",{"name":149,"items":150},"Mobile",[151,153,155],{"slug":59,"name":152},"Dart",{"slug":58,"name":154},"Flutter",{"slug":60,"name":156},"Android",{"name":158,"items":159},"Other Languages",[160,163,166],{"slug":161,"name":162},"java","Java",{"slug":164,"name":165},"python","Python",{"slug":167,"name":168},"go","Go",{"name":170,"items":171},"Operating Systems",[172,175],{"slug":173,"name":174},"linux","Linux",{"slug":176,"name":177},"windows","Windows",{"name":179,"items":180},"Other",[181,183,186,189,192,195,198,200,203,206,209,212,214,217],{"slug":63,"name":182},"Git",{"slug":184,"name":185},"docker","Docker",{"slug":187,"name":188},"jenkins","Jenkins",{"slug":190,"name":191},"jvm","JVM",{"slug":193,"name":194},"aws","AWS",{"slug":196,"name":197},"cloudflare","Cloudflare",{"slug":57,"name":199},"Nginx",{"slug":201,"name":202},"redis","Redis",{"slug":204,"name":205},"networking","Networking",{"slug":207,"name":208},"rabbitmq","RabbitMQ",{"slug":210,"name":211},"oidc","OIDC",{"slug":56,"name":213},"REST",{"slug":215,"name":216},"terraform","Terraform",{"slug":218,"name":219},"cicd","CI\u002FCD",1783417755535]