chattare-linux

byP

costruisci un programma simile a zomm che permetta a 20 persone di chattare senza video. Deve essere scaricaribel su pc linux

Landing
Landing

Comments (0)

No comments yet. Be the first!

System Requirements

Page 1 of 8

System Requirements Document for chattare-linux

1. Introduction

chattare-linux è un programma di chat di gruppo testuale, ispirato nella forma a Zoom ma deliberatamente privo di qualsiasi funzionalità video. Serve a far conversare fino a 20 persone in una stanza di solo testo, e deve essere scaricabile e utilizzabile su PC Linux.

Il prodotto nasce da un'esigenza semplice e concreta: disporre di una "stanza" di gruppo con la stessa immediatezza di una call Zoom, ma senza camera, senza microfono e senza il peso di una piattaforma di videoconferenza. L'utente installa il programma una volta sul proprio PC Linux e da quel momento apre stanze numerate, invita il gruppo e conversa per iscritto.

Pubblico di riferimento: utenti Linux attenti alla privacy e piccoli team o organizzatori che vogliono una stanza di gruppo ordinata, leggibile e affidabile — uno strumento che si installa una volta e di cui ci si fida, non un prodotto di tendenza.

Intento del prodotto:

  • Offrire una chat di gruppo esclusivamente testuale, con capienza massima di 20 persone per sessione.
  • Distribuire il programma come pacchetto scaricabile per PC Linux.
  • Mantenere una struttura di "stanza" riconoscibile (sessioni, partecipanti, messaggi) senza alcuna funzione video.
Page 2 of 8

2. System Overview

chattare-linux è un'applicazione desktop per Linux composta da un'interfaccia utente proprietaria e da un backend applicativo che mantiene sessioni, appartenenza dei partecipanti e messaggi testuali.

Attori accettati:

  • Partecipante alla chat — persona che entra in una sessione, legge i messaggi altrui e invia i propri.
  • Organizzatore della sessione — persona che crea e apre la sessione e ne condivide l'accesso con i partecipanti previsti.

Comportamento accettato in sintesi:

  • Presentazione pubblica del programma (chat testuale di gruppo, assenza di video, supporto Linux).
  • Primo utilizzo autonomo con creazione dell'identità applicativa e verifica al ritorno.
  • Creazione e apertura di una sessione con capienza massima di 20 persone e condivisione dell'accesso.
  • Ingresso in una sessione esistente da parte del partecipante.
  • Conversazione testuale condivisa all'interno della sessione attiva, senza video.

Esclusioni esplicite:

  • Nessuna funzionalità video (nessuna camera, nessuna trasmissione video).
  • Nessuna capienza superiore a 20 persone per sessione.
Page 3 of 8

2a. Product Interpretation and Delivery Boundary

Consegna e accesso. chattare-linux è un programma scaricabile per PC Linux: l'utente lo installa sulla propria macchina e lo esegue come applicazione desktop. L'identità applicativa è di proprietà dell'applicazione: serve a legare in modo durevole sessioni, appartenenza alle stanze e cronologia dei messaggi alla persona corretta, e a permettere di riprendere sessioni e conversazioni al ritorno. Il primo utilizzo è self-service (creazione autonoma dell'identità); il ritorno richiede una verifica. Le superfici pubbliche di ingresso (presentazione, primo utilizzo, verifica al ritorno) sono raggiungibili senza identità; le superfici di lavoro (sessioni, creazione sessione, ingresso in sessione, chat) richiedono l'identità stabilita.

Confine corrente / futuro. Sono correnti: la chat testuale di gruppo, la capienza di 20 persone, la distribuzione per Linux, la creazione e condivisione delle sessioni, l'ingresso dei partecipanti e la conversazione testuale. Non sono correnti e non fanno parte dell'accettazione: qualsiasi funzionalità video, la condivisione dello schermo, le chiamate audio, e ogni capacità non elencata nella sezione 3.

Proprietà del lavoro. L'interazione umana (presentazione, primo utilizzo, verifica, creazione sessione, ingresso, invio e lettura messaggi) è di proprietà dell'applicazione tramite le proprie superfici. Il mantenimento di sessioni, limite di 20 partecipanti e messaggi testuali è di proprietà del backend applicativo, che non è una superficie umana.

2c. Page Content and Component Coverage

Page 4 of 8

Landing

  • Informazione/stato: presentazione anonima del programma — chat di gruppo testuale, assenza di video, supporto Linux; stato di connessione al servizio.
  • Azioni primarie: avviare il primo utilizzo (Sign Up); accedere alla verifica al ritorno (Login).
  • Azioni di supporto: consultare la tabella tecnica delle specifiche; copiare i comandi di installazione.
  • Entità di dominio: programma, vincoli del prodotto (nessun video, 20 posti, Linux), comandi di installazione.
  • Responsabilità dei componenti:
    • Banda tipografica di apertura a tutta larghezza con titolo di display e regola rossa a tutta larghezza.
    • Pannello stanza con registro messaggi di esempio e manifesto partecipanti con conteggio tabulare in grande evidenza.
    • Tabella tecnica a tre righe ruled: "Nessun video", "Massimo 20 partecipanti", "Linux: .deb / AppImage / Flatpak", con segni di stato colorati.
    • Blocco terminale monospace bordato con i comandi di installazione e affordance di copia.
    • Intestazione in stile transito con nome dell'app, voci numerate (01 Panoramica / 02 Sessioni / 03 Scarica) e chip di stato "connesso".
  • Stati: loading — scheletro ruled della banda e del pannello; empty — non applicabile (contenuto statico di presentazione); success — contenuto completo con chip di stato verde; error — se lo stato del servizio non è disponibile, il chip passa a segnalazione di avviso e il contenuto di presentazione resta leggibile; recovery — rilettura dello stato del servizio con aggiornamento del chip.

Sign Up

  • Informazione/stato: modulo di primo utilizzo per stabilire l'identità applicativa; stato di invio.
  • Azioni primarie: creare l'identità applicativa e proseguire verso il lavoro protetto.
  • Azioni di supporto: passare alla verifica al ritorno (Login) se l'identità esiste già.
  • Entità di dominio: identità applicativa (credenziali di accesso), sessione utente.
  • Responsabilità dei componenti:
    • Campi ruled per le credenziali di primo utilizzo, con etichette 11px maiuscole.
    • Blocco di invio solido rosso tagliato nel bordo destro del campo.
    • Collegamento alla verifica al ritorno.
  • Stati: loading — blocco di invio disabilitato durante l'invio; empty — campi vuoti con etichette visibili; success — identità stabilita e passaggio al lavoro protetto; error — credenziali non valide o già in uso, messaggio di errore in linea con il campo interessato; recovery — correzione dei campi e nuovo invio senza perdere i dati inseriti.
Page 5 of 8

Login

  • Informazione/stato: modulo di verifica al ritorno per riprendere sessioni e conversazioni.
  • Azioni primarie: verificare l'identità e riprendere il lavoro protetto.
  • Azioni di supporto: passare al primo utilizzo (Sign Up) se l'identità non esiste.
  • Entità di dominio: identità applicativa, sessione utente.
  • Responsabilità dei componenti:
    • Campi ruled per le credenziali di ritorno, con etichette 11px maiuscole.
    • Blocco di invio solido rosso tagliato nel bordo destro del campo.
    • Collegamento al primo utilizzo.
  • Stati: loading — blocco di invio disabilitato durante la verifica; empty — campi vuoti con etichette visibili; success — verifica riuscita e ripresa del lavoro protetto; error — credenziali non riconosciute, messaggio di errore in linea; recovery — nuovo tentativo o passaggio al primo utilizzo.

Sessions

  • Informazione/stato: elenco delle sessioni create dall'organizzatore, con numero di linea, nome della stanza, indicatore di stato colorato e conteggio membri tabulare.
  • Azioni primarie: aprire una sessione esistente; avviare la creazione di una nuova sessione.
  • Azioni di supporto: condividere l'accesso di una sessione esistente.
  • Entità di dominio: sessione (numero di linea, nome, stato, conteggio partecipanti su 20).
  • Responsabilità dei componenti:
    • Rail sinistro persistente (240px) con le stanze come linee numerate ("01 Sala riunioni", "02 Progetto Linux"), punto di stato colorato e conteggio membri tabulare.
    • Regola rossa di 2px che si disegna da sinistra sulla stanza attiva.
    • Azione di creazione nuova sessione.
  • Stati: loading — righe ruled in caricamento; empty — nessuna sessione creata, invito a crearne una; success — elenco con conteggi aggiornati; error — elenco non recuperabile, messaggio con azione di nuovo tentativo; recovery — ricaricamento dell'elenco.
Page 6 of 8

New Session

  • Informazione/stato: modulo di creazione sessione con capienza massima di 20 persone; stato di creazione.
  • Azioni primarie: creare e aprire la sessione.
  • Azioni di supporto: condividere l'accesso alla sessione creata.
  • Entità di dominio: sessione (nome, capienza massima 20, accesso condivisibile).
  • Responsabilità dei componenti:
    • Campo ruled per il nome della sessione, etichetta 11px maiuscola.
    • Indicazione esplicita della capienza massima di 20 persone.
    • Blocco di invio solido rosso tagliato nel bordo destro del campo.
    • Blocco di condivisione dell'accesso dopo la creazione.
  • Stati: loading — blocco di invio disabilitato durante la creazione; empty — campo vuoto con etichetta visibile; success — sessione creata e aperta, accesso condivisibile; error — creazione non riuscita, messaggio in linea; recovery — correzione e nuovo invio senza perdere i dati inseriti.

Join Session

  • Informazione/stato: selezione o indicazione di una sessione esistente e stato di ingresso.
  • Azioni primarie: unirsi alla conversazione della sessione scelta.
  • Azioni di supporto: tornare all'elenco delle sessioni.
  • Entità di dominio: sessione (identificativo/numero di linea, nome, conteggio partecipanti su 20).
  • Responsabilità dei componenti:
    • Campo ruled per indicare la sessione, etichetta 11px maiuscola.
    • Elenco ruled delle sessioni disponibili con conteggio tabulare.
    • Blocco di ingresso solido rosso tagliato nel bordo destro del campo.
  • Stati: loading — blocco di ingresso disabilitato durante l'ingresso; empty — nessuna sessione disponibile o campo vuoto; success — ingresso riuscito e passaggio alla chat; error — sessione inesistente o sessione piena (20/20), con chip di capienza in giallo transito e timbro ruled "SESSIONE PIENA"; recovery — scelta di un'altra sessione o nuovo tentativo.
Page 7 of 8

Chat

  • Informazione/stato: workspace condiviso della sessione attiva — registro messaggi testuali, manifesto partecipanti con conteggio su 20, stato di connessione.
  • Azioni primarie: inviare un messaggio di testo; leggere i messaggi degli altri partecipanti.
  • Azioni di supporto: consultare il manifesto partecipanti; tornare all'elenco delle sessioni.
  • Entità di dominio: sessione attiva, messaggio testuale (autore, testo, orario), partecipante, conteggio partecipanti su 20.
  • Responsabilità dei componenti:
    • Rail sinistro persistente (240px) con le stanze come linee numerate, punto di stato colorato e conteggio membri tabulare; regola rossa di 2px che si disegna da sinistra sulla stanza attiva.
    • Colonna chat come registro ruled: nessun avatar, nome autore in 11px maiuscole sopra il messaggio in 15px, separatore hairline, orario allineato a destra in numeri tabulari.
    • Composer come campo bordato con blocco di invio solido rosso tagliato nel bordo destro.
    • Rail destro (200px) con il manifesto partecipanti come lista allineata etichetta/valore e conteggio "17/20" in numeri tabulari di grande dimensione.
    • Chip di stato connessione che cambia colore con un taglio netto.
  • Stati: loading — registro e manifesto in caricamento; empty — nessun messaggio ancora inviato, invito a scrivere il primo; success — messaggio inviato e visibile nel registro, conteggio partecipanti aggiornato; error — invio non riuscito, messaggio conservato nel composer con segnalazione; recovery — nuovo invio del messaggio conservato; alla ventesima presenza il conteggio diventa "20/20" in giallo transito con timbro ruled "SESSIONE PIENA".
Page 8 of 8

3. Functional Requirements

FR-1 — Presentazione pubblica del programma As a visitatore anonimo I should vedere una presentazione del programma che dichiara la chat di gruppo testuale, l'assenza di video e il supporto Linux so that possa decidere se scaricarlo e usarlo.

  • Provenienza: required_inference (necessaria per rendere eseguibile il percorso accettato di primo utilizzo).
  • Attore: visitatore anonimo (Partecipante alla chat / Organizzatore della sessione prima dell'accesso).
  • Trigger/input: apertura della superficie pubblica di ingresso.
  • Risultato osservabile: contenuto di presentazione visibile con i tre vincoli dichiarati (nessun video, massimo 20 partecipanti, Linux) e i comandi di installazione.
  • Stato di accesso: nessuna identità richiesta.
  • Fallimento/recupero: se lo stato del servizio non è disponibile, il chip di stato segnala l'avviso e il contenuto resta leggibile.
  • Continuazione: avvio del primo utilizzo o passaggio alla verifica al ritorno.

FR-2 — Primo utilizzo con identità applicativa As a Partecipante alla chat o Organizzatore della sessione I should stabilire autonomamente la mia identità applicativa al primo utilizzo so that le mie sessioni e conversazioni restino legate a me e possano essere riprese.

  • Provenienza: required_inference.
  • Attore: Partecipante alla chat / Organizzatore della sessione.
  • Trigger/input: invio delle credenziali di primo utilizzo.
  • Risultato osservabile: identità applicativa stabilita e accesso al lavoro protetto.
  • Stato di accesso: superficie anonima; l'identità viene creata qui.
  • Fallimento/recupero: credenziali non valide o già in uso → errore in linea, correzione e nuovo invio senza perdere i dati inseriti.
  • Continuazione: creazione o ingresso in una sessione.

FR-3 — Verifica al ritorno As a Partecipante alla chat o Organizzatore della sessione I should verificare la mia identità al ritorno so that possa riprendere sessioni e conversazioni.

  • Provenienza: required_inference.
  • Attore: Partecipante alla chat / Organizzatore della sessione.
  • Trigger/input: invio delle credenziali di ritorno.
  • Risultato osservabile: verifica riuscita e ripresa del lavoro protetto.
  • Stato di accesso: superficie anonima; l'identità viene verificata qui.
  • Fallimento/recupero: credenziali non riconosciute → errore in linea, nuovo tentativo o passaggio al primo utilizzo.
  • Continuazione: elenco delle sessioni o ingresso in una sessione.

FR-4 — Creazione e apertura di una sessione As a Organizzatore della sessione I should creare e aprire una sessione di chat con capienza massima di 20 persone so that il gruppo abbia una stanza in cui conversare senza video.

  • Provenienza: explicit (chat di gruppo; capienza 20) + required_inference (meccanica di creazione).
  • Attore: Organizzatore della sessione.
  • Trigger/input: nome della sessione e conferma di creazione.
  • Risultato osservabile: sessione creata e aperta, con capienza massima di 20 persone.
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: creazione non riuscita → messaggio in linea, correzione e nuovo invio senza perdere i dati inseriti.
  • Continuazione: condivisione dell'accesso con i partecipanti previsti.

FR-5 — Condivisione dell'accesso alla sessione As a Organizzatore della sessione I should condividere l'accesso alla sessione creata con i partecipanti previsti so that possano unirsi alla conversazione.

  • Provenienza: required_inference.
  • Attore: Organizzatore della sessione.
  • Trigger/input: azione di condivisione dell'accesso sulla sessione creata.
  • Risultato osservabile: accesso alla sessione disponibile per i partecipanti previsti.
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: condivisione non disponibile → l'organizzatore può riaprire la sessione dall'elenco e ritentare.
  • Continuazione: il partecipante entra nella sessione.

FR-6 — Panoramica delle sessioni create As a Organizzatore della sessione I should vedere l'elenco delle sessioni che ho creato con stato e conteggio partecipanti so that possa riaprirne una o crearne una nuova.

  • Provenienza: required_inference.
  • Attore: Organizzatore della sessione.
  • Trigger/input: apertura dell'elenco delle sessioni.
  • Risultato osservabile: elenco con numero di linea, nome, punto di stato colorato e conteggio membri tabulare su 20.
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: elenco non recuperabile → messaggio con azione di nuovo tentativo.
  • Continuazione: apertura di una sessione esistente o creazione di una nuova.

FR-7 — Ingresso in una sessione esistente As a Partecipante alla chat I should selezionare o indicare una sessione esistente e unirmi alla conversazione so that possa partecipare alla chat di gruppo.

  • Provenienza: required_inference.
  • Attore: Partecipante alla chat.
  • Trigger/input: selezione o indicazione della sessione e conferma di ingresso.
  • Risultato osservabile: ingresso riuscito nella sessione e passaggio alla chat.
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: sessione inesistente o sessione piena (20/20) → chip di capienza in giallo transito con timbro ruled "SESSIONE PIENA"; scelta di un'altra sessione o nuovo tentativo.
  • Continuazione: lettura e invio di messaggi nella sessione attiva.

FR-8 — Invio di messaggi testuali As a Partecipante alla chat o Organizzatore della sessione I should inviare messaggi di testo nella sessione attiva so that possa conversare con il gruppo.

  • Provenienza: explicit (chat testuale, nessun video).
  • Attore: Partecipante alla chat / Organizzatore della sessione.
  • Trigger/input: testo inserito nel composer e invio.
  • Risultato osservabile: messaggio visibile nel registro condiviso con autore, testo e orario.
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: invio non riuscito → messaggio conservato nel composer con segnalazione; nuovo invio.
  • Continuazione: prosecuzione della conversazione.

FR-9 — Lettura dei messaggi degli altri partecipanti As a Partecipante alla chat o Organizzatore della sessione I should vedere i messaggi degli altri partecipanti nel registro della sessione so that possa seguire la conversazione di gruppo.

  • Provenienza: explicit (chat di gruppo).
  • Attore: Partecipante alla chat / Organizzatore della sessione.
  • Trigger/input: apertura della sessione attiva o arrivo di nuovi messaggi.
  • Risultato osservabile: registro ruled con nome autore in 11px maiuscole, testo in 15px, separatore hairline e orario tabulare allineato a destra.
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: registro non aggiornato → indicazione dello stato di connessione e aggiornamento al ripristino.
  • Continuazione: risposta con un nuovo messaggio.

FR-10 — Manifesto partecipanti e capienza della sessione As a Partecipante alla chat o Organizzatore della sessione I should vedere il manifesto dei partecipanti con il conteggio su 20 so that sappia quante persone sono nella stanza e se è piena.

  • Provenienza: explicit (capienza massima 20) + required_inference (manifesto e conteggio).
  • Attore: Partecipante alla chat / Organizzatore della sessione.
  • Trigger/input: apertura della sessione attiva o ingresso/uscita di un partecipante.
  • Risultato osservabile: conteggio tabulare aggiornato (es. "17/20"); alla ventesima presenza "20/20" in giallo transito con timbro ruled "SESSIONE PIENA".
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: conteggio non aggiornato → indicazione dello stato di connessione e riallineamento al ripristino.
  • Continuazione: prosecuzione della conversazione o scelta di un'altra sessione se piena.

FR-11 — Stato di connessione della sessione As a Partecipante alla chat o Organizzatore della sessione I should vedere lo stato di connessione della sessione attiva so that sappia se sono collegato alla stanza.

  • Provenienza: required_inference.
  • Attore: Partecipante alla chat / Organizzatore della sessione.
  • Trigger/input: variazione dello stato di connessione.
  • Risultato osservabile: chip di stato che cambia colore con un taglio netto (verde transito per connesso).
  • Stato di accesso: identità richiesta.
  • Fallimento/recupero: connessione persa → chip in stato di avviso; al ripristino il chip torna verde e il registro si riallinea.
  • Continuazione: prosecuzione della conversazione.

FR-12 — Distribuzione come programma scaricabile per PC Linux As a utente Linux I should scaricare e installare il programma sul mio PC Linux so that possa usarlo come applicazione desktop.

  • Provenienza: explicit.
  • Attore: utente Linux (Partecipante alla chat / Organizzatore della sessione).
  • Trigger/input: comandi di installazione mostrati sulla superficie pubblica (.deb, AppImage, Flatpak).
  • Risultato osservabile: programma installato ed eseguibile su PC Linux.
  • Stato di accesso: nessuna identità richiesta per scaricare e installare.
  • Fallimento/recupero: comando non applicabile alla propria distribuzione → scelta di un formato alternativo tra quelli indicati.
  • Continuazione: primo utilizzo del programma.

FR-13 — Mantenimento di sessioni, limite di 20 partecipanti e messaggi testuali As a sistema I should mantenere sessioni, appartenenza dei partecipanti entro il limite di 20 e messaggi testuali so that la conversazione di gruppo resti coerente e durevole.

  • Provenienza: required_inference.
  • Attore: sistema (backend applicativo).
  • Trigger/input: creazione di sessioni, ingressi/uscite di partecipanti, invio di messaggi.
  • **Risult
Landing design preview
Landing: Read product presentation
Landing: Copy install commands
Sign Up: Create app identity
Login: Verify identity
Sessions: 1. View created sessions
Sessions: 2. Retry list loading
Sessions: Open existing session
Sessions: Start new session
New Session: 1. Create and open session
New Session: 2. Correct and resubmit
New Session: Share session access
Chat: 1. Read messages
Chat: 2. Send message
Chat: View participant count and full stamp
Landing design preview
Landing: Read product presentation
Landing: Copy install commands
Sign Up: Create app identity
Login: Verify identity
Sessions: 1. View created sessions
Sessions: 2. Retry list loading
Sessions: Open existing session
Sessions: Start new session
New Session: 1. Create and open session
New Session: 2. Correct and resubmit
New Session: Share session access
Chat: 1. Read messages
Chat: 2. Send message
Chat: View participant count and full stamp