[{"data":1,"prerenderedAt":430},["ShallowReactive",2],{"navigation":3,"\u002Fworks\u002Fraftou":46},[4],{"title":5,"path":6,"stem":7,"children":8,"page":45},"Works","\u002Fworks","works",[9,13,17,21,25,29,33,37,41],{"title":10,"path":11,"stem":12},"Currencia","\u002Fworks\u002Fcurrencia","works\u002Fcurrencia",{"title":14,"path":15,"stem":16},"Folio Magazine","\u002Fworks\u002Ffolio-magazine","works\u002Ffolio-magazine",{"title":18,"path":19,"stem":20},"Helpr","\u002Fworks\u002Fhelpr","works\u002Fhelpr",{"title":22,"path":23,"stem":24},"IV Patisserie","\u002Fworks\u002Fiv-patisserie","works\u002Fiv-patisserie",{"title":26,"path":27,"stem":28},"Mockline","\u002Fworks\u002Fmockline","works\u002Fmockline",{"title":30,"path":31,"stem":32},"Portfolio","\u002Fworks\u002Fportfolio","works\u002Fportfolio",{"title":34,"path":35,"stem":36},"Raftou - Mobile Game","\u002Fworks\u002Fraftou","works\u002Fraftou",{"title":38,"path":39,"stem":40},"Raycast x Bambulab","\u002Fworks\u002Fraycast-bambulab","works\u002Fraycast-bambulab",{"title":42,"path":43,"stem":44},"Combat Robot","\u002Fworks\u002Frobot","works\u002Frobot",false,{"id":47,"title":34,"authors":48,"body":55,"contextPreview":408,"date":409,"description":410,"extension":411,"image":412,"meta":413,"minRead":414,"navigation":415,"path":35,"roles":416,"seo":419,"stem":36,"teamName":420,"technologies":421,"url":427,"year":428,"__hash__":429},"works\u002Fworks\u002Fraftou.md",[49],{"name":50,"to":51,"target":52,"avatar":53},"Johann Cavallucci","https:\u002F\u002Fx.com\u002FJohannCVL","_blank",{"src":54,"alt":50},"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72015679?v=4",{"type":56,"value":57,"toc":399},"minimark",[58,63,67,70,73,77,80,83,130,133,140,144,304,307,311,314,328,332,335,338,341,343,368,371,385,387],[59,60,62],"h2",{"id":61},"the-concept","The Concept",[64,65,66],"p",{},"This game comes from a simple idea: what if we could establish an \"ongoing background game\" during vacations, parties, or even in everyday couple life? The goal of Raftou is to launch a game that runs parallel to a real-life moment, to make it even more fun and unpredictable.",[64,68,69],{},"So I decided to take action, grab this idea, and see it through to the end. Raftou represents 5 months of intense work: from conception to publication on the app stores, including design, architecture, development, and marketing.",[64,71,72],{},"It's a game that allows you to play with your friends or as a couple, anywhere and anytime. You create a game, invite your friends, and then everyone chooses the challenges they want to include or creates custom ones. Then, you just have to send these challenges to your targets and complete them to earn points. This concept turns simple moments (like a museum visit or a subway ride) into a real adventure.",[59,74,76],{"id":75},"design-features","Design & Features",[64,78,79],{},"The entire application design was done by me, mainly on Figma. I sought to find the perfect balance between a simple, clean interface and an immersive gaming experience. Every logo, color, and animation was thought out to strengthen Raftou's visual identity and make navigation smooth.",[64,81,82],{},"Today, Raftou offers many features:",[84,85,86,94,100,106,112,118,124],"ul",{},[87,88,89,93],"li",{},[90,91,92],"strong",{},"Custom creation:"," The ability to create your own cards and challenges.",[87,95,96,99],{},[90,97,98],{},"A large library:"," Over 400 cards spread across different categories (Party, Vacation, Couple, Friends...).",[87,101,102,105],{},[90,103,104],{},"Customization:"," Theme switching (Dark mode \u002F Light mode) adapted to the player's environment.",[87,107,108,111],{},[90,109,110],{},"Immersion:"," Sound effects, background music, and haptic feedback (vibrations).",[87,113,114,117],{},[90,115,116],{},"Massive multiplayer:"," Games that can host up to 13 people simultaneously.",[87,119,120,123],{},[90,121,122],{},"Strategy:"," The ability to counter an attack using the special \"Reverse\" card.",[87,125,126,129],{},[90,127,128],{},"Longevity:"," \"Ongoing\" games that can last up to 1 year.",[64,131,132],{},"And new features are already under development...",[64,134,135],{},[136,137],"img",{"alt":138,"src":139},"image","\u002Fassets\u002Fworks\u002Fraftou\u002FscreenShoots.webp",[59,141,143],{"id":142},"technical-stack-architecture","Technical Stack & Architecture",[145,146,147,160],"table",{},[148,149,150],"thead",{},[151,152,153,157],"tr",{},[154,155,156],"th",{},"Technology",[154,158,159],{},"Role in the project",[161,162,163,174,184,194,204,214,224,234,244,254,264,274,284,294],"tbody",{},[151,164,165,171],{},[166,167,168],"td",{},[90,169,170],{},"React Native \u002F Expo",[166,172,173],{},"Cross-platform mobile application development",[151,175,176,181],{},[166,177,178],{},[90,179,180],{},"TypeScript",[166,182,183],{},"Strict typing and end-to-end code safety",[151,185,186,191],{},[166,187,188],{},[90,189,190],{},"Hono & Zod",[166,192,193],{},"Creation of the ultra-fast Backend API and data validation",[151,195,196,201],{},[166,197,198],{},[90,199,200],{},"Tailwind CSS",[166,202,203],{},"Design integration and component styling",[151,205,206,211],{},[166,207,208],{},[90,209,210],{},"EAS (Expo)",[166,212,213],{},"CI\u002FCD, build management, and store deployment",[151,215,216,221],{},[166,217,218],{},[90,219,220],{},"Nuxt 3",[166,222,223],{},"Creation of the showcase Landing Page and SEO optimization",[151,225,226,231],{},[166,227,228],{},[90,229,230],{},"Better Auth",[166,232,233],{},"Secure player authentication management",[151,235,236,241],{},[166,237,238],{},[90,239,240],{},"Socket.io",[166,242,243],{},"Real-time management for multiplayer interactions",[151,245,246,251],{},[166,247,248],{},[90,249,250],{},"Resend",[166,252,253],{},"Management and sending of transactional emails",[151,255,256,261],{},[166,257,258],{},[90,259,260],{},"Mongo & PostgreSQL",[166,262,263],{},"Databases (SQL for relational data, NoSQL for game flexibility)",[151,265,266,271],{},[166,267,268],{},[90,269,270],{},"Linear",[166,272,273],{},"Agile project management, issue tracking, and roadmap",[151,275,276,281],{},[166,277,278],{},[90,279,280],{},"GitHub",[166,282,283],{},"Code versioning, repository hosting, and collaboration",[151,285,286,291],{},[166,287,288],{},[90,289,290],{},"Figma",[166,292,293],{},"UI\u002FUX design, screen prototyping, and graphic asset creation",[151,295,296,301],{},[166,297,298],{},[90,299,300],{},"VPS",[166,302,303],{},"Hosting of the backend infrastructure (Hono API, Socket.io, Databases)",[305,306],"hr",{},[59,308,310],{"id":309},"challenges-development-deployment","Challenges (Development & Deployment)",[64,312,313],{},"Building a project of this scale solo was a real technical and creative challenge:",[84,315,316,322],{},[87,317,318,321],{},[90,319,320],{},"UI\u002FUX Design:"," Not being a professional designer, finding a design consistent with the game's concept that could appeal to a wide audience required many iterations. I had to do dozens of tests to find the right balance between simplicity and immersion.",[87,323,324,327],{},[90,325,326],{},"Global Architecture:"," Connecting a real-time mobile app with a robust backend and two different types of databases was a real puzzle. I had to structure the project smartly to make it scalable.",[59,329,331],{"id":330},"conclusion-and-next-steps","Conclusion and Next Steps",[64,333,334],{},"I am extremely proud of the final result. My initial goal was to create a complete product from A to Z and learn by doing. It's a total success: I have never learned as much as I did with Raftou.",[64,336,337],{},"This project forced me out of my developer comfort zone to touch on all the professions related to creating a technological product: UI\u002FUX Design, system architecture, mobile and real-time backend development, DevOps (CI\u002FCD), marketing, and store compliance. What I take away from this is not just the live application today, but the entire journey and the experience accumulated to get there.",[64,339,340],{},"Moving forward, I plan to improve the product by offering new special cards, new themes, and above all, focus my efforts on growing the Raftou player community!",[305,342],{},[344,345,351,363,364],"a",{"href":346,"target":52,"className":347},"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fraftou-jeu-de-soir%C3%A9e\u002Fid6760556703",[348,349,350],"flex","items-center","space-x-2",[352,353,357],"svg",{"width":354,"height":354,"viewBox":355,"xmlns":356},"24","0 0 24 24","http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg",[358,359],"path",{"fill":360,"fillRule":361,"d":362,"clipRule":361},"currentColor","evenodd","M10.58 1.87a1.25 1.25 0 1 0-2.16 1.26l2.133 3.656l-4.354 7.464H2a1.25 1.25 0 1 0 0 2.5h11a1.25 1.25 0 1 0 0-2.5H9.093l3.973-6.811l.026-.044L15.58 3.13a1.25 1.25 0 1 0-2.16-1.26L12 4.305zm4.5 7.714l2.72 4.666H22a1.25 1.25 0 1 1 0 2.5h-2.74l1.82 3.12a1.25 1.25 0 1 1-2.16 1.26l-2.887-4.95a1 1 0 0 1-.06-.104l-3.053-5.232a1.25 1.25 0 1 1 2.16-1.26m-9 9.832a1.25 1.25 0 0 0-2.16-1.26l-1 1.714a1.25 1.25 0 0 0 2.16 1.26z","  ",[365,366,367],"span",{},"App Store",[369,370],"br",{},[344,372,375,376,381,382],{"href":373,"target":52,"className":374},"https:\u002F\u002Fwww.raftou.com",[348,349,350],"\n ",[352,377,378],{"width":354,"height":354,"viewBox":355,"xmlns":356},[358,379],{"fill":360,"d":380},"M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2m-5.15 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56M14.34 14H9.66c-.1-.66-.16-1.32-.16-2s.06-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2M12 19.96c-.83-1.2-1.5-2.53-1.91-3.96h3.82c-.41 1.43-1.08 2.76-1.91 3.96M8 8H5.08A7.92 7.92 0 0 1 9.4 4.44C8.8 5.55 8.35 6.75 8 8m-2.92 8H8c.35 1.25.8 2.45 1.4 3.56A8 8 0 0 1 5.08 16m-.82-2C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2M12 4.03c.83 1.2 1.5 2.54 1.91 3.97h-3.82c.41-1.43 1.08-2.77 1.91-3.97M18.92 8h-2.95a15.7 15.7 0 0 0-1.38-3.56c1.84.63 3.37 1.9 4.33 3.56M12 2C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2","\n  ",[365,383,384],{},"Landing Page",[369,386],{},[344,388,375,391,381,396],{"href":389,"target":52,"className":390},"https:\u002F\u002Fwww.instagram.com\u002Fraftou.app\u002F",[348,349,350],[352,392,393],{"width":354,"height":354,"viewBox":355,"xmlns":356},[358,394],{"fill":360,"d":395},"M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4zm9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8A1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5a5 5 0 0 1-5 5a5 5 0 0 1-5-5a5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3",[365,397,398],{},"Instagram",{"title":400,"searchDepth":401,"depth":401,"links":402},"",2,[403,404,405,406,407],{"id":61,"depth":401,"text":62},{"id":75,"depth":401,"text":76},{"id":142,"depth":401,"text":143},{"id":309,"depth":401,"text":310},{"id":330,"depth":401,"text":331},"Solo end-to-end mobile game product built by Johann in 2026, from concept to App Store release, combining game design, product strategy, and full-stack execution. Covers React Native\u002FExpo architecture, real-time multiplayer backend (Socket.io, Hono), auth, dual database approach (MongoDB + PostgreSQL), CI\u002FCD with EAS, and complete ownership of UI\u002FUX, deployment, and go-to-market assets. Useful for questions about mobile development, real-time systems, product building from A to Z, technical leadership in solo projects, and large-scope delivery across engineering, design, and operations.","2026-03-23","Mobile game available on Android and iOS. Play with friends or as a couple anytime, anywhere.","md","\u002Fassets\u002Fworks\u002Fraftou\u002Fraftou-site.webp",{},10,true,[417,418],"Full Stack","UI\u002FUX Designer",{"title":34,"description":410},"Author",[422,423,424,425,426],"React Native","Typescript","Expo & EAS","MongoDB","Tailwind","https:\u002F\u002Fwww.raftou.com\u002F","2026","S4Y-IOquDKn5BLxtnm4AiKTQ41tY0xo39orySTcs_xU",1778859912250]