[{"data":1,"prerenderedAt":142},["ShallowReactive",2],{"project:moj-go":3},{"id":4,"title":5,"body":6,"demo":106,"description":107,"docs":106,"draft":108,"extension":109,"highlights":110,"image":120,"language":121,"meta":122,"navigation":123,"order":124,"path":125,"repo":106,"seo":126,"site":19,"stack":127,"stem":134,"tagline":135,"tags":136,"__hash__":141},"projects\u002Fprojects\u002Fmoj-go.md","moj·GO",{"type":7,"value":8,"toc":99},"minimark",[9,24,29,32,39,43,49,52,56],[10,11,12],"blockquote",{},[13,14,15,16,23],"p",{},"This one is a commercial product running at ",[17,18,22],"a",{"href":19,"rel":20},"https:\u002F\u002Fmojgo.rs",[21],"nofollow","mojgo.rs",", so\nthe repository is private. The numbers below are from the codebase itself, and\nI am happy to walk through the architecture or the test suite on a call.",[25,26,28],"h2",{"id":27},"why-this-one-is-the-real-test","Why this one is the real test",[13,30,31],{},"A leave tracker sounds simple until you write down the rules. Entitlement\naccrues over a year. Unused days carry over, but only some of them, and only\nuntil a cutoff. Public holidays are national but companies add their own. A\nrequest spans a weekend differently than a Tuesday. Approvals route to a manager\nwho may themselves be on leave.",[13,33,34,35],{},"Getting that wrong means someone loses days they earned. ",[36,37,38],"strong",{},"This is the kind of\ndomain where the tests are not ceremony.",[25,40,42],{"id":41},"how-it-is-tested","How it is tested",[13,44,45,48],{},[36,46,47],{},"43 end-to-end Playwright specs and 28 unit test files."," The end-to-end weight\nis deliberate: the risky behavior in this app is multi-step and role-dependent -\nan employee submits, an admin approves, a balance changes - and that only holds\ntogether in a real browser against a real database.",[13,50,51],{},"The e2e suite includes visual snapshot tests across desktop and mobile, so a\nlayout regression fails CI rather than reaching a user.",[25,53,55],{"id":54},"engineering-practice-on-display","Engineering practice on display",[57,58,59,71,77,87,93],"ul",{},[60,61,62,65,66,70],"li",{},[36,63,64],{},"81 SQL migrations."," Every schema change is a reviewable, replayable file.\nTypes are regenerated from the live schema (",[67,68,69],"code",{},"pnpm db:types","), so the database\nis the source of truth for TypeScript, not a hand-maintained parallel model.",[60,72,73,76],{},[36,74,75],{},"150 markdown documents"," - architecture decision records, runbooks, email\ntemplate references. The decisions are written down where the next person\nlooks.",[60,78,79,82,83,86],{},[36,80,81],{},"Seeded demo data"," - realistic tenants, employees, and requests, all tagged\n",[67,84,85],{},"is_demo",", so the app can be demonstrated and tested without touching real\nrecords.",[60,88,89,92],{},[36,90,91],{},"Bilingual"," (Serbian \u002F English) from the start, because retrofitting i18n is\nhow you learn not to retrofit i18n.",[60,94,95,98],{},[36,96,97],{},"Sentry"," on client and server, plus accessibility and screenshot CI\nworkflows.",{"title":100,"searchDepth":101,"depth":101,"links":102},"",2,[103,104,105],{"id":27,"depth":101,"text":28},{"id":41,"depth":101,"text":42},{"id":54,"depth":101,"text":55},null,"A multi-tenant HR leave-management app for Serbian companies. Real product, real domain rules: accrual, carryover, public holidays, and an approval chain that has to be right.",false,"md",[111,114,117],{"value":112,"label":113},"71","test files - 43 end-to-end specs, 28 unit",{"value":115,"label":116},"81","SQL migrations, schema versioned from day one",{"value":118,"label":119},"150","markdown docs: ADRs, runbooks, references","\u002Fprojects\u002Fmoj-go.webp","TypeScript",{},true,3,"\u002Fprojects\u002Fmoj-go",{"title":5,"description":107},[128,121,129,130,131,132,97,133],"Nuxt 4","Supabase","PostgreSQL","Pinia","Playwright","i18n","projects\u002Fmoj-go","Multi-tenant HR leave management, in production",[137,138,139,140],"Product","Multi-tenancy","Testing","Domain Modelling","dSJd7m7u65RcRKhq2DbQPkw-7OEB5fD_3QddkuMlIjs",1785847686111]