← Tutte le idee Strumenti online

DeskBox

Mette ordine nel desktop di Windows con riquadri e widget

Cosa fa

Un programma gratuito e open source per Windows che organizza le icone del desktop in riquadri e aggiunge widget dall'aspetto nativo.

Come guadagna

Progetto open source su GitHub con oltre 7.000 stelle, che non dichiara incassi. Ha licenza GPL: puoi partire dal suo codice, ma se distribuisci la tua versione devi pubblicare anche il tuo codice. Idee nostre per guadagnare: donazioni, versione Pro con temi e widget aggiuntivi.

Rendilo tuo

  • Piccoli programmi per Windows che risolvono un fastidio quotidiano si vendono bene anche a pochi euro.
  • Per gli uffici: desktop ordinato con i collegamenti ai programmi aziendali.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Scrivania in Ordine": un programma per Windows che organizza le icone del desktop in riquadri (es. "Lavoro", "Foto", "Da sistemare") che restano sullo sfondo, con regole automatiche che mettono ogni nuovo file nel riquadro giusto. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Sito: pagina iniziale con video, download e prezzo
2. Programma: riquadri trasparenti sul desktop, ridimensionabili e spostabili
3. Regole: per estensione o nome del file (es. .pdf → Documenti)
4. Impostazioni: aspetto, avvio con Windows, licenza
5. Sito: pagina di attivazione della licenza

Stile: nativo di Windows 11: riquadri con effetto vetro smerigliato (acrylic), angoli arrotondati, carattere "Segoe UI", accento blu Windows #0067C0. Nessuna immagine generica di stock.

Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.

2. Database, account e sicurezza

Collega il progetto a Supabase e attiva la registrazione con email e password.

Crea queste tabelle:
- "licenze": chiave, email, attivazioni (massimo 3 computer), collegate all'acquisto
- nessun dato dei file dell'utente: il programma lavora solo sul computer

Regole di sicurezza obbligatorie:
- la chiave di licenza si verifica con una Edge Function, senza inviare informazioni sui file
- ogni licenza vale per 3 computer

Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.

3. Riquadri sul desktop con Electron

Il programma è fatto con Electron (React dentro una finestra desktop). Ogni riquadro è una finestra trasparente senza bordi, che resta sotto le altre finestre, non compare nella barra delle applicazioni e mostra le icone dei file della sua cartella (codice nei Dettagli tecnici).

Ogni riquadro corrisponde a una cartella vera dentro il Desktop: spostare un file in un riquadro lo sposta in quella cartella, quindi nulla si perde anche disinstallando il programma.

Le regole automatiche osservano il Desktop: quando arriva un file nuovo (es. un download salvato lì), lo spostano nel riquadro giusto in base a estensione o nome.

4. Licenza e aggiornamenti

Il sito vende la licenza: dopo il pagamento arriva per email una chiave, che il programma verifica con una Edge Function (massimo 3 computer). La versione gratuita ha 3 riquadri; la licenza li sblocca tutti, con regole e temi.

Aggiornamenti automatici con electron-updater e programma firmato digitalmente, così Windows non lo segnala come sconosciuto.

5. Pagamenti con Stripe

Aggiungi un pagamento singolo di 12 € una volta sola. Il pagamento invia la chiave di licenza: riquadri illimitati, regole automatiche e temi su 3 computer.

A pagamento riuscito il webhook imposta "pagata" a true nella tabella "licenze", sulla riga del licenza indicata in client_reference_id.

Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.

6. Controlli specifici di questo progetto

Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Sicurezza dei file: disinstalla il programma con dei file nei riquadri: devono restare tutti nelle cartelle del Desktop.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Un riquadro sul desktop (Electron)

Crea una finestra trasparente senza bordi che resta sullo sfondo, e osserva il Desktop per spostare i file nuovi secondo le regole.

// main.ts (processo principale di Electron)
import { app, BrowserWindow } from "electron";
import chokidar from "chokidar";
import { rename } from "node:fs/promises";
import path from "node:path";

export function creaRiquadro(nome: string, x: number, y: number, larghezza = 360, altezza = 260) {
  const finestra = new BrowserWindow({
    x, y, width: larghezza, height: altezza,
    frame: false,                 // niente barra del titolo
    transparent: true,
    skipTaskbar: true,            // non compare nella barra delle applicazioni
    resizable: true,
    focusable: true,
    backgroundMaterial: "acrylic", // effetto vetro di Windows 11
    webPreferences: { preload: path.join(__dirname, "preload.js") },
  });
  finestra.setAlwaysOnTop(false);
  finestra.loadURL("app://riquadro?nome=" + encodeURIComponent(nome));
  return finestra;
}

type Regola = { estensioni: string[]; cartella: string };

export function osservaDesktop(regole: Regola[]) {
  const desktop = app.getPath("desktop");
  chokidar.watch(desktop, { depth: 0, ignoreInitial: true, awaitWriteFinish: true })
    .on("add", async (file) => {
      const est = path.extname(file).toLowerCase();
      const regola = regole.find((r) => r.estensioni.includes(est));
      if (!regola) return;
      const destinazione = path.join(desktop, regola.cartella, path.basename(file));
      await rename(file, destinazione).catch(() => {});   // se fallisce, il file resta dov'è
    });
}

Licenze con massimo 3 computer

La chiave si attiva su un computer alla volta, fino a 3; il computer è identificato da un codice casuale creato dal programma, non da dati personali.

create table licenze (
  chiave text primary key default upper(encode(gen_random_bytes(10), 'hex')),
  email text not null,
  pagata boolean not null default false,
  computer text[] not null default '{}'      -- codici casuali dei computer attivati
);
alter table licenze enable row level security;   -- nessuna regola: solo la Edge Function

create function attiva(chiave_licenza text, codice_computer text) returns boolean
language plpgsql security definer set search_path = public as $
declare l licenze;
begin
  select * into l from licenze where chiave = upper(chiave_licenza) and pagata for update;
  if l.chiave is null then return false; end if;
  if codice_computer = any (l.computer) then return true; end if;     -- già attivato
  if array_length(l.computer, 1) >= 3 then
    raise exception 'Licenza già attiva su 3 computer: disattivane uno dal sito';
  end if;
  update licenze set computer = array_append(computer, codice_computer) where chiave = l.chiave;
  return true;
end $;
revoke execute on function attiva(text, text) from public, anon, authenticated;
grant execute on function attiva(text, text) to service_role;

Pezzi comuni a tutti i progetti

Glossario

Electron
Un modo di creare programmi per Windows, Mac e Linux usando le stesse tecnologie dei siti web.
Firma del codice
Un certificato che dimostra chi ha creato il programma: evita gli avvisi di Windows sui programmi sconosciuti.