[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"verticals":3,"tag-security-1":44,"search-suggestions":102,"tags-all":142},[4,20,32],{"id":5,"slug":6,"name":7,"tagline":8,"description":9,"accentFrom":10,"accentTo":11,"icon":12,"defaultLocale":13,"locales":14,"features":16,"position":19},"019fe637-3d33-714b-b57f-23e163ffca0c","dev","Web Development","Read it. Run it. Prove it.","A post a day on modern web development — most with an editable playground and a quiz that explains every answer. Free, no account needed.","violet-500","cyan-400","◇","en",[13,15],"fa",{"courses":17,"paths":17,"articles":17,"exams":18,"flashcards":18,"packages":17,"community":17,"certificates":17,"teams":17,"commerce":17},true,false,0,{"id":21,"slug":22,"name":23,"tagline":24,"description":25,"accentFrom":26,"accentTo":10,"icon":27,"defaultLocale":13,"locales":28,"features":30,"position":31},"019fe637-3dc2-754c-8657-0f175bfee7c6","lang","Languages","Learn a language the way you learn a codebase.","Grammar explained the way good documentation explains an API — one idea at a time, each with a quiz.","amber-400","⌘",[13,15,29],"es",{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":17,"packages":18,"community":17,"certificates":17,"teams":18,"commerce":18},2,{"id":33,"slug":34,"name":35,"tagline":36,"description":37,"accentFrom":38,"accentTo":39,"icon":40,"defaultLocale":13,"locales":41,"features":42,"position":43},"7b3c16f2-931d-410e-802e-e1fa4edab7de","soft","Soft Skills","The half of the job nobody wrote documentation for.","Weekly, on the parts of working life that decide more than your code does — first weeks, meetings, interviews, promotions, and the people around you. Written from what actually happens, and recorded as a podcast you can listen to on the walk.","emerald-400","teal-300","◉",[13],{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":18,"packages":18,"community":17,"certificates":18,"teams":18,"commerce":18},3,{"items":45,"meta":100},[46,79],{"id":47,"slug":48,"title":49,"subtitle":50,"excerpt":51,"coverUrl":52,"locale":13,"readingMinutes":53,"publishedAt":54,"viewCount":55,"likeCount":19,"commentCount":19,"author":56,"vertical":61,"topic":62,"tags":65,"_count":76,"playground":78,"hasQuiz":17,"hasPlayground":17},"01a07112-8d09-7178-b258-b899a0eb496e","webauthn-passkeys-discoverable-credentials","I Shipped 'Passwordless Login.' It Still Asked for a Username.",null,"WebAuthn's own demo code creates a credential the browser can't find on its own — so your passkey button quietly turns into a fancier security key instead of an actual passwordless sign-in. One option fixes it.","\u002Fmedia\u002Fcovers\u002Fwebauthn-passkeys-discoverable-credentials.png",6,"2026-09-10T10:57:59.771Z",22,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},"019fe637-3c25-7088-9034-39c9f15dc3c8","Parsa Jiravand","parsa","Frontend engineer · building bestpractic",{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":63,"name":64},"security","Security",[66,69,70,73],{"slug":67,"name":68,"color":50},"webdev","Webdev",{"slug":63,"name":64,"color":50},{"slug":71,"name":72,"color":50},"javascript","Javascript",{"slug":74,"name":75,"color":50},"webauthn","Webauthn",{"assessments":77},1,{"slug":48},{"id":80,"slug":81,"title":82,"subtitle":50,"excerpt":83,"coverUrl":84,"locale":13,"readingMinutes":85,"publishedAt":86,"viewCount":87,"likeCount":19,"commentCount":19,"author":88,"vertical":89,"topic":90,"tags":91,"_count":98,"playground":99,"hasQuiz":17,"hasPlayground":17},"019fe660-cf2a-71df-b517-8d722f92cc37","weekly-cors-explained","CORS Explained: The Complete Guide (with Cheat Sheet)","A complete guide to CORS: the same-origin policy, preflight requests, and Access-Control-Allow-Origin headers — with worked examples and a cheat sheet.","\u002Fmedia\u002Fcovers\u002Fweekly-cors-explained.png",14,"2026-08-03T09:54:26.268Z",567,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":63,"name":64},[92,93,94,95],{"slug":67,"name":68,"color":50},{"slug":63,"name":64,"color":50},{"slug":71,"name":72,"color":50},{"slug":96,"name":97,"color":50},"tutorial","Tutorial",{"assessments":77},{"slug":81},{"page":77,"perPage":101,"total":31,"totalPages":77},12,[103,105,107,111,115,117,120,124,128,132,135,139],{"slug":67,"name":68,"articles":104},88,{"slug":71,"name":72,"articles":106},72,{"slug":108,"name":109,"articles":110},"frontend","Frontend",69,{"slug":112,"name":113,"articles":114},"css","Css",31,{"slug":96,"name":97,"articles":116},19,{"slug":118,"name":119,"articles":101},"performance","Performance",{"slug":121,"name":122,"articles":123},"typescript","Typescript",11,{"slug":125,"name":126,"articles":127},"react","React",10,{"slug":129,"name":130,"articles":131},"browser","Browser",7,{"slug":133,"name":134,"articles":53},"grammar","Grammar",{"slug":136,"name":137,"articles":138},"html","Html",5,{"slug":140,"name":141,"articles":138},"node","Node",[143,144,145,146,147,148,149,150,151,152,153,154,155,159,162,165,168,171,172,175,178,181,184,187,190,193,196,199,202,205],{"slug":67,"name":68,"color":50,"articles":104},{"slug":71,"name":72,"color":50,"articles":106},{"slug":108,"name":109,"color":50,"articles":110},{"slug":112,"name":113,"color":50,"articles":114},{"slug":96,"name":97,"color":50,"articles":116},{"slug":118,"name":119,"color":50,"articles":101},{"slug":121,"name":122,"color":50,"articles":123},{"slug":125,"name":126,"color":50,"articles":127},{"slug":129,"name":130,"color":50,"articles":131},{"slug":133,"name":134,"color":50,"articles":53},{"slug":140,"name":141,"color":50,"articles":138},{"slug":136,"name":137,"color":50,"articles":138},{"slug":156,"name":157,"color":50,"articles":158},"programming","Programming",4,{"slug":160,"name":161,"color":50,"articles":158},"apis","Apis",{"slug":163,"name":164,"color":50,"articles":158},"accessibility","Accessibility",{"slug":166,"name":167,"color":50,"articles":43},"ai","Ai",{"slug":169,"name":170,"color":50,"articles":31},"nextjs","Nextjs",{"slug":63,"name":64,"color":50,"articles":31},{"slug":173,"name":174,"color":50,"articles":31},"async","Async",{"slug":176,"name":177,"color":50,"articles":31},"english","English",{"slug":179,"name":180,"color":50,"articles":31},"verbs","Verbs",{"slug":182,"name":183,"color":50,"articles":31},"spanish","Spanish",{"slug":185,"name":186,"color":50,"articles":31},"a1","A1",{"slug":188,"name":189,"color":50,"articles":31},"a2","A2",{"slug":191,"name":192,"color":50,"articles":31},"tenses","Tenses",{"slug":194,"name":195,"color":50,"articles":31},"turkish","Turkish",{"slug":197,"name":198,"color":50,"articles":31},"career","Career",{"slug":200,"name":201,"color":50,"articles":31},"beginners","Beginners",{"slug":203,"name":204,"color":50,"articles":31},"productivity","Productivity",{"slug":206,"name":207,"color":50,"articles":31},"discuss","Discuss"]