[{"data":1,"prerenderedAt":711},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fit\u002Flifestyle\u002Ftech-stack-2026-operazioni-team":13},{"i18nKey":4,"paths":5},"lifestyle-004-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Flifestyle\u002Ftool-stack-2026-operationelle-wirbelsaeule","\u002Fen\u002Flifestyle\u002Ftool-stack-2026-roibase-daily-operations","\u002Fes\u002Flifestyle\u002Ftechstack-2026-operaciones-diarias","\u002Ffr\u002Flifestyle\u002Ftechstack-partnership","\u002Fit\u002Flifestyle\u002Ftech-stack-2026-operazioni-team","\u002Fru\u002Flifestyle\u002Ftool-stack-2026-operational-backbone","\u002Ftr\u002Flifestyle\u002Ftool-stack-2026-roibasein-operasyonel-omurgasi",{"_path":10,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":705,"_id":706,"_source":707,"_file":708,"_stem":709,"_extension":710},"lifestyle",false,"","Tech Stack 2026: Le Operazioni Quotidiane del Team Roibase","Linear, Notion, Slack, Figma, Granola — pattern di integrazione e disciplina misurabile della produttività in un team di 12 persone orientato alla crescita.","2026-05-30",[21,22,23,24,25],"tech-stack","async-workflow","linear","notion","team-operations",8,"Roibase",{"type":29,"children":30,"toc":690},"root",[31,39,46,66,74,109,121,128,153,159,171,180,185,193,237,242,248,268,301,309,339,344,350,355,360,366,394,412,417,423,428,568,573,579,584,592,610,618,636,644,674,679,685],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Le conversazioni sullo tech stack tendono a trasformarsi in cataloghi di \"usiamo questa app\". Ma il vero problema non è lo strumento isolato — è il pattern di integrazione, il costo del context switching, la disciplina async-first. A Roibase, un team di 12 persone lavora da remoto dal 2018. Nel 2026, cinque tool hanno plasmato le nostre operazioni quotidiane: Linear, Notion, Slack, Figma, Granola. Questo articolo non elenca gli strumenti — espone il layer di integrazione: dove vivono i dati, quali workflow sono innescati, quale strato di notifiche è disabilitato.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"linear-non-sprint-ma-flow-metrics",[44],{"type":37,"value":45},"Linear: Non Sprint, ma Flow Metrics",{"type":32,"tag":33,"props":47,"children":48},{},[49,51,57,59,64],{"type":37,"value":50},"Linear viene venduto come strumento di project management, ma a Roibase funziona come \"visibility layer di work-in-progress\". Non facciamo sprint planning — non usiamo cicli o milestone. Invece, ogni issue riceve ",{"type":32,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":37,"value":56},"priority (P0\u002FP1\u002FP2)",{"type":37,"value":58}," e ",{"type":32,"tag":52,"props":60,"children":61},{},[62],{"type":37,"value":63},"estimate (1-3-5-8)",{"type":37,"value":65},". La priorità non è una decisione personale, è una decisione del sistema: P0 = il deploy è bloccato oggi, P1 = deve finire entro lo sprint, P2 = backlog.",{"type":32,"tag":33,"props":67,"children":68},{},[69],{"type":32,"tag":52,"props":70,"children":71},{},[72],{"type":37,"value":73},"Flow metrics:",{"type":32,"tag":75,"props":76,"children":77},"ul",{},[78,89,99],{"type":32,"tag":79,"props":80,"children":81},"li",{},[82,87],{"type":32,"tag":52,"props":83,"children":84},{},[85],{"type":37,"value":86},"Cycle time:",{"type":37,"value":88}," media 2,3 giorni dal'apertura della issue alla chiusura (dato Q4 2025). Qualsiasi issue che supera 5 giorni viene automaticamente promossa a P0.",{"type":32,"tag":79,"props":90,"children":91},{},[92,97],{"type":32,"tag":52,"props":93,"children":94},{},[95],{"type":37,"value":96},"Work-in-progress limit:",{"type":37,"value":98}," massimo 3 issue aperte per persona. Per prendere un 4° issue, bisogna chiuderne una o delegarla.",{"type":32,"tag":79,"props":100,"children":101},{},[102,107],{"type":32,"tag":52,"props":103,"children":104},{},[105],{"type":37,"value":106},"Merge-to-close time:",{"type":37,"value":108}," tempo tra il merge di una PR e la chiusura della issue su Linear — target \u003C30 minuti (automazione CI\u002FCD + QA).",{"type":32,"tag":33,"props":110,"children":111},{},[112,114,119],{"type":37,"value":113},"L'integrazione Slack di Linear è disabilitata. Invece di un bombardamento di notifiche, usiamo un ",{"type":32,"tag":52,"props":115,"children":116},{},[117],{"type":37,"value":118},"digest system",{"type":37,"value":120},": ogni mattina alle 09:00, uno snapshot viene inviato al canale Slack (numero di issue P0, cycle time medio, distribuzione WIP). Nessuno mention su Linear — già tutti leggono il digest mattutino.",{"type":32,"tag":122,"props":123,"children":125},"h3",{"id":124},"linear-notion-sync",[126],{"type":37,"value":127},"Linear → Notion Sync",{"type":32,"tag":33,"props":129,"children":130},{},[131,133,140,142,151],{"type":37,"value":132},"Le issue completate su Linear vengono archiviate su Notion una volta alla settimana (workflow Zapier). Su Notion esiste un \"Retrospective Database\" — ogni issue completata è taggata con il servizio a cui appartiene. Per esempio, le issue sotto il progetto ",{"type":32,"tag":134,"props":135,"children":137},"code",{"className":136},[],[138],{"type":37,"value":139},"branding",{"type":37,"value":141}," vengono reportate sotto il servizio ",{"type":32,"tag":143,"props":144,"children":148},"a",{"href":145,"rel":146},"https:\u002F\u002Fwww.roibase.com.tr\u002Fit\u002Fbranding",[147],"nofollow",[149],{"type":37,"value":150},"Markalaşma & Brand Identity",{"type":37,"value":152},". Questi dati vengono usati ogni tre mesi per il capacity planning: quanto tempo di engineering viene speso su quale servizio?",{"type":32,"tag":40,"props":154,"children":156},{"id":155},"notion-source-of-truth-non-un-wiki",[157],{"type":37,"value":158},"Notion: Source of Truth, Non un Wiki",{"type":32,"tag":33,"props":160,"children":161},{},[162,164,169],{"type":37,"value":163},"Non usiamo Notion come wiki — è un \"decision log\". Ogni decisione strategica (per esempio \"in questa campagna usiamo server-side tracking o client-side?\") viene scritta su Notion in formato ",{"type":32,"tag":52,"props":165,"children":166},{},[167],{"type":37,"value":168},"RFC (Request for Comments)",{"type":37,"value":170},". Il template RFC è:",{"type":32,"tag":172,"props":173,"children":175},"pre",{"code":174},"## Decisione\n[Una sola frase — cosa facciamo]\n\n## Contesto\n[Perché serve ora]\n\n## Alternativi\n[Almeno 2 opzioni + tabella tradeoff]\n\n## Misurazione\n[Come sapremo se la decisione era giusta tra 4 settimane]\n\n## Responsabilità\n[Chi ne è owner]\n",[176],{"type":32,"tag":134,"props":177,"children":178},{"__ignoreMap":16},[179],{"type":37,"value":174},{"type":32,"tag":33,"props":181,"children":182},{},[183],{"type":37,"value":184},"Dopo l'apertura dell'RFC, c'è una finestra di 48 ore per commenti async. Nessuno organizza riunioni — ognuno legge nel suo tempo, commenta. Dopo 48 ore, il decision owner scrive la decisione finale e la issue viene spostata su Linear.",{"type":32,"tag":33,"props":186,"children":187},{},[188],{"type":32,"tag":52,"props":189,"children":190},{},[191],{"type":37,"value":192},"Layer di dati dentro Notion:",{"type":32,"tag":194,"props":195,"children":196},"ol",{},[197,207,217,227],{"type":32,"tag":79,"props":198,"children":199},{},[200,205],{"type":32,"tag":52,"props":201,"children":202},{},[203],{"type":37,"value":204},"RFC Database",{"type":37,"value":206}," — tutte le decisioni",{"type":32,"tag":79,"props":208,"children":209},{},[210,215],{"type":32,"tag":52,"props":211,"children":212},{},[213],{"type":37,"value":214},"Retrospective Database",{"type":37,"value":216}," — lavori completati provenienti da Linear",{"type":32,"tag":79,"props":218,"children":219},{},[220,225],{"type":32,"tag":52,"props":221,"children":222},{},[223],{"type":37,"value":224},"Client Playbook",{"type":37,"value":226}," — note di operazione client-by-client (dove è la dashboard, dove sta l'API key)",{"type":32,"tag":79,"props":228,"children":229},{},[230,235],{"type":32,"tag":52,"props":231,"children":232},{},[233],{"type":37,"value":234},"Brand Assets",{"type":37,"value":236}," — link Figma, tone-of-voice doc",{"type":32,"tag":33,"props":238,"children":239},{},[240],{"type":37,"value":241},"Su Notion la ricerca non funziona bene, e questo è un lamento comune. Ma noi non cerchiamo — ogni database è filtrabile e taggato. Se senti il bisogno di usare la ricerca, di solito significa che hai messo i dati nel posto sbagliato.",{"type":32,"tag":40,"props":243,"children":245},{"id":244},"slack-async-first-real-time-second",[246],{"type":37,"value":247},"Slack: Async-First, Real-Time-Second",{"type":32,"tag":33,"props":249,"children":250},{},[251,253,259,260,266],{"type":37,"value":252},"Il sistema di notifiche Slack è disabilitato in tutto il team. Solo ",{"type":32,"tag":134,"props":254,"children":256},{"className":255},[],[257],{"type":37,"value":258},"@channel",{"type":37,"value":58},{"type":32,"tag":134,"props":261,"children":263},{"className":262},[],[264],{"type":37,"value":265},"@here",{"type":37,"value":267}," sono abilitati — e c'è una regola: vietato usarli al di fuori di un incident P0. La messaggistica è divisa in tre canali:",{"type":32,"tag":194,"props":269,"children":270},{},[271,281,291],{"type":32,"tag":79,"props":272,"children":273},{},[274,279],{"type":32,"tag":52,"props":275,"children":276},{},[277],{"type":37,"value":278},"#daily-digest:",{"type":37,"value":280}," sommari Linear\u002FNotion, log deploy CI\u002FCD",{"type":32,"tag":79,"props":282,"children":283},{},[284,289],{"type":32,"tag":52,"props":285,"children":286},{},[287],{"type":37,"value":288},"#async-questions:",{"type":37,"value":290}," domande dove non aspetti una risposta immediata (24 ore sono sufficienti)",{"type":32,"tag":79,"props":292,"children":293},{},[294,299],{"type":32,"tag":52,"props":295,"children":296},{},[297],{"type":37,"value":298},"#sync-now:",{"type":37,"value":300}," coordinamento real-time (incident production, ottimizzazione campagna live)",{"type":32,"tag":33,"props":302,"children":303},{},[304],{"type":32,"tag":52,"props":305,"children":306},{},[307],{"type":37,"value":308},"Response time expectations:",{"type":32,"tag":75,"props":310,"children":311},{},[312,323,334],{"type":32,"tag":79,"props":313,"children":314},{},[315,321],{"type":32,"tag":134,"props":316,"children":318},{"className":317},[],[319],{"type":37,"value":320},"#sync-now",{"type":37,"value":322}," → 15 minuti",{"type":32,"tag":79,"props":324,"children":325},{},[326,332],{"type":32,"tag":134,"props":327,"children":329},{"className":328},[],[330],{"type":37,"value":331},"#async-questions",{"type":37,"value":333}," → 24 ore",{"type":32,"tag":79,"props":335,"children":336},{},[337],{"type":37,"value":338},"DM → 48 ore (non ha cultura dei DM, si usa il canale)",{"type":32,"tag":33,"props":340,"children":341},{},[342],{"type":37,"value":343},"L'uso di Slack thread è obbligatorio. Rispondere nel canale principale è vietato — ogni messaggio apre un thread. Così le conversazioni parallele non si mischiano.",{"type":32,"tag":122,"props":345,"children":347},{"id":346},"slack-granola-integration",[348],{"type":37,"value":349},"Slack → Granola Integration",{"type":32,"tag":33,"props":351,"children":352},{},[353],{"type":37,"value":354},"Granola è uno strumento di note per meeting — ma a Roibase lo usiamo solo per client call. Non facciamo meeting interni (0-1 sync call alla settimana). Dopo una client call, Granola invia il transcript AI su Slack, il team legge async. Gli action item si trasformano automaticamente in issue Linear (trigger Zapier).",{"type":32,"tag":33,"props":356,"children":357},{},[358],{"type":37,"value":359},"La killer feature di Granola: nel transcript evidenzia i commitment numerici (\"risultati A\u002FB test in 2 settimane\", \"CTR deve aumentare del 15%\"). Ognuno riceve reminder automatici — nessuno dimentica.",{"type":32,"tag":40,"props":361,"children":363},{"id":362},"figma-non-design-handoff-ma-living-spec",[364],{"type":37,"value":365},"Figma: Non Design Handoff, ma Living Spec",{"type":32,"tag":33,"props":367,"children":368},{},[369,371,377,379,385,386,392],{"type":37,"value":370},"Figma non è solo uno strumento di design — è il layer di \"frontend spec\". Ogni componente UI è definito come variant su Figma. Lo developer non estrae codice da Figma (non copiamo CSS) — ma legge il comportamento del componente da lì. Per esempio, gli state di un button (",{"type":32,"tag":134,"props":372,"children":374},{"className":373},[],[375],{"type":37,"value":376},"hover",{"type":37,"value":378},", ",{"type":32,"tag":134,"props":380,"children":382},{"className":381},[],[383],{"type":37,"value":384},"active",{"type":37,"value":378},{"type":32,"tag":134,"props":387,"children":389},{"className":388},[],[390],{"type":37,"value":391},"disabled",{"type":37,"value":393},") sono frame su Figma. Il codice implementa la stessa logica di state.",{"type":32,"tag":33,"props":395,"children":396},{},[397,402,404,410],{"type":32,"tag":52,"props":398,"children":399},{},[400],{"type":37,"value":401},"Connessione Figma → Linear:",{"type":37,"value":403},"\nOgni file Figma ha il plugin ",{"type":32,"tag":134,"props":405,"children":407},{"className":406},[],[408],{"type":37,"value":409},"Linear Issue",{"type":37,"value":411},". Quando il design è approvato, il designer apre direttamente una issue Linear, incolla il link Figma nella descrizione. Quando lo developer prende la issue, già conosce il design — implementa senza fare domande.",{"type":32,"tag":33,"props":413,"children":414},{},[415],{"type":37,"value":416},"I commenti Figma non vanno su Slack (per evitare il bombardamento di notifiche). Invece, ogni settimana esce un \"Figma Digest\" — i commenti aperti si trasformano in issue Linear.",{"type":32,"tag":40,"props":418,"children":420},{"id":419},"pattern-di-integrazione-dove-vivono-i-dati",[421],{"type":37,"value":422},"Pattern di Integrazione: Dove Vivono i Dati?",{"type":32,"tag":33,"props":424,"children":425},{},[426],{"type":37,"value":427},"Le conversazioni sullo tech stack partono di solito da \"quale tool usi?\" Ma la vera domanda è \"quale dato è canonical dove?\" A Roibase, l'ownership dei dati è così:",{"type":32,"tag":429,"props":430,"children":431},"table",{},[432,456],{"type":32,"tag":433,"props":434,"children":435},"thead",{},[436],{"type":32,"tag":437,"props":438,"children":439},"tr",{},[440,446,451],{"type":32,"tag":441,"props":442,"children":443},"th",{},[444],{"type":37,"value":445},"Tipo di dato",{"type":32,"tag":441,"props":447,"children":448},{},[449],{"type":37,"value":450},"Source of truth",{"type":32,"tag":441,"props":452,"children":453},{},[454],{"type":37,"value":455},"Sincronizzato dove",{"type":32,"tag":457,"props":458,"children":459},"tbody",{},[460,479,497,515,533,551],{"type":32,"tag":437,"props":461,"children":462},{},[463,469,474],{"type":32,"tag":464,"props":465,"children":466},"td",{},[467],{"type":37,"value":468},"Lavoro attivo (WIP)",{"type":32,"tag":464,"props":470,"children":471},{},[472],{"type":37,"value":473},"Linear",{"type":32,"tag":464,"props":475,"children":476},{},[477],{"type":37,"value":478},"Slack daily digest",{"type":32,"tag":437,"props":480,"children":481},{},[482,487,492],{"type":32,"tag":464,"props":483,"children":484},{},[485],{"type":37,"value":486},"Lavoro completato (retrospective)",{"type":32,"tag":464,"props":488,"children":489},{},[490],{"type":37,"value":491},"Notion",{"type":32,"tag":464,"props":493,"children":494},{},[495],{"type":37,"value":496},"Linear (archived)",{"type":32,"tag":437,"props":498,"children":499},{},[500,505,510],{"type":32,"tag":464,"props":501,"children":502},{},[503],{"type":37,"value":504},"Decisioni strategiche",{"type":32,"tag":464,"props":506,"children":507},{},[508],{"type":37,"value":509},"Notion (RFC)",{"type":32,"tag":464,"props":511,"children":512},{},[513],{"type":37,"value":514},"Linear (action items)",{"type":32,"tag":437,"props":516,"children":517},{},[518,523,528],{"type":32,"tag":464,"props":519,"children":520},{},[521],{"type":37,"value":522},"Note client call",{"type":32,"tag":464,"props":524,"children":525},{},[526],{"type":37,"value":527},"Granola",{"type":32,"tag":464,"props":529,"children":530},{},[531],{"type":37,"value":532},"Slack thread",{"type":32,"tag":437,"props":534,"children":535},{},[536,541,546],{"type":32,"tag":464,"props":537,"children":538},{},[539],{"type":37,"value":540},"UI spec",{"type":32,"tag":464,"props":542,"children":543},{},[544],{"type":37,"value":545},"Figma",{"type":32,"tag":464,"props":547,"children":548},{},[549],{"type":37,"value":550},"Linear issue description",{"type":32,"tag":437,"props":552,"children":553},{},[554,559,563],{"type":32,"tag":464,"props":555,"children":556},{},[557],{"type":37,"value":558},"Brand assets",{"type":32,"tag":464,"props":560,"children":561},{},[562],{"type":37,"value":491},{"type":32,"tag":464,"props":564,"children":565},{},[566],{"type":37,"value":567},"Figma (embed link)",{"type":32,"tag":33,"props":569,"children":570},{},[571],{"type":37,"value":572},"Non c'è doppio source-of-truth. Se un dato appare canonical in due posti, uno è sbagliato.",{"type":32,"tag":40,"props":574,"children":576},{"id":575},"notification-discipline-quando-silenzio-quando-rumore",[577],{"type":37,"value":578},"Notification Discipline: Quando Silenzio, Quando Rumore",{"type":32,"tag":33,"props":580,"children":581},{},[582],{"type":37,"value":583},"Il rischio più grande di uno stack tool moderno è la notification creep. A Roibase, la strategia delle notifiche è così:",{"type":32,"tag":33,"props":585,"children":586},{},[587],{"type":32,"tag":52,"props":588,"children":589},{},[590],{"type":37,"value":591},"Completamente disabilitato:",{"type":32,"tag":75,"props":593,"children":594},{},[595,600,605],{"type":32,"tag":79,"props":596,"children":597},{},[598],{"type":37,"value":599},"Linear mention (si usa il thread Slack invece di commentare su issue)",{"type":32,"tag":79,"props":601,"children":602},{},[603],{"type":37,"value":604},"Figma comment (digest settimanale)",{"type":32,"tag":79,"props":606,"children":607},{},[608],{"type":37,"value":609},"Notion page update (nessuno guarda)",{"type":32,"tag":33,"props":611,"children":612},{},[613],{"type":32,"tag":52,"props":614,"children":615},{},[616],{"type":37,"value":617},"Come digest:",{"type":32,"tag":75,"props":619,"children":620},{},[621,626,631],{"type":32,"tag":79,"props":622,"children":623},{},[624],{"type":37,"value":625},"Linear daily summary (09:00 mattina)",{"type":32,"tag":79,"props":627,"children":628},{},[629],{"type":37,"value":630},"Figma open comment summary (venerdì 17:00)",{"type":32,"tag":79,"props":632,"children":633},{},[634],{"type":37,"value":635},"CI\u002FCD deploy log (dopo ogni deploy, summario su Slack)",{"type":32,"tag":33,"props":637,"children":638},{},[639],{"type":32,"tag":52,"props":640,"children":641},{},[642],{"type":37,"value":643},"Real-time:",{"type":32,"tag":75,"props":645,"children":646},{},[647,657,662],{"type":32,"tag":79,"props":648,"children":649},{},[650,655],{"type":32,"tag":134,"props":651,"children":653},{"className":652},[],[654],{"type":37,"value":258},{"type":37,"value":656}," (solo incident P0)",{"type":32,"tag":79,"props":658,"children":659},{},[660],{"type":37,"value":661},"Granola client call summary (5 minuti dopo la fine della call)",{"type":32,"tag":79,"props":663,"children":664},{},[665,667,672],{"type":37,"value":666},"Production error (Sentry → Slack, solo al canale ",{"type":32,"tag":134,"props":668,"children":670},{"className":669},[],[671],{"type":37,"value":320},{"type":37,"value":673},")",{"type":32,"tag":33,"props":675,"children":676},{},[677],{"type":37,"value":678},"Quando si installa uno strumento, la prima domanda è: \"Questa notifica deve essere real-time, o va in un digest?\" Default: digest.",{"type":32,"tag":40,"props":680,"children":682},{"id":681},"cosa-fare-ora",[683],{"type":37,"value":684},"Cosa Fare Ora?",{"type":32,"tag":33,"props":686,"children":687},{},[688],{"type":37,"value":689},"Nelle conversazioni sullo tech stack, il riflesso è spesso \"adottiamo questo tool anche noi\". Invece, chiedi: \"Dove dovrebbe vivere canonical questo dato?\" Lo stack Roibase 2026 è costruito su Linear\u002FNotion\u002FSlack\u002FFigma\u002FGranola, ma questi tool possono cambiare — quello che importa è il pattern di integrazione, la disciplina delle notifiche, la cultura async-first. Se nel tuo team ancora senti \"non ricevo le notifiche di X tool\", il problema non è lo strumento — è che l'ownership dei dati non è chiaro.",{"title":16,"searchDepth":691,"depth":691,"links":692},3,[693,697,698,701,702,703,704],{"id":42,"depth":694,"text":45,"children":695},2,[696],{"id":124,"depth":691,"text":127},{"id":155,"depth":694,"text":158},{"id":244,"depth":694,"text":247,"children":699},[700],{"id":346,"depth":691,"text":349},{"id":362,"depth":694,"text":365},{"id":419,"depth":694,"text":422},{"id":575,"depth":694,"text":578},{"id":681,"depth":694,"text":684},"markdown","content:it:lifestyle:tech-stack-2026-operazioni-team.md","content","it\u002Flifestyle\u002Ftech-stack-2026-operazioni-team.md","it\u002Flifestyle\u002Ftech-stack-2026-operazioni-team","md",1782050764691]