[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"\u002Fen\u002Fwriting":3,"content-writing-en":37},{"id":4,"title":5,"body":6,"date":27,"description":28,"extension":29,"meta":30,"navigation":31,"ogImage":27,"path":32,"robots":27,"schemaOrg":27,"seo":33,"sitemap":34,"stem":35,"__hash__":36},"content_en\u002Fen\u002F3.writing.md","Devlog",{"type":7,"value":8,"toc":24},"minimark",[9],[10,11,12,19],"writing",{},[13,14,16],"template",{"v-slot:title":15},"",[17,18,5],"p",{},[13,20,21],{"v-slot:subtitle":15},[17,22,23],{},"News, devlogs and behind the scenes of the studio and its games",{"title":15,"searchDepth":25,"depth":25,"links":26},2,[],null,"News, devlogs and behind the scenes of Appynamic, the game studio, and its games.","md",{},true,"\u002Fen\u002Fwriting",{"title":5,"description":28},{"loc":32},"en\u002F3.writing","z2TqPzqXrCiDEpFDcb1NryLz0lS_p2r1qU5z7oobYHY",[38,155,281,400,470,561,681,1756,1799],{"id":39,"title":40,"author":41,"body":42,"brand":140,"date":141,"description":142,"draft":143,"extension":29,"game":144,"image":145,"meta":146,"navigation":31,"ogImage":27,"path":147,"readingTime":148,"robots":27,"schemaOrg":27,"seo":149,"sitemap":150,"stem":151,"tags":152,"video":27,"__hash__":154},"articles_en\u002Fen\u002Farticles\u002Fdoku-hole-first-look.md","First look at Doku Hole: a little hole in the Doku universe","Appynamic",{"type":7,"value":43,"toc":134},[44,62,69,74,93,97,112,116,119,123,126],[17,45,46,50,51,56,57,61],{},[47,48,49],"strong",{},"Doku Hole"," is the next game of the Doku universe — the world of ",[52,53,55],"a",{"href":54},"\u002Ftap\u002Fen","Doku Tap","'s companions. The idea fits in one sentence: ",[58,59,60],"em",{},"you are a little hole, and the town needs tidying."," Everything smaller than you falls in; every bite makes you a little bigger, until whole buildings fit.",[17,63,64],{},[65,66],"img",{"alt":67,"src":68},"Doku Hole in the Rainbow meadow","\u002Fmedia\u002Fhole\u002Fshots\u002Fen\u002Fmeadow-play2.webp",[70,71,73],"h2",{"id":72},"four-cartoon-worlds","Four cartoon worlds",[17,75,76,77,80,81,84,85,88,89,92],{},"The Great Mess came through the Doku worlds last night, and each one has its own: honey pots and toadstools in the ",[47,78,79],{},"Rainbow meadow",", gift boxes and cupcakes in ",[47,82,83],{},"Candy town",", beach balls and sandcastles on ",[47,86,87],{},"the beach",", snowballs and igloos on the ",[47,90,91],{},"Snowy mountain",". Every world has its own music and its own air — petals, bubbles, sea foam or snow.",[70,94,96],{"id":95},"a-story-at-your-own-pace","A story, at your own pace",[17,98,99,100,103,104,107,108,111],{},"The ",[47,101,102],{},"Adventure"," — ",[58,105,106],{},"A hole grows up"," — tells the story in four chapters with Rainbow Cloud as your guide. There is no clock: take your time, and grow. Each chapter ends with a giant to tidy away: the giant toadstool, the leaning cake tower, the crooked lighthouse and the ice palace. Next to it there are levels with goals and stars, a ",[47,109,110],{},"Zen mode"," without a clock or a game over, and a free-play town.",[70,113,115],{"id":114},"no-pet-is-ever-eaten","No pet is ever eaten",[17,117,118],{},"The Doku pets live in these streets. When the hole catches one, it jumps right back out — and drops a coin. Things are \"tidied away\", never broken. The game has no ads and sells nothing: coins are earned by playing and only buy new looks for your hole (neon, magma, ice).",[70,120,122],{"id":121},"under-the-hood","Under the hood",[17,124,125],{},"Doku Hole runs on our own JavaScript engine built on three.js (WebGPU first, with a WebGL 2 fallback), with physics, crowds and GPU particles, aiming at a smooth 60 fps on a mid-range phone. It is played with a floating joystick that appears under your thumb.",[17,127,128,129,133],{},"The game is still in development. You can already ",[52,130,132],{"href":131},"\u002Fhole\u002Fen#play","have a go at the little hole"," right in your browser — and we will tell you more here soon.",{"title":15,"searchDepth":25,"depth":25,"links":135},[136,137,138,139],{"id":72,"depth":25,"text":73},{"id":95,"depth":25,"text":96},{"id":114,"depth":25,"text":115},{"id":121,"depth":25,"text":122},"appynamic","2026-10-16","Our next game: drive a hungry little hole through four cartoon Doku worlds, swallow what is smaller than you and grow — without ever eating a pet.",false,"hole","\u002Fmedia\u002Fhole\u002Fog-en.jpg",{},"\u002Fen\u002Farticles\u002Fdoku-hole-first-look","3",{"title":40,"description":142},{"loc":147},"en\u002Farticles\u002Fdoku-hole-first-look",[49,5,153],"Kids","S0_hiUFWQiNNSC9KA210UhXb8RFlHNdoNu2fQ4FqDag",{"id":156,"title":157,"author":41,"body":158,"brand":140,"date":141,"description":269,"draft":143,"extension":29,"game":27,"image":270,"meta":271,"navigation":31,"ogImage":27,"path":272,"readingTime":273,"robots":27,"schemaOrg":27,"seo":274,"sitemap":275,"stem":276,"tags":277,"video":27,"__hash__":280},"articles_en\u002Fen\u002Farticles\u002Fnew-studio-site.md","Behind the new studio site: real gameplay, every game in its players' language",{"type":7,"value":159,"toc":263},[160,167,171,201,209,213,224,228,256,260],[17,161,162,163,166],{},"The Appynamic site was a single page with a rainbow logo. It is now the ",[47,164,165],{},"hub of the studio",", with a site for each game — and this blog.",[70,168,170],{"id":169},"one-micro-site-per-game","One micro-site per game",[17,172,173,176,177,181,182,176,185,188,189,192,193,196,197,200],{},[52,174,55],{"href":175},"\u002Ftap"," and ",[52,178,180],{"href":179},"\u002Fsquishy","Poyo Jelly"," each have their own landing page, their own ",[47,183,184],{},"privacy policy",[47,186,187],{},"terms of use",", and their own languages: seven for Doku Tap (en, fr, es, it, de, pt, nl), French and English for Poyo Jelly, whose name even changes with the language (",[58,190,191],{},"Gelée Poyo"," in French). Visiting ",[194,195,175],"code",{}," opens the site in your language; ",[194,198,199],{},"\u002Ftap\u002Fde"," always opens it in German.",[17,202,203,204,208],{},"Each page has something to play: a mini Doku grid that only ever has one solution, a Poyo to squish, a tower that builds itself as you scroll on ",[52,205,207],{"href":206},"\u002Fen\u002Fstack","Stack Up",".",[70,210,212],{"id":211},"real-gameplay-not-mock-ups","Real gameplay, not mock-ups",[17,214,215,216,219,220,223],{},"The clips are the games themselves. Our ",[47,217,218],{},"AI Studio"," — the tool that makes our store screenshots — launches each game in a browser with a frozen clock and films it ",[47,221,222],{},"frame by frame",", 1\u002F30 s at a time, so every take is reproducible. Doku Tap's clips are cut from those rushes; Poyo Jelly's is animated from its in-game captures for now (its own rushes are next); Stack Up's was filmed from its web version by a small auto-player.",[70,225,227],{"id":226},"a-few-rules","A few rules",[229,230,231,238,244,250],"ul",{},[232,233,234,237],"li",{},[47,235,236],{},"No AdSense on game pages",": Poyo Jelly is a kids' game with no ads, its site has none either.",[232,239,240,243],{},[47,241,242],{},"Fonts are self-hosted",": a kids' page doesn't call Google to draw its letters.",[232,245,246,249],{},[47,247,248],{},"Videos only play while on screen",", and visitors who ask for reduced motion get a still image.",[232,251,252,255],{},[47,253,254],{},"Privacy policies are written from the code",", and say what the game does — not what we'd like it to do.",[70,257,259],{"id":258},"built-with","Built with",[17,261,262],{},"Nuxt 4 and Nuxt Content for pages and posts, Vue 3 and motion-v for the animations, Tailwind CSS 4, deployed on Vercel. The games themselves are built with the same web stack and shipped with Capacitor.",{"title":15,"searchDepth":25,"depth":25,"links":264},[265,266,267,268],{"id":169,"depth":25,"text":170},{"id":211,"depth":25,"text":212},{"id":226,"depth":25,"text":227},{"id":258,"depth":25,"text":259},"One hub, one micro-site per game, gameplay filmed frame by frame by our AI Studio, and a few rules: no AdSense on kids' pages, self-hosted fonts, privacy policies written from the code.","\u002Fimages\u002Farticles\u002Fstudio-site-2026.jpg",{},"\u002Fen\u002Farticles\u002Fnew-studio-site","4",{"title":157,"description":269},{"loc":272},"en\u002Farticles\u002Fnew-studio-site",[278,279,5],"Studio","Nuxt","dy1IOI_AXRkm7mXX6dCMhNYjGoVD03l0s22cwiYTs_8",{"id":282,"title":283,"author":41,"body":284,"brand":140,"date":141,"description":389,"draft":143,"extension":29,"game":390,"image":391,"meta":392,"navigation":31,"ogImage":27,"path":393,"readingTime":273,"robots":27,"schemaOrg":27,"seo":394,"sitemap":395,"stem":396,"tags":397,"video":398,"__hash__":399},"articles_en\u002Fen\u002Farticles\u002Fpoyo-jelly-devlog-1.md","Poyo Jelly devlog #1: a game made for little hands",{"type":7,"value":285,"toc":384},[286,298,302,305,313,317,324,366,373,377],[17,287,288,290,291,293,294,297],{},[47,289,180],{}," (",[58,292,191],{}," in French) is our next game, and our first one made ",[47,295,296],{},"for children aged 4 to 9",". The Poyos are the squishy jellies of the Candy Kingdom: soft, wobbly, and very happy to be squeezed. The game is in closed testing on Google Play.",[70,299,301],{"id":300},"ten-ways-to-play-zero-rules-to-learn","Ten ways to play, zero rules to learn",[17,303,304],{},"Squish, the wardrobe, decorate, the parade, treats, bath time, the magic cauldron, the Jelly book, Squishy World and Chatter: there is no timer, no score to beat and no game over. Children touch, squish and make things up. There are 31 Poyos to discover — including four glow jellies that light up in the dark.",[17,306,307,308,312],{},"You can squish one ",[52,309,311],{"href":310},"\u002Fsquishy\u002Fen#play","on the game's site",": press, pull, let go.",[70,314,316],{"id":315},"the-rules-we-set-ourselves","The rules we set ourselves",[17,318,319,320,323],{},"A game for young children starts with what it does ",[47,321,322],{},"not"," do:",[229,325,326,336,342,348,355],{},[232,327,328,331,332,335],{},[47,329,330],{},"no advertising",", no advertising identifier, ",[47,333,334],{},"no in-app purchase",";",[232,337,338,341],{},[47,339,340],{},"no account",", no sign-up, no field where a child could type their name;",[232,343,344,347],{},[47,345,346],{},"no chat",", no contact with other players;",[232,349,350,351,354],{},"the settings sit in a ",[47,352,353],{},"parent area"," that opens with a 2-second long press — and the only link that leaves the game is in there;",[232,356,357,358,361,362,365],{},"in ",[58,359,360],{},"Chatter",", the Poyo answers in a funny voice: speech recognition runs ",[47,363,364],{},"on the device only",", nothing is recorded or sent.",[17,367,368,369,372],{},"The only data that leaves the phone is anonymous usage statistics and crash reports, which a parent can switch off. The ",[52,370,184],{"href":371},"\u002Fsquishy\u002Fen\u002Fprivacy"," describes the game exactly as the code does — and when that audit turned up something we were not happy with, it went to the to-do list rather than under the rug.",[70,374,376],{"id":375},"next","Next",[17,378,379,380,383],{},"The game will be published on Google Play first, then on the App Store. Until then, the ",[52,381,382],{"href":179},"game site"," is live in French and English.",{"title":15,"searchDepth":25,"depth":25,"links":385},[386,387,388],{"id":300,"depth":25,"text":301},{"id":315,"depth":25,"text":316},{"id":375,"depth":25,"text":376},"Squish, dress up and collect 31 jelly Poyos. How we design a game for ages 4 to 9: no ads, no account, a parent gate and a microphone that never leaves the device.","squishy","\u002Fmedia\u002Fsquishy\u002Fog-en.jpg",{},"\u002Fen\u002Farticles\u002Fpoyo-jelly-devlog-1",{"title":283,"description":389},{"loc":393},"en\u002Farticles\u002Fpoyo-jelly-devlog-1",[180,5,153],"\u002Fmedia\u002Fsquishy\u002Fvideo\u002Fshowreel-en.mp4","ZP4pA59jVC7Wzf5NVoYUekAuzXeO8lGHvySu2oaibjg",{"id":401,"title":402,"author":41,"body":403,"brand":140,"date":141,"description":456,"draft":143,"extension":29,"game":457,"image":458,"meta":459,"navigation":31,"ogImage":27,"path":460,"readingTime":461,"robots":27,"schemaOrg":27,"seo":462,"sitemap":463,"stem":464,"tags":465,"video":468,"__hash__":469},"articles_en\u002Fen\u002Farticles\u002Fstack-up-in-your-browser.md","Stack Up now plays in your browser",{"type":7,"value":404,"toc":454},[405,413,420,442,445],[17,406,407,103,409,412],{},[47,408,207],{},[58,410,411],{},"Tower Blocks"," — is the simplest of our games: a block slides over the tower, you tap, and whatever hangs over the edge is sliced off. The next block is only as wide as what's left, and blocks speed up as the tower grows.",[17,414,415,416,419],{},"Its ",[52,417,418],{"href":206},"new page"," has two things to try:",[229,421,422,432],{},[232,423,424,427,428,431],{},[47,425,426],{},"a web version",", playable in a phone frame. It only loads when you press ",[58,429,430],{},"Play",", because it pulls Three.js and its fonts from public CDNs — nothing leaves for a third party before that;",[232,433,434,437,438,441],{},[47,435,436],{},"a tower that builds itself as you scroll",", floor by floor, with the same pastel colours as the game (",[194,439,440],{},"sin(0.3 · n) · 55 + 200"," on each channel, if you're curious).",[17,443,444],{},"The gameplay clip on the page was filmed from that same web build by a tiny auto-player that taps when the moving block crosses the one below — and misses on purpose every few floors, so you can see the tower get trimmed.",[17,446,447,448,208],{},"Stack Up is on ",[52,449,453],{"href":450,"rel":451},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.appynamic.stack",[452],"nofollow","Google Play",{"title":15,"searchDepth":25,"depth":25,"links":455},[],"Our one-tap tower game has a new page, with a web version you can play right away and a tower that builds itself as you scroll.","stack","\u002Fimages\u002Farticles\u002Fstack-up-web.jpg",{},"\u002Fen\u002Farticles\u002Fstack-up-in-your-browser","2",{"title":402,"description":456},{"loc":460},"en\u002Farticles\u002Fstack-up-in-your-browser",[207,466,467],"Web","Arcade","\u002Fmedia\u002Fstack\u002Fvideo\u002Fgameplay.mp4","rzSZS7KwgOqjQL2lgPmb_ojIdGFukSBXCdgIMbQAtMQ",{"id":471,"title":472,"author":41,"body":473,"brand":548,"date":549,"description":550,"draft":143,"extension":29,"game":27,"image":480,"meta":551,"navigation":31,"ogImage":27,"path":552,"readingTime":273,"robots":27,"schemaOrg":27,"seo":553,"sitemap":554,"stem":555,"tags":556,"video":27,"__hash__":560},"apps_en\u002Fen\u002Fapps\u002Folhain-flora-guide.md","Olhain: the forest, the moated castle and the Fairies' Table",{"type":7,"value":474,"toc":543},[475,481,489,493,503,510,514,521,525,536],[17,476,477],{},[65,478],{"alt":479,"src":480},"Olhain, as a cartoon","\u002Fmedia\u002Folhain\u002Fog-en.jpg",[17,482,483,484,488],{},"Olhain sits on the first ridge of the Artois hills, in the Pas-de-Calais. Three places make it special — and they are the heart of our ",[52,485,487],{"href":486},"\u002Folhain\u002Fen","Olhain micro-site",", where they are drawn as a cartoon, and of the adventure game we are preparing.",[70,490,492],{"id":491},"an-ancestral-forest","An ancestral forest",[17,494,99,495,498,499,502],{},[47,496,497],{},"state forest of Olhain"," covers about 290 hectares. With its hillside it is listed as a ZNIEFF (a natural area of ecological, faunal and floral interest) and it is managed by the national forest office, the ONF. A LIDAR survey by the ONF revealed something nobody had seen: a large ",[47,500,501],{},"Middle Neolithic enclosure",", about 6,000 years old — two ditches, a bank and three entrances — hidden under the trees. The \"Bois d'Olhain\" site has been a listed historic monument since 15 June 2023.",[17,504,505,506,509],{},"Next to it, the ",[47,507,508],{},"Olhain county park"," (inaugurated in 1973, 450 hectares, nearly 170 of them wooded) welcomes about 700,000 visitors a year.",[70,511,513],{"id":512},"a-castle-standing-on-the-water","A castle standing on the water",[17,515,516,517,520],{},"In Fresnicourt-le-Dolmen, the ",[47,518,519],{},"Château d'Olhain"," rises from the middle of its moat: two bridges, a gatehouse, a guard tower over 30 m high, the guards' hall with its sandstone fireplace bearing the Berghes coat of arms. The present castle dates from the early 15th century (oak timber was delivered for works on the \"hôtel d'Olehain\" in 1407); it was taken, occupied and damaged in the wars of the 17th and 18th centuries, and has been listed as a historic monument since 12 April 1989. It is privately owned and opens on some afternoons in the warm season.",[70,522,524],{"id":523},"the-fairies-table","The Fairies' Table",[17,526,527,528,531,532,535],{},"In the village, a huge stone slab of about 3 m by 2.5 m rests on three standing stones: the ",[47,529,530],{},"dolmen of Fresnicourt",", the ",[58,533,534],{},"Table des Fées",", listed since 1889. Legend says that \"white ladies\" come to dance in a ring around it…",[17,537,538,539,208],{},"Every fact above comes from the sources listed at the bottom of the ",[52,540,542],{"href":541},"\u002Folhain\u002Fen#castle","Olhain page",{"title":15,"searchDepth":25,"depth":25,"links":544},[545,546,547],{"id":491,"depth":25,"text":492},{"id":512,"depth":25,"text":513},{"id":523,"depth":25,"text":524},"olhain","16\u002F10\u002F2026","A short guide to Olhain in the Artois hills: a 290-hectare state forest with a 6,000-year-old enclosure under its trees, one of the best-preserved medieval castles of northern France, and the dolmen of Fresnicourt.",{},"\u002Fen\u002Fapps\u002Folhain-flora-guide",{"title":472,"description":550},{"loc":552},"en\u002Fapps\u002Folhain-flora-guide",[557,558,559],"Nature","History","Guide","Q4ki-rLir1uSJrVJvt9Q9MiEMUOdrxfLcY8NoIEv0Es",{"id":562,"title":563,"author":41,"body":564,"brand":140,"date":667,"description":668,"draft":143,"extension":29,"game":669,"image":670,"meta":671,"navigation":31,"ogImage":27,"path":672,"readingTime":148,"robots":27,"schemaOrg":27,"seo":673,"sitemap":674,"stem":675,"tags":676,"video":679,"__hash__":680},"articles_en\u002Fen\u002Farticles\u002Fdoku-tap-out-now.md","Doku Tap is out on Google Play",{"type":7,"value":565,"toc":662},[566,576,580,601,609,613,646,650,656],[17,567,568,570,571,575],{},[47,569,55],{}," is out on ",[52,572,453],{"href":573,"rel":574},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.appynamic.tap",[452],". It is a pure logic puzzle that mixes the reasoning of Sudoku with the deduction of Minesweeper, wrapped in a cozy world of companions.",[70,577,579],{"id":578},"three-rules-a-lot-of-thinking","Three rules, a lot of thinking",[229,581,582,588,594],{},[232,583,584,585,335],{},"the board is split into coloured regions: place ",[47,586,587],{},"exactly one companion in each",[232,589,590,593],{},[47,591,592],{},"one companion per row and per column",", like Sudoku;",[232,595,596,597,600],{},"companions ",[47,598,599],{},"never touch",", not even diagonally.",[17,602,603,604,608],{},"You have three hearts: every move must be deduced, guessing won't save you. You can try a 6×6 grid ",[52,605,607],{"href":606},"\u002Ftap\u002Fen#how","right on the game's site"," — the generator only keeps grids with a single solution, like the game's own level bank.",[70,610,612],{"id":611},"around-the-puzzle","Around the puzzle",[229,614,615,621,627,634,640],{},[232,616,617,620],{},[47,618,619],{},"8 bonus mini-games",": Tap, Pet Connect, Bubble Pop, Pet Match, Slide, Doku Rush, Busking and the Zen Garden, all included;",[232,622,623,626],{},[47,624,625],{},"60 companions"," to collect (32 common, 14 rare, 8 gold, 6 legendary);",[232,628,629,630,633],{},"more than ",[47,631,632],{},"16,000 grids",", a daily challenge, a 7-day reward cycle with streak freezes;",[232,635,636,637,335],{},"smart hints, a rules guide for every mode and an ",[47,638,639],{},"easy mode gentle enough for kids",[232,641,642,645],{},[47,643,644],{},"63 languages"," in the game.",[70,647,649],{"id":648},"what-we-chose-not-to-do","What we chose not to do",[17,651,652,653,208],{},"Doku Tap has no account and no sign-up: your progress stays on your phone. Google Play Games is optional (leaderboards, achievements, cloud save). The game is funded by ads — with the consent message required in Europe — and a single purchase removes them for good. Everything is written down, from the code, in the ",[52,654,184],{"href":655},"\u002Ftap\u002Fen\u002Fprivacy",[17,657,658,659,208],{},"The game site now speaks seven languages: ",[52,660,661],{"href":175},"appynamic.com\u002Ftap",{"title":15,"searchDepth":25,"depth":25,"links":663},[664,665,666],{"id":578,"depth":25,"text":579},{"id":611,"depth":25,"text":612},{"id":648,"depth":25,"text":649},"2026-09-17","Our pet logic puzzle is live: one companion per row, column and colour, 8 bonus mini-games, a Zen Garden and 60 companions to collect.","tap","\u002Fmedia\u002Ftap\u002Fog.jpg",{},"\u002Fen\u002Farticles\u002Fdoku-tap-out-now",{"title":563,"description":668},{"loc":672},"en\u002Farticles\u002Fdoku-tap-out-now",[55,677,678],"Release","Puzzle","\u002Fmedia\u002Ftap\u002Fvideo\u002Fshowreel-en.mp4","7Z9m9YZ4J7fz_Gfo09Q1y1K1Bm-Po0ATttKCWrashGw",{"id":682,"title":683,"author":41,"body":684,"brand":140,"date":1744,"description":694,"draft":143,"extension":29,"game":27,"image":691,"meta":1745,"navigation":31,"ogImage":27,"path":1746,"readingTime":1747,"robots":27,"schemaOrg":27,"seo":1748,"sitemap":1749,"stem":1750,"tags":1751,"video":27,"__hash__":1755},"articles_en\u002Fen\u002Farticles\u002F5-amazing-raycast-nuxt-snippets.md","5 Amazing Raycast Snippets for Enhancing Your Nuxt (Vue) Projects",{"type":7,"value":685,"toc":1728},[686,692,695,699,702,706,709,719,725,733,738,747,967,974,983,991,1084,1091,1097,1105,1309,1316,1322,1329,1398,1405,1410,1418,1689,1693,1698,1701,1705,1708,1712,1715,1719,1722,1725],[17,687,688],{},[65,689],{"alt":690,"src":691},"preview","\u002Fimages\u002Farticles\u002F5-raycast-snippets.jpg",[17,693,694],{},"In the realm of web development, where efficiency is as valuable as expertise, tools that streamline and simplify our workflow are indispensable. Among these, Raycast snippets emerge as a powerful ally, especially for those working with Nuxt and Vue frameworks. But what exactly are these snippets, and how can they transform your development experience?",[70,696,698],{"id":697},"what-are-raycast-snippets","What Are Raycast Snippets?",[17,700,701],{},"Raycast snippets are small, reusable pieces of text or code that can be quickly inserted into your work. Think of them as shortcuts for frequently used content - whether it's code, canned email responses, or even emojis. They are designed to save time and reduce repetitive typing, allowing developers and writers to work more efficiently.",[70,703,705],{"id":704},"how-to-use-raycast-snippets","How to Use Raycast Snippets",[17,707,708],{},"Using Raycast snippets is straightforward. Once you've created or imported a snippet within the Raycast app, you can assign a specific keyword to it. This keyword acts as a trigger - whenever you type it in any application, the snippet will automatically expand in place, replacing the keyword with the full text or code of the snippet.",[17,710,711,712,715,716,718],{},"For instance, if you have a snippet for a standard email sign-off, you can assign a keyword like ",[194,713,714],{},"sig1",". Typing ",[194,717,714],{}," in an email will then automatically expand to the full signature text. This feature is especially useful in coding, where you can have snippets for common code patterns or configurations.",[17,720,721],{},[65,722],{"alt":723,"src":724},"snippets-exemple","\u002Fimages\u002Farticles\u002Fsnippets-exemple.gif",[726,727,729,730],"h3",{"id":728},"component-template-comp","Component Template: ",[194,731,732],{},"!comp",[17,734,99,735,737],{},[194,736,732],{}," snippet is a basic yet powerful template for creating new Vue components. It includes a script setup with TypeScript support, a template section, and scoped styling. This snippet is ideal for rapidly scaffolding new components in your project.",[17,739,740,743,744,746],{},[47,741,742],{},"Usage Example:"," Use ",[194,745,732],{}," to quickly create new Vue components, ensuring consistency and saving time on setup.",[748,749,754],"pre",{"className":750,"code":751,"filename":752,"language":753,"meta":15,"style":15},"language-vue shiki shiki-themes github-light github-dark github-dark","\u003Cscript setup lang=\"ts\">\nimport type { PropType } from \"vue\";\n\nconst props = defineProps({\n item: {\n  type: String, \n  required: true\n }\n});\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Ch1>{{ item }}\u003C\u002Fh1>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cstyle scoped>\n\n\u003C\u002Fstyle>\n","MyComponent.vue","vue",[194,755,756,786,807,813,832,838,844,853,859,865,875,880,889,900,916,926,935,940,953,958],{"__ignoreMap":15},[757,758,761,765,769,773,776,779,783],"span",{"class":759,"line":760},"line",1,[757,762,764],{"class":763},"slsVL","\u003C",[757,766,768],{"class":767},"sByVh","script",[757,770,772],{"class":771},"shcOC"," setup",[757,774,775],{"class":771}," lang",[757,777,778],{"class":763},"=",[757,780,782],{"class":781},"sfrk1","\"ts\"",[757,784,785],{"class":763},">\n",[757,787,788,792,795,798,801,804],{"class":759,"line":25},[757,789,791],{"class":790},"so5gQ","import",[757,793,794],{"class":790}," type",[757,796,797],{"class":763}," { PropType } ",[757,799,800],{"class":790},"from",[757,802,803],{"class":781}," \"vue\"",[757,805,806],{"class":763},";\n",[757,808,810],{"class":759,"line":809},3,[757,811,812],{"emptyLinePlaceholder":31},"\n",[757,814,816,819,823,826,829],{"class":759,"line":815},4,[757,817,818],{"class":790},"const",[757,820,822],{"class":821},"suiK_"," props",[757,824,825],{"class":790}," =",[757,827,828],{"class":771}," defineProps",[757,830,831],{"class":763},"({\n",[757,833,835],{"class":759,"line":834},5,[757,836,837],{"class":763}," item: {\n",[757,839,841],{"class":759,"line":840},6,[757,842,843],{"class":763},"  type: String, \n",[757,845,847,850],{"class":759,"line":846},7,[757,848,849],{"class":763},"  required: ",[757,851,852],{"class":821},"true\n",[757,854,856],{"class":759,"line":855},8,[757,857,858],{"class":763}," }\n",[757,860,862],{"class":759,"line":861},9,[757,863,864],{"class":763},"});\n",[757,866,868,871,873],{"class":759,"line":867},10,[757,869,870],{"class":763},"\u003C\u002F",[757,872,768],{"class":767},[757,874,785],{"class":763},[757,876,878],{"class":759,"line":877},11,[757,879,812],{"emptyLinePlaceholder":31},[757,881,883,885,887],{"class":759,"line":882},12,[757,884,764],{"class":763},[757,886,13],{"class":767},[757,888,785],{"class":763},[757,890,892,895,898],{"class":759,"line":891},13,[757,893,894],{"class":763},"  \u003C",[757,896,897],{"class":767},"div",[757,899,785],{"class":763},[757,901,903,906,909,912,914],{"class":759,"line":902},14,[757,904,905],{"class":763},"    \u003C",[757,907,908],{"class":767},"h1",[757,910,911],{"class":763},">{{ item }}\u003C\u002F",[757,913,908],{"class":767},[757,915,785],{"class":763},[757,917,919,922,924],{"class":759,"line":918},15,[757,920,921],{"class":763},"  \u003C\u002F",[757,923,897],{"class":767},[757,925,785],{"class":763},[757,927,929,931,933],{"class":759,"line":928},16,[757,930,870],{"class":763},[757,932,13],{"class":767},[757,934,785],{"class":763},[757,936,938],{"class":759,"line":937},17,[757,939,812],{"emptyLinePlaceholder":31},[757,941,943,945,948,951],{"class":759,"line":942},18,[757,944,764],{"class":763},[757,946,947],{"class":767},"style",[757,949,950],{"class":771}," scoped",[757,952,785],{"class":763},[757,954,956],{"class":759,"line":955},19,[757,957,812],{"emptyLinePlaceholder":31},[757,959,961,963,965],{"class":759,"line":960},20,[757,962,870],{"class":763},[757,964,947],{"class":767},[757,966,785],{"class":763},[726,968,970,971],{"id":969},"api-handler-template-api","API Handler Template: ",[194,972,973],{},"!api",[17,975,976,977,979,980,982],{},"Handling API requests is a common task in modern web applications. The ",[194,978,973],{}," snippet provides a template for creating API handlers using ",[194,981,726],{},", a lightweight HTTP toolkit. This snippet streamlines the process of setting up API routes and handling requests.",[17,984,985,987,988,990],{},[47,986,742],{}," Implement the ",[194,989,973],{}," snippet for creating efficient API routes in your Nuxt application, especially when dealing with CRUD operations.",[748,992,997],{"className":993,"code":994,"filename":995,"language":996,"meta":15,"style":15},"language-ts shiki shiki-themes github-light github-dark github-dark","import { H3Event } from \"h3\";\n\nexport default defineEventHandler(async (event: H3Event) => {\n  const body = await readBody(event);\n  \u002F\u002F your_api_logic\n});\n","~\u002Fserver\u002Fapi\u002FMyHandler.ts","ts",[194,998,999,1013,1017,1055,1074,1080],{"__ignoreMap":15},[757,1000,1001,1003,1006,1008,1011],{"class":759,"line":760},[757,1002,791],{"class":790},[757,1004,1005],{"class":763}," { H3Event } ",[757,1007,800],{"class":790},[757,1009,1010],{"class":781}," \"h3\"",[757,1012,806],{"class":763},[757,1014,1015],{"class":759,"line":25},[757,1016,812],{"emptyLinePlaceholder":31},[757,1018,1019,1022,1025,1028,1031,1034,1036,1040,1043,1046,1049,1052],{"class":759,"line":809},[757,1020,1021],{"class":790},"export",[757,1023,1024],{"class":790}," default",[757,1026,1027],{"class":771}," defineEventHandler",[757,1029,1030],{"class":763},"(",[757,1032,1033],{"class":790},"async",[757,1035,290],{"class":763},[757,1037,1039],{"class":1038},"sQHwn","event",[757,1041,1042],{"class":790},":",[757,1044,1045],{"class":771}," H3Event",[757,1047,1048],{"class":763},") ",[757,1050,1051],{"class":790},"=>",[757,1053,1054],{"class":763}," {\n",[757,1056,1057,1060,1063,1065,1068,1071],{"class":759,"line":815},[757,1058,1059],{"class":790},"  const",[757,1061,1062],{"class":821}," body",[757,1064,825],{"class":790},[757,1066,1067],{"class":790}," await",[757,1069,1070],{"class":771}," readBody",[757,1072,1073],{"class":763},"(event);\n",[757,1075,1076],{"class":759,"line":834},[757,1077,1079],{"class":1078},"sCsY4","  \u002F\u002F your_api_logic\n",[757,1081,1082],{"class":759,"line":840},[757,1083,864],{"class":763},[726,1085,1087,1088],{"id":1086},"state-management-with-pinia-store","State Management with Pinia: ",[194,1089,1090],{},"!store",[17,1092,1093,1094,1096],{},"State management is crucial in large-scale applications. The ",[194,1095,1090],{}," snippet utilizes Pinia, a Vue store, offering a structured template for managing application state. It includes a state definition, getters, and actions.",[17,1098,1099,1101,1102,1104],{},[47,1100,742],{}," Utilize ",[194,1103,1090],{}," for setting up store modules in your Nuxt\u002FVue app, managing state more effectively and cleanly. the { clipboard } while be replaced by your actual clipboard.",[748,1106,1112],{"className":993,"code":1107,"filename":1108,"highlights":1109,"language":996,"meta":1111,"style":15},"import { defineStore } from 'pinia';\n\ntype {clipboard}Store = { \n  count: number;\n} \n\nexport const use{clipboard}Store = defineStore('{clipboard}', {\n  state: (): {clipboard}Store => ({ \n    count: 0,\n  }), \n  getters: { \n    getCount(): number { \n      return this.count; \n    }\n  },\n  actions: { \n    increment() {\n      this.count++; \n    }, \n  } \n});\n","~\u002Fstore\u002F{clipboard}.ts",[1110],0,"[~\u002Fstore\u002F.ts]",[194,1113,1114,1128,1132,1142,1147,1152,1156,1182,1210,1221,1226,1231,1246,1257,1262,1267,1272,1280,1294,1299,1304],{"__ignoreMap":15},[757,1115,1116,1118,1121,1123,1126],{"class":759,"line":760},[757,1117,791],{"class":790},[757,1119,1120],{"class":763}," { defineStore } ",[757,1122,800],{"class":790},[757,1124,1125],{"class":781}," 'pinia'",[757,1127,806],{"class":763},[757,1129,1130],{"class":759,"line":25},[757,1131,812],{"emptyLinePlaceholder":31},[757,1133,1134,1137,1139],{"class":759,"line":809},[757,1135,1136],{"class":763},"type {clipboard}Store ",[757,1138,778],{"class":790},[757,1140,1141],{"class":763}," { \n",[757,1143,1144],{"class":759,"line":815},[757,1145,1146],{"class":763},"  count: number;\n",[757,1148,1149],{"class":759,"line":834},[757,1150,1151],{"class":763},"} \n",[757,1153,1154],{"class":759,"line":840},[757,1155,812],{"emptyLinePlaceholder":31},[757,1157,1158,1160,1163,1166,1169,1171,1174,1176,1179],{"class":759,"line":846},[757,1159,1021],{"class":790},[757,1161,1162],{"class":790}," const",[757,1164,1165],{"class":821}," use",[757,1167,1168],{"class":763},"{clipboard}Store ",[757,1170,778],{"class":790},[757,1172,1173],{"class":771}," defineStore",[757,1175,1030],{"class":763},[757,1177,1178],{"class":781},"'{clipboard}'",[757,1180,1181],{"class":763},", {\n",[757,1183,1184,1187,1190,1192,1195,1198,1201,1204,1207],{"class":759,"line":855},[757,1185,1186],{"class":771},"  state",[757,1188,1189],{"class":763},": ()",[757,1191,1042],{"class":790},[757,1193,1194],{"class":763}," {",[757,1196,1197],{"class":1038},"clipboard",[757,1199,1200],{"class":763},"}",[757,1202,1203],{"class":771},"Store",[757,1205,1206],{"class":790}," =>",[757,1208,1209],{"class":763}," ({ \n",[757,1211,1212,1215,1218],{"class":759,"line":861},[757,1213,1214],{"class":763},"    count: ",[757,1216,1217],{"class":821},"0",[757,1219,1220],{"class":763},",\n",[757,1222,1223],{"class":759,"line":867},[757,1224,1225],{"class":763},"  }), \n",[757,1227,1228],{"class":759,"line":877},[757,1229,1230],{"class":763},"  getters: { \n",[757,1232,1233,1236,1239,1241,1244],{"class":759,"line":882},[757,1234,1235],{"class":771},"    getCount",[757,1237,1238],{"class":763},"()",[757,1240,1042],{"class":790},[757,1242,1243],{"class":821}," number",[757,1245,1141],{"class":763},[757,1247,1248,1251,1254],{"class":759,"line":891},[757,1249,1250],{"class":790},"      return",[757,1252,1253],{"class":821}," this",[757,1255,1256],{"class":763},".count; \n",[757,1258,1259],{"class":759,"line":902},[757,1260,1261],{"class":763},"    }\n",[757,1263,1264],{"class":759,"line":918},[757,1265,1266],{"class":763},"  },\n",[757,1268,1269],{"class":759,"line":928},[757,1270,1271],{"class":763},"  actions: { \n",[757,1273,1274,1277],{"class":759,"line":937},[757,1275,1276],{"class":771},"    increment",[757,1278,1279],{"class":763},"() {\n",[757,1281,1282,1285,1288,1291],{"class":759,"line":942},[757,1283,1284],{"class":821},"      this",[757,1286,1287],{"class":763},".count",[757,1289,1290],{"class":790},"++",[757,1292,1293],{"class":763},"; \n",[757,1295,1296],{"class":759,"line":955},[757,1297,1298],{"class":763},"    }, \n",[757,1300,1301],{"class":759,"line":960},[757,1302,1303],{"class":763},"  } \n",[757,1305,1307],{"class":759,"line":1306},21,[757,1308,864],{"class":763},[726,1310,1312,1313],{"id":1311},"composable-function-template-cps","Composable Function Template: ",[194,1314,1315],{},"!cps",[17,1317,1318,1319,1321],{},"Composable functions in Vue 3 bring reusability and organization to your code. The ",[194,1320,1315],{}," snippet offers a template for creating these functions, aiding in maintaining a clean and modular codebase.",[17,1323,1324,743,1326,1328],{},[47,1325,742],{},[194,1327,1315],{}," for creating reusable composable functions that can be shared across components, enhancing code reusability and maintainability.",[748,1330,1333],{"className":993,"code":1331,"filename":1332,"language":996,"meta":15,"style":15},"export function use{clipboard}() {\n  const {clipboard} = ref(null);\n  \n  \u002F\u002F Composable logic\n  \n  return { {clipboard} };\n}\n","~\u002Fcomposables\u002FuseComposables.ts",[194,1334,1335,1347,1371,1376,1381,1385,1393],{"__ignoreMap":15},[757,1336,1337,1339,1342,1344],{"class":759,"line":760},[757,1338,1021],{"class":790},[757,1340,1341],{"class":790}," function",[757,1343,1165],{"class":771},[757,1345,1346],{"class":763},"{clipboard}() {\n",[757,1348,1349,1351,1353,1355,1358,1360,1363,1365,1368],{"class":759,"line":25},[757,1350,1059],{"class":790},[757,1352,1194],{"class":763},[757,1354,1197],{"class":821},[757,1356,1357],{"class":763},"} ",[757,1359,778],{"class":790},[757,1361,1362],{"class":771}," ref",[757,1364,1030],{"class":763},[757,1366,1367],{"class":821},"null",[757,1369,1370],{"class":763},");\n",[757,1372,1373],{"class":759,"line":809},[757,1374,1375],{"class":763},"  \n",[757,1377,1378],{"class":759,"line":815},[757,1379,1380],{"class":1078},"  \u002F\u002F Composable logic\n",[757,1382,1383],{"class":759,"line":834},[757,1384,1375],{"class":763},[757,1386,1387,1390],{"class":759,"line":840},[757,1388,1389],{"class":790},"  return",[757,1391,1392],{"class":763}," { {clipboard} };\n",[757,1394,1395],{"class":759,"line":846},[757,1396,1397],{"class":763},"}\n",[726,1399,1401,1402],{"id":1400},"fetching-data-with-composition-api-fcomp","Fetching Data with Composition API: ",[194,1403,1404],{},"!fcomp",[17,1406,99,1407,1409],{},[194,1408,1404],{}," snippet is designed for fetching data using Vue's Composition API. It provides a setup for making HTTP requests, handling loading states, and managing errors, all within a component.",[17,1411,1412,1414,1415,1417],{},[47,1413,742],{}," Implement ",[194,1416,1404],{}," in scenarios where you need to fetch data from an API, providing a robust structure for data fetching and state management.",[748,1419,1421],{"className":750,"code":1420,"filename":752,"language":753,"meta":15,"style":15},"\u003Cscript setup lang=\"ts\">\nconst { data, pending, error, refresh } = useFetch(\"your_url\", { \n  immediate: false,\n  watch: false,\n});\n\nfunction loadData() {\n  await refresh();\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cbutton @click=\"loadData\">Load Data\u003C\u002Fbutton>\n    \u003Cdiv v-if=\"pending\">Loading...\u003C\u002Fdiv>\n    \u003Cdiv v-if=\"error\">{{ error }}\u003C\u002Fdiv>\n    \u003Cdiv v-if=\"data\">{{ data }}\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cstyle scoped>\n\u002F* composant styles *\u002F\n\u003C\u002Fstyle>\n",[194,1422,1423,1439,1481,1491,1500,1504,1508,1518,1529,1533,1541,1545,1553,1561,1583,1604,1624,1644,1652,1660,1664,1674,1680],{"__ignoreMap":15},[757,1424,1425,1427,1429,1431,1433,1435,1437],{"class":759,"line":760},[757,1426,764],{"class":763},[757,1428,768],{"class":767},[757,1430,772],{"class":771},[757,1432,775],{"class":771},[757,1434,778],{"class":763},[757,1436,782],{"class":781},[757,1438,785],{"class":763},[757,1440,1441,1443,1446,1449,1452,1455,1457,1460,1462,1465,1468,1470,1473,1475,1478],{"class":759,"line":25},[757,1442,818],{"class":790},[757,1444,1445],{"class":763}," { ",[757,1447,1448],{"class":821},"data",[757,1450,1451],{"class":763},", ",[757,1453,1454],{"class":821},"pending",[757,1456,1451],{"class":763},[757,1458,1459],{"class":821},"error",[757,1461,1451],{"class":763},[757,1463,1464],{"class":821},"refresh",[757,1466,1467],{"class":763}," } ",[757,1469,778],{"class":790},[757,1471,1472],{"class":771}," useFetch",[757,1474,1030],{"class":763},[757,1476,1477],{"class":781},"\"your_url\"",[757,1479,1480],{"class":763},", { \n",[757,1482,1483,1486,1489],{"class":759,"line":809},[757,1484,1485],{"class":763},"  immediate: ",[757,1487,1488],{"class":821},"false",[757,1490,1220],{"class":763},[757,1492,1493,1496,1498],{"class":759,"line":815},[757,1494,1495],{"class":763},"  watch: ",[757,1497,1488],{"class":821},[757,1499,1220],{"class":763},[757,1501,1502],{"class":759,"line":834},[757,1503,864],{"class":763},[757,1505,1506],{"class":759,"line":840},[757,1507,812],{"emptyLinePlaceholder":31},[757,1509,1510,1513,1516],{"class":759,"line":846},[757,1511,1512],{"class":790},"function",[757,1514,1515],{"class":771}," loadData",[757,1517,1279],{"class":763},[757,1519,1520,1523,1526],{"class":759,"line":855},[757,1521,1522],{"class":790},"  await",[757,1524,1525],{"class":771}," refresh",[757,1527,1528],{"class":763},"();\n",[757,1530,1531],{"class":759,"line":861},[757,1532,1397],{"class":763},[757,1534,1535,1537,1539],{"class":759,"line":867},[757,1536,870],{"class":763},[757,1538,768],{"class":767},[757,1540,785],{"class":763},[757,1542,1543],{"class":759,"line":877},[757,1544,812],{"emptyLinePlaceholder":31},[757,1546,1547,1549,1551],{"class":759,"line":882},[757,1548,764],{"class":763},[757,1550,13],{"class":767},[757,1552,785],{"class":763},[757,1554,1555,1557,1559],{"class":759,"line":891},[757,1556,894],{"class":763},[757,1558,897],{"class":767},[757,1560,785],{"class":763},[757,1562,1563,1565,1568,1571,1573,1576,1579,1581],{"class":759,"line":902},[757,1564,905],{"class":763},[757,1566,1567],{"class":767},"button",[757,1569,1570],{"class":771}," @click",[757,1572,778],{"class":763},[757,1574,1575],{"class":781},"\"loadData\"",[757,1577,1578],{"class":763},">Load Data\u003C\u002F",[757,1580,1567],{"class":767},[757,1582,785],{"class":763},[757,1584,1585,1587,1589,1592,1594,1597,1600,1602],{"class":759,"line":918},[757,1586,905],{"class":763},[757,1588,897],{"class":767},[757,1590,1591],{"class":771}," v-if",[757,1593,778],{"class":763},[757,1595,1596],{"class":781},"\"pending\"",[757,1598,1599],{"class":763},">Loading...\u003C\u002F",[757,1601,897],{"class":767},[757,1603,785],{"class":763},[757,1605,1606,1608,1610,1612,1614,1617,1620,1622],{"class":759,"line":928},[757,1607,905],{"class":763},[757,1609,897],{"class":767},[757,1611,1591],{"class":771},[757,1613,778],{"class":763},[757,1615,1616],{"class":781},"\"error\"",[757,1618,1619],{"class":763},">{{ error }}\u003C\u002F",[757,1621,897],{"class":767},[757,1623,785],{"class":763},[757,1625,1626,1628,1630,1632,1634,1637,1640,1642],{"class":759,"line":937},[757,1627,905],{"class":763},[757,1629,897],{"class":767},[757,1631,1591],{"class":771},[757,1633,778],{"class":763},[757,1635,1636],{"class":781},"\"data\"",[757,1638,1639],{"class":763},">{{ data }}\u003C\u002F",[757,1641,897],{"class":767},[757,1643,785],{"class":763},[757,1645,1646,1648,1650],{"class":759,"line":942},[757,1647,921],{"class":763},[757,1649,897],{"class":767},[757,1651,785],{"class":763},[757,1653,1654,1656,1658],{"class":759,"line":955},[757,1655,870],{"class":763},[757,1657,13],{"class":767},[757,1659,785],{"class":763},[757,1661,1662],{"class":759,"line":960},[757,1663,812],{"emptyLinePlaceholder":31},[757,1665,1666,1668,1670,1672],{"class":759,"line":1306},[757,1667,764],{"class":763},[757,1669,947],{"class":767},[757,1671,950],{"class":771},[757,1673,785],{"class":763},[757,1675,1677],{"class":759,"line":1676},22,[757,1678,1679],{"class":1078},"\u002F* composant styles *\u002F\n",[757,1681,1683,1685,1687],{"class":759,"line":1682},23,[757,1684,870],{"class":763},[757,1686,947],{"class":767},[757,1688,785],{"class":763},[726,1690,1692],{"id":1691},"why-use-these-snippets","Why Use These Snippets?",[1694,1695,1697],"h4",{"id":1696},"enhance-productivity","Enhance Productivity",[17,1699,1700],{},"Raycast snippets save time and effort by providing ready-to-use code templates, allowing you to focus on the unique aspects of your project.",[1694,1702,1704],{"id":1703},"maintain-consistency","Maintain Consistency",[17,1706,1707],{},"Using standardized snippets ensures consistency across your codebase, making it easier to read, maintain, and collaborate on.",[1694,1709,1711],{"id":1710},"streamline-development","Streamline Development",[17,1713,1714],{},"Snippets cater to common development tasks, streamlining your workflow and reducing the likelihood of errors or oversights.",[1694,1716,1718],{"id":1717},"foster-learning","Foster Learning",[17,1720,1721],{},"For new developers or those new to Nuxt and Vue, these snippets offer insight into best practices and efficient coding patterns.",[17,1723,1724],{},"In conclusion, incorporating these Raycast snippets into your Nuxt and Vue development workflow can significantly enhance productivity, maintain code consistency, and streamline your development process. Whether you're building a small project or a large-scale application, these snippets are invaluable tools in the modern developer's arsenal.",[947,1726,1727],{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sByVh, html code.shiki .sByVh{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#85E89D}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":15,"searchDepth":25,"depth":25,"links":1729},[1730,1731],{"id":697,"depth":25,"text":698},{"id":704,"depth":25,"text":705,"children":1732},[1733,1735,1737,1739,1741,1743],{"id":728,"depth":809,"text":1734},"Component Template: !comp",{"id":969,"depth":809,"text":1736},"API Handler Template: !api",{"id":1086,"depth":809,"text":1738},"State Management with Pinia: !store",{"id":1311,"depth":809,"text":1740},"Composable Function Template: !cps",{"id":1400,"depth":809,"text":1742},"Fetching Data with Composition API: !fcomp",{"id":1691,"depth":809,"text":1692},"22\u002F01\u002F2024",{},"\u002Fen\u002Farticles\u002F5-amazing-raycast-nuxt-snippets","10",{"title":683,"description":694},{"loc":1746},"en\u002Farticles\u002F5-amazing-raycast-nuxt-snippets",[279,1752,1753,1754],"Vue","Raycast","Productivity","gLpY_FbNujfvlQFRgIWmOzhE94h4-y-7icpCEX6QokY",{"id":1757,"title":1758,"author":41,"body":1759,"brand":140,"date":1789,"description":1790,"draft":143,"extension":29,"game":27,"image":1765,"meta":1791,"navigation":31,"ogImage":27,"path":1792,"readingTime":148,"robots":27,"schemaOrg":27,"seo":1793,"sitemap":1794,"stem":1795,"tags":1796,"video":27,"__hash__":1798},"articles_en\u002Fen\u002Farticles\u002Fnot-an-impostor.md","You are not an impostor",{"type":7,"value":1760,"toc":1787},[1761,1766,1769,1772,1775,1778,1781,1784],[17,1762,1763],{},[65,1764],{"alt":690,"src":1765},"\u002Fimages\u002Farticles\u002Ftrap-of-perfection.jpg",[17,1767,1768],{},"In the theater of content creation, there are many who, backstage, whisper a phrase tinged with doubt: \"I'm not legitimate, others are so much better\". This melody of insecurity, often played over and over in the minds of emerging creators, is the first act of a much larger work: the conquest of one's own legitimacy.",[17,1770,1771],{},"Imagine yourself standing at the edge of the stage, dazzled by the spotlight of self-judgment. Every creator goes through this. But instead of sinking into the shadows of self-deprecation, take a moment to listen to the whispers of the audience: the other creators. What you hear is not a cacophony of criticism, but a chorus of experiences and lessons.",[17,1773,1774],{},"This is where the magic happens. Instead of seeing the stage as a place for competition, turn it into a space for learning. Let other people's successes inspire you, their mistakes teach you. This is not imitation, but a creative harmony where you can find your own rhythm, your own melody.",[17,1776,1777],{},"Your authenticity is your most precious instrument. Play it with confidence. Every note of your experience, your perspective, resonates in a unique way with your audience. Authenticity is a creator's true opus, far more captivating than the exhausting quest for perfection.",[17,1779,1780],{},"Remember, every creation is a rehearsal for the next. There's no grand finale where everything has to be perfect. It's a continuous concert, where each performance is better than the last.",[17,1782,1783],{},"And in this showroom, you're not alone. Backstage, you'll find plenty of mentors, peers and admirers. They're there to encourage you, to guide you, to applaud your successes and support you in your doubts. This community is your chorus of support, turning fearful solos into courageous duets.",[17,1785,1786],{},"In the end, every curtain raised, every light turned on, is a step closer to accepting your own talent. The feeling of imposture dissipates not when you compare yourself to others, but when you recognize the unique beauty of your own performance. In this room, success is measured not just by the applause at the end, but by the courage to get up on stage and say: \"Here's my story, listen to it\".",{"title":15,"searchDepth":25,"depth":25,"links":1788},[],"11\u002F01\u002F2024","In the theater of content creation, many backstage whisper a phrase tinged with doubt: 'I m not legitimate, others are so much better.' This melody of insecurity, often played over and over in the minds of emerging creators, is the first act of a much larger work: the conquest of one's own legitimacy.",{},"\u002Fen\u002Farticles\u002Fnot-an-impostor",{"title":1758,"description":1790},{"loc":1792},"en\u002Farticles\u002Fnot-an-impostor",[1797,1754],"Creation","KKev31N487se9xF1EDphkE2DCtMgGmGO_G_VUnJsUtg",{"id":1800,"title":1801,"author":41,"body":1802,"brand":140,"date":1876,"description":1877,"draft":143,"extension":29,"game":27,"image":1815,"meta":1878,"navigation":31,"ogImage":27,"path":1879,"readingTime":1880,"robots":27,"schemaOrg":27,"seo":1881,"sitemap":1882,"stem":1883,"tags":1884,"video":27,"__hash__":1888},"articles_en\u002Fen\u002Farticles\u002Flaunch-your-portfolio.md","Finally launch your portfolio",{"type":7,"value":1803,"toc":1865},[1804,1808,1811,1816,1820,1823,1827,1830,1834,1837,1841,1844,1848,1851,1855,1858,1862],[70,1805,1807],{"id":1806},"introduction","Introduction",[17,1809,1810],{},"Creating a portfolio as a development, design or tech professional is a journey punctuated by complex choices. One of the most prevalent of these dilemmas lies in the delicate balance between striving for perfection and the need to launch quickly. Explore with me the nuances of these contradictory perspectives.",[17,1812,1813],{},[65,1814],{"alt":690,"src":1815},"\u002Fimages\u002Farticles\u002Flaunch-your-porfolio.jpg",[726,1817,1819],{"id":1818},"the-aspiration-to-perfection-an-unattainable-ideal","The aspiration to perfection: an unattainable ideal?",[17,1821,1822],{},"The traditional vision of artistic creation encourages us to pursue perfection from the outset. Every line of code, every element of design should converge towards absolute excellence. However, this dream of perfection can sometimes become a burden, a brake on progress. The relentless quest for perfection can paralyze the creative process, turning creation into an endless pursuit.",[726,1824,1826],{"id":1825},"the-perfectionism-trap-when-the-best-becomes-the-enemy-of-the-good","The Perfectionism Trap: when the best becomes the enemy of the good",[17,1828,1829],{},"Perfectionism can turn into a subtle trap. Waiting for every detail to be impeccable can delay your portfolio indefinitely. This prolonged stalling can have implications for professional credibility, as the market often demands a fast, dynamic online presence.",[726,1831,1833],{"id":1832},"the-bold-proposal-to-launch-quickly-iterate-rather-than-perfect","The bold proposal to launch quickly: iterate rather than perfect",[17,1835,1836],{},"The idea of launching quickly, even if the portfolio doesn't reach an immediate level of perfection, offers an alternative perspective. It's about recognizing that each iteration can be an improvement on the previous one. This approach encourages a constant iteration mentality, where each version becomes a learning opportunity.",[726,1838,1840],{"id":1839},"speed-as-a-means-of-learning-create-by-doing","Speed as a means of learning: create by doing",[17,1842,1843],{},"Launching quickly thus becomes a means of learning. Speed doesn't mean compromising on quality, but rather accepting that perfection may initially be unattainable. It's an invitation to learn by doing, to use each version of the portfolio as a testing ground.",[726,1845,1847],{"id":1846},"the-crucial-importance-of-time-time-efficiency-and-judicious-management","The crucial importance of time: time efficiency and judicious management",[17,1849,1850],{},"Time plays a crucial role in this debate. Time efficiency, underlined by the perspective of speed, becomes an essential skill. Judicious time management is the key to maintaining momentum without compromising quality. Consciously choosing where to invest one's time becomes a strategic act.",[726,1852,1854],{"id":1853},"total-control-vs-flexibility-navigating-between-the-two-extremes","Total control vs. flexibility: navigating between the two extremes",[17,1856,1857],{},"Total control of the creative process offers a sense of autonomy and empowerment. However, it is vital not to confuse control with rigidity. Being open to market developments and new trends is just as essential as personal control. It's a delicate balance between autonomy and adaptability.",[726,1859,1861],{"id":1860},"the-delicate-balance-a-continuous-journey-of-discovery-and-adaptation","The delicate balance: a continuous journey of discovery and adaptation",[17,1863,1864],{},"Ultimately, portfolio creation is an ongoing journey. It's navigating this paradox with intention. It's finding a balance between the quest for excellence and the need to move quickly, knowing that each iteration is a progression towards an improved version of yourself. To create a portfolio is to embrace the paradox, to consciously choose between perfection and speed, and to accept that the path to excellence is a journey rather than a destination.",{"title":15,"searchDepth":25,"depth":25,"links":1866},[1867],{"id":1806,"depth":25,"text":1807,"children":1868},[1869,1870,1871,1872,1873,1874,1875],{"id":1818,"depth":809,"text":1819},{"id":1825,"depth":809,"text":1826},{"id":1832,"depth":809,"text":1833},{"id":1839,"depth":809,"text":1840},{"id":1846,"depth":809,"text":1847},{"id":1853,"depth":809,"text":1854},{"id":1860,"depth":809,"text":1861},"20\u002F10\u002F2023","Aiming for perfectionism is a very good state of mind. On the other hand, working until perfectionism is 100% can also be bad. Here are some tips to help you get your portfolio off the ground.",{},"\u002Fen\u002Farticles\u002Flaunch-your-portfolio","5",{"title":1801,"description":1877},{"loc":1879},"en\u002Farticles\u002Flaunch-your-portfolio",[1885,1886,1887,1754],"Portfolio","Development","Design","ZWOv3noizWCNt6bHv_brOWRhTFejJlRelRZPeozqTbE"]