[{"data":1,"prerenderedAt":89},["ShallowReactive",2],{"projects-\u002Fprojects\u002Fcoffee-helper":3},{"id":4,"title":5,"body":6,"cover":62,"date":63,"description":64,"draft":65,"extension":66,"featured":67,"focus":68,"kind":69,"links":70,"meta":77,"navigation":67,"path":78,"role":79,"seo":80,"stem":81,"tags":82,"tools":85,"__hash__":88},"projects\u002Fprojects\u002Fcoffee-helper.md","Coffee Helper",{"type":7,"value":8,"toc":53},"minimark",[9,14,18,22,35,39,46,50],[10,11,13],"h2",{"id":12},"what-it-does","What it does",[15,16,17],"p",{},"A desktop app that helps you make coffee using a French Press or Aeropress.\nEach step has short instructions and an image, as well as a visual timer for relevant steps.\nA calculator helps the user determine the right ratio between coffee grounds and water.\nOn first use, the user is asked if they own a grinder. This setting is persisted,\nbut can be changed in the app settings. This adjusts the instructions.",[10,19,21],{"id":20},"how-it-works","How it works",[15,23,24,25,29,30,34],{},"The GUI is rendered using ",[26,27,28],"strong",{},"Toga",", Beeware's GUI toolkit. It's based on the ",[31,32,33],"code",{},"toga.Box"," class,\nwhich behaves similarly to a CSS flexbox.\nRecipes are stored as JSON files, so new recipes can be added without having to make changes to the code.\nThe timer uses unix timestamps and an asynchronous loop checking twice a second to determine how much time has passed.",[10,36,38],{"id":37},"testing-and-packaging","Testing and packaging",[15,40,41,42,45],{},"The ratio calculation is covered by unit tests using ",[31,43,44],{},"pytest",", especially the zero-division case.\nThe software is packaged into an MSI installer using Briefcase, Beeware's packaging toolkit.\nPackaging for other operating systems is possible, but was scoped out of this project.",[10,47,49],{"id":48},"context","Context",[15,51,52],{},"This was my final project for my vocational training (Ausbildung) as an application developer (Fachinformatiker für Anwendungsentwicklung).\nThe scoring was based on the documentation, which received a score of 100\u002F100.",{"title":54,"searchDepth":55,"depth":56,"links":57},"",2,3,[58,59,60,61],{"id":12,"depth":55,"text":13},{"id":20,"depth":55,"text":21},{"id":37,"depth":55,"text":38},{"id":48,"depth":55,"text":49},"\u002Fimg\u002Fprojects\u002Fcoffee-helper.png","2024-09-04","Step-by-step brewing guide for Aeropress and French Press",false,"md",true,null,"Desktop app",[71,74],{"label":72,"url":73},"Documentation (PDF, German)","\u002Fdocs\u002Fcoffee-helper-projektdokumentation.pdf",{"label":75,"url":76},"Source","https:\u002F\u002Fgithub.com\u002FProgrammingGoat\u002FCoffee-Helper",{},"\u002Fprojects\u002Fcoffee-helper","Solo",{"title":5,"description":64},"projects\u002Fcoffee-helper",[83,84],"python","desktop",[86,87,44],"Python","Beeware","B11o4vACf66JUz7B1ya1sSRqh_FyYqQpD8_yOYbMo9k",1791882232166]