[{"data":1,"prerenderedAt":319},["ShallowReactive",2],{"portfolio":3},{"defaultFps":4,"defaultWidth":5,"defaultHeight":5,"videos":6},8,192,[7,39,62,107,133,156,179,203,226,247,271,288,302],{"id":8,"title":9,"description":10,"category":11,"video":12,"logo":13,"displays":14,"colors":23,"projectUrl":17},"gottiles","Gottiles","Tilemap world editor with layers, auto-tiling, and collision detection","gamedev","neon.mp4","/logos/site-gottiles.png",[15],{"type":16,"url":17,"width":18,"height":19,"title":20,"previewUrl":13,"textDisplay":21,"padding":22},"iframe","https://gottil.es",1280,800,"Gottiles Live","bottom",0,[24,27,30,33,36],{"color":25,"percent":26},"#FDF0D2",34,{"color":28,"percent":29},"#252E4B",22,{"color":31,"percent":32},"#5F878B",19,{"color":34,"percent":35},"#B3C7B9",14,{"color":37,"percent":38},"#DE8857",11,{"id":40,"title":41,"description":42,"category":11,"video":12,"logo":43,"displays":44,"colors":48,"projectUrl":46},"gotti-js","Gotti.js","Multiplayer ECS game framework with client prediction and server reconciliation","/logos/site-gotti-js.png",[45],{"type":16,"url":46,"width":18,"height":19,"title":47,"previewUrl":43,"textDisplay":21,"padding":22},"https://sandbox.gottijs.com","Gotti.js Sandbox",[49,52,54,57,60],{"color":50,"percent":51},"#5F8FBD",23,{"color":53,"percent":29},"#485B79",{"color":55,"percent":56},"#193353",21,{"color":58,"percent":59},"#0F1E38",17,{"color":61,"percent":59},"#0C0F18",{"id":63,"title":64,"description":65,"category":11,"video":12,"logo":66,"topLevelDescription":67,"moons":70,"colors":93},"itch-io","Game Jam Submissions","Collection of game jam entries on itch.io","/logos/itch-io.png",{"text":68,"position":69},"I participate in game jams to challenge both myself and my framework, \u003ClinkToPlanet=\"gotti-js\">Gotti.js\u003C/linkToPlanet>","top",[71,82],{"id":72,"title":73,"description":74,"logo":75,"displays":76},"skeet-ninja","Skeet Ninja","Publisher's winning choice for Score Space Game Jam #12","/logos/skeet-ninja.png",[77],{"type":16,"url":78,"width":79,"height":80,"title":81,"textDisplay":21,"padding":22},"https://itch.io/embed-upload/3571556?color=333333",1152,788,"Skeet Ninja Play",{"id":83,"title":84,"description":85,"logo":86,"displays":87},"snes-crossing","SNES Crossing","Retro Game Jam 2021 entry, old school SNES take on Animal Crossing.","/logos/animal-crossing.png",[88],{"type":16,"url":89,"width":90,"height":91,"title":92,"textDisplay":21,"padding":22},"https://itch.io/embed-upload/3486668?color=333333",1100,720,"SNES Crossing Play",[94,97,99,102,105],{"color":95,"percent":96},"#BFF7E1",51,{"color":98,"percent":32},"#D1E1C4",{"color":100,"percent":101},"#DDC3AF",12,{"color":103,"percent":104},"#EA988D",9,{"color":106,"percent":104},"#D1FAE9",{"id":108,"title":109,"description":110,"category":111,"video":12,"logo":112,"projectUrl":113,"displays":114,"colors":118},"roundrobin","RoundRob.in","Parallel LLM prompt aggregator for comparing and combining AI responses","ai","/logos/site-roundrobin.svg","https://roundrob.in",[115],{"type":16,"url":113,"width":18,"height":19,"title":116,"previewUrl":117,"textDisplay":21,"padding":22},"RoundRob.in Live App","/logos/roundrobin.png",[119,122,125,128,131],{"color":120,"percent":121},"#FFCDB4",31,{"color":123,"percent":124},"#F3D7BF",30,{"color":126,"percent":127},"#FFBAAC",16,{"color":129,"percent":130},"#CADFC5",15,{"color":132,"percent":4},"#E7E5D2",{"id":134,"title":135,"description":136,"category":111,"video":12,"logo":137,"projectUrl":138,"displays":139,"colors":143},"ai-art","Pixel Genie","AI-powered pixel art generator with style transfer and upscaling","/logos/site-ai-art.svg","https://pixelgenie.app/tool",[140],{"type":16,"url":138,"width":18,"height":19,"title":141,"previewUrl":142,"textDisplay":21,"padding":22},"PixelGenie Tool","/logos/ai-art.png",[144,146,148,150,153],{"color":145,"percent":124},"#FFA8A4",{"color":147,"percent":56},"#FFB4AA",{"color":149,"percent":56},"#FFC0B4",{"color":151,"percent":152},"#FF999C",18,{"color":154,"percent":155},"#FFCBC1",10,{"id":157,"title":158,"description":159,"category":111,"video":12,"logo":160,"displays":161,"colors":165,"projectUrl":163},"ditto","Ditto","Real-time AI voice changer and voice cloning software","/logos/site-ditto.svg",[162],{"type":16,"url":163,"width":18,"height":19,"title":164,"previewUrl":160,"textDisplay":21,"padding":22},"https://ditto.audio","ditto.audio",[166,169,172,174,177],{"color":167,"percent":168},"#FCD7C5",37,{"color":170,"percent":171},"#EFDBD5",20,{"color":173,"percent":152},"#FFC8B8",{"color":175,"percent":176},"#FFB0AD",13,{"color":178,"percent":101},"#DAD2DD",{"id":180,"title":181,"description":182,"category":111,"video":12,"logo":183,"projectUrl":184,"displays":185,"colors":189},"cardagain","cardaga.in","Spaced-repetition flashcards that import your Anki collection and schedule it with FSRS","/logos/site-cardagain.svg","https://cardaga.in",[186],{"type":187,"url":188,"title":181,"textDisplay":21,"padding":22},"image","/previews/cardagain-home.png",[190,192,195,197,200],{"color":191,"percent":168},"#FEB87E",{"color":193,"percent":194},"#FEFDFC",35,{"color":196,"percent":29},"#FB9465",{"color":198,"percent":199},"#FDE0D4",4,{"color":201,"percent":202},"#FCC2A9",2,{"id":204,"title":205,"description":206,"category":207,"video":12,"githubUrl":208,"logo":209,"displays":210,"colors":214,"projectUrl":212},"pixi-dom","Pixi DOM","DOM-like UI components for PixiJS with flexbox layout and event handling","libraries","https://github.com/visgotti/PixiDom","/logos/pixi-dom.png",[211],{"type":16,"url":212,"width":213,"height":19},"https://visgotti.github.io/PixiDom/",1200,[215,218,220,222,224],{"color":216,"percent":217},"#F4E8C8",33,{"color":219,"percent":51},"#E5EACA",{"color":221,"percent":32},"#CFEECC",{"color":223,"percent":35},"#E8F0DB",{"color":225,"percent":38},"#BCE8DB",{"id":227,"title":228,"description":229,"category":207,"video":12,"logo":230,"githubUrl":231,"displays":232,"colors":235,"projectUrl":234},"lazy-virtual-scroll","Lazy Virtual Scroll","High-performance Vue component for virtual scrolling with lazy loading","/logos/lazy-virtual-scroll.png","https://github.com/visgotti/lazy-virtual-scroll",[233],{"type":16,"url":234,"width":213,"height":19},"https://visgotti.github.io/lazy-virtual-scroll/demo-react/",[236,239,241,243,245],{"color":237,"percent":238},"#C6ABD0",26,{"color":240,"percent":171},"#BA90BD",{"color":242,"percent":171},"#AA88B6",{"color":244,"percent":32},"#9F82B1",{"color":246,"percent":130},"#987EAE",{"id":248,"title":249,"description":250,"category":111,"video":12,"logo":251,"projectUrl":252,"displays":253,"colors":256},"litegen","LiteGen.ai","One API for every AI image and video model","/logos/site-litegen.png","https://litegen.ai",[254],{"type":16,"url":252,"width":18,"height":19,"title":255,"previewUrl":251,"textDisplay":21,"padding":22},"LiteGen.ai Live App",[257,260,263,266,269],{"color":258,"percent":259},"#2BB6E8",43,{"color":261,"percent":262},"#7249EE",40,{"color":264,"percent":265},"#A28FE9",7,{"color":267,"percent":268},"#D3E0F5",6,{"color":270,"percent":199},"#7D62E8",{"id":272,"title":273,"description":274,"category":275,"video":12,"logo":276,"displays":277,"colors":281,"projectUrl":279},"storefront-js","Storefront.js","JavaScript storefront framework","misc","/logos/site-storefront-js.svg",[278],{"type":16,"url":279,"width":18,"height":19,"title":280,"textDisplay":21,"padding":22},"https://storefrontjs.com","Storefront.js Live",[282,285],{"color":283,"percent":284},"#5AA9E6",55,{"color":286,"percent":287},"#7FC8F8",45,{"id":289,"title":290,"description":291,"category":275,"video":12,"logo":292,"displays":293,"colors":297,"projectUrl":295},"noop-shop","noop.shop","Online storefront","/logos/site-noop-shop.png",[294],{"type":16,"url":295,"width":18,"height":19,"title":296,"textDisplay":21,"padding":22},"https://noop.shop","noop.shop Live",[298,300],{"color":299,"percent":284},"#B892FF",{"color":301,"percent":287},"#E0AAFF",{"id":303,"title":304,"description":305,"category":275,"video":12,"logo":306,"projectUrl":307,"displays":308,"colors":311},"daplug-in","daplug.in","Visual audio-plugin builder — design a synth or effect in the browser and compile it to VST3, AU, or standalone","/logos/site-daplugin.png","https://daplug.in",[309],{"type":16,"url":307,"width":18,"height":19,"title":310,"previewUrl":306,"textDisplay":21,"padding":22},"da plug — Plugin Builder",[312,315,317],{"color":313,"percent":314},"#E6EDF3",72,{"color":316,"percent":29},"#E9F0F6",{"color":318,"percent":268},"#EDF3F8",1788888713727]