[{"data":1,"prerenderedAt":208},["ShallowReactive",2],{"docs:list:en":3,"docs:page:en:credits\u002Ftechnologies\u002Ffrontend":66},[4,10,14,19,23,27,32,36,40,44,49,53,57,62],{"path":5,"title":6,"description":7,"section":8,"order":9},"\u002Fdocs\u002Fen\u002Fcredits\u002Foverview","Overview","The open source work Alluno stands on, grouped by the layer each project lives in.","Credits",1,{"path":11,"title":12,"description":13,"section":8,"order":9},"\u002Fdocs\u002Fen\u002Fcredits\u002Ftechnologies\u002Foverview","Stack","How the host, the services, the web client and the real time layer fit together.",{"path":15,"title":16,"description":17,"section":18,"order":9},"\u002Fdocs\u002Fen\u002Fgetting-started\u002Fintroduction","Introduction","What Alluno is, how a session actually works, and which parts of the product you will meet first.","Getting started",{"path":20,"title":6,"description":21,"section":22,"order":9},"\u002Fdocs\u002Fen\u002Fprivacy-policy\u002Foverview","What Alluno collects, what it deliberately never sees, and the choices you keep over both.","Privacy policy",{"path":24,"title":6,"description":25,"section":26,"order":9},"\u002Fdocs\u002Fen\u002Fterms-of-service\u002Foverview","The agreement between you and Alluno: what you may do, what we owe you, and where each ends.","Terms of service",{"path":28,"title":29,"description":30,"section":8,"order":31},"\u002Fdocs\u002Fen\u002Fcredits\u002Ftechnologies\u002Ffrontend","Frontend Architecture","The web client that decodes, syncs and paints a session in your browser, and what it is built from.",2,{"path":33,"title":34,"description":35,"section":18,"order":31},"\u002Fdocs\u002Fen\u002Fgetting-started\u002Finstallation","Installation","Install the host on the machine you want to reach, pair it once, and open it from any browser afterwards.",{"path":37,"title":38,"description":39,"section":22,"order":31},"\u002Fdocs\u002Fen\u002Fprivacy-policy\u002Fdata-collection-types","Data Types","Every category of data the service touches, why each one exists, and how long it is kept.",{"path":41,"title":42,"description":43,"section":26,"order":31},"\u002Fdocs\u002Fen\u002Fterms-of-service\u002Fbilling-payments-payment-terms","Payment Terms","Plans, billing cycles, how payment is taken, and what happens when one fails.",{"path":45,"title":46,"description":47,"section":8,"order":48},"\u002Fdocs\u002Fen\u002Fcredits\u002Ftechnologies\u002Fbackend","Backend Systems","The host on your machine and the services behind alluno.io, both written in Rust, and what they are built from.",3,{"path":50,"title":51,"description":52,"section":18,"order":48},"\u002Fdocs\u002Fen\u002Fgetting-started\u002Ffaq","FAQ","Straight answers on transports, encryption, what Alluno can and cannot see, plans and licensing.",{"path":54,"title":55,"description":56,"section":26,"order":48},"\u002Fdocs\u002Fen\u002Fterms-of-service\u002Fbilling-payments-commercial-disclosure","Commercial Disclosure","The trading details a subscription requires: who sells the service, from where, and on what terms.",{"path":58,"title":59,"description":60,"section":8,"order":61},"\u002Fdocs\u002Fen\u002Fcredits\u002Ftechnologies\u002Frealtime","Real-time Systems","The media and transport layer that moves a frame from the host to your screen in a few milliseconds.",4,{"path":63,"title":64,"description":65,"section":26,"order":61},"\u002Fdocs\u002Fen\u002Fterms-of-service\u002Facceptable-use-guidelines","Guidelines","What a machine on Alluno may be used for, and the handful of things that will end an account.",{"id":67,"title":29,"body":68,"description":30,"extension":201,"meta":202,"navigation":203,"order":31,"path":28,"section":8,"seo":204,"stem":205,"updated":206,"__hash__":207},"docs\u002Fdocs\u002Fen\u002Fcredits\u002Ftechnologies\u002Ffrontend.md",{"type":69,"value":70,"toc":195},"minimark",[71,75,80,129,133,165,169,190],[72,73,74],"p",{},"The client is the part of Alluno you never install. It runs in the browser, so it is built with web tools chosen for speed, type safety and a small footprint.",[76,77,79],"h2",{"id":78},"core-technologies","Core technologies",[81,82,83,104,111,122],"field-group",{},[84,85,88],"field",{"name":86,"type":87},"Nuxt and Vue","framework",[72,89,90,97,98,103],{},[91,92,96],"a",{"href":93,"rel":94},"https:\u002F\u002Fnuxt.com",[95],"nofollow","Nuxt"," on ",[91,99,102],{"href":100,"rel":101},"https:\u002F\u002Fvuejs.org",[95],"Vue"," renders the marketing site, the dashboard and the stream client from one codebase, with server rendering where a page needs to be crawlable and client rendering where it needs to be interactive.",[84,105,108],{"name":106,"type":107},"TypeScript","language",[72,109,110],{},"Every wire shape the client speaks, from the API contract to the binary input codec, is typed. Mistakes surface at build time, not in a session.",[84,112,115],{"name":113,"type":114},"Tailwind CSS","styling",[72,116,117,121],{},[91,118,113],{"href":119,"rel":120},"https:\u002F\u002Ftailwindcss.com",[95]," with a single token file for colour, radius, motion and type, so every surface draws from the same values.",[84,123,126],{"name":124,"type":125},"Vite","build",[72,127,128],{},"Fast local development and optimised production bundles, with the heavy media code split so the marketing pages never pay for it.",[76,130,132],{"id":131},"in-the-stream-client","In the stream client",[134,135,136,144,151,158],"card-group",{"cols":31},[137,138,141],"card",{"icon":139,"title":140},"lucide:film","WebCodecs",[72,142,143],{},"Hardware decode in the browser where the platform offers it, which is what lets a laptop keep up with a 165 Hz host.",[137,145,148],{"icon":146,"title":147},"lucide:clock","One clock",[72,149,150],{},"Video, audio and input share a timebase, so lips match and a shot lands on the frame you saw it on.",[137,152,155],{"icon":153,"title":154},"lucide:gamepad-2","Gamepad API",[72,156,157],{},"Controller state is read every frame and sent as real device input, with rumble returned to the pad.",[137,159,162],{"icon":160,"title":161},"lucide:mouse-pointer-2","Pointer lock",[72,163,164],{},"Raw mouse motion for games that read it, with the cursor shape synced from the host.",[76,166,168],{"id":167},"how-it-stays-honest","How it stays honest",[81,170,171,178,184],{},[84,172,175],{"name":173,"type":174},"Convention tests","quality",[72,176,177],{},"The layering, the design tokens and the frozen protocol shapes are enforced by tests that read the source tree, not by review alone.",[84,179,181],{"name":180,"type":174},"Generated contracts",[72,182,183],{},"API types are generated from the service's OpenAPI document and checked in, so the client cannot drift from the server unnoticed.",[84,185,187],{"name":186,"type":174},"Self hosted fonts",[72,188,189],{},"Fonts ship with the site. The isolated stream pages block cross origin stylesheets on purpose, and a font request must never be the reason a session looks wrong.",[191,192],"read-more",{"title":193,"to":194},"The real time layer under the client","\u002Fdocs\u002Fcredits\u002Ftechnologies\u002Frealtime",{"title":196,"searchDepth":61,"depth":61,"links":197},"",[198,199,200],{"id":78,"depth":31,"text":79},{"id":131,"depth":31,"text":132},{"id":167,"depth":31,"text":168},"md",{},true,{"title":29,"description":30},"docs\u002Fen\u002Fcredits\u002Ftechnologies\u002Ffrontend",null,"w7YHhwh5YNsGjLHozdmmtacFoDv1bN47HpHSS-DbAZA",1789362703358]