doppia.os è un'interfaccia web dinamica ispirata a un piccolo sistema operativo, sviluppata con SvelteKit e Cloudflare Workers. Offre finestre interattive per le sezioni Work In Progress, About, Projects e Contact, con metriche in tempo reale e un'esperienza utente curata.
- Schermata di caricamento con transizioni fade-out
- Barra di navigazione responsive
- Finestre dinamiche configurate via Svelte store
- Componente Stats per visualizzare dimensioni e coordinate di ogni finestra
- Banner “Fork me” visibile solo in ambiente di produzione
- Hosting e funzioni serverless con Cloudflare Workers e Pages
- Controlli di qualità con Prettier ed ESLint
- Svelte 5 e SvelteKit
- TypeScript
- Vite come bundler
- Cloudflare Workers (adapter
@sveltejs/adapter-cloudflare) - Wrangler per il deploy
- Prettier e ESLint per formattazione e linting
- Node.js >= 22.14.0 (specificato in
wrangler.jsonc) - npm o pnpm
- Account Cloudflare con CLI Wrangler configurato
# Clona il repository
git clone https://github.com/tuo-username/doppiaos.git
cd doppiaos
# Installa le dipendenze (npm o pnpm)
npm install
# oppure
pnpm installnpm run dev/pnpm dev
Avvia il server di sviluppo (Hot Module Replacement)npm run build/pnpm build
Compila l'applicazione inbuildper la produzionenpm run preview/pnpm preview
Preview locale della build di produzionenpm run check
Sincronizza tipi SvelteKit e lanciasvelte-checknpm run check:watch
Watch mode persvelte-checknpm run lint
Controlla formattazione e lint con Prettier ed ESLintnpm run format
Format del codice con Prettier
- wrangler.jsonc: definisce la directory di output (
.svelte-kit/cloudflare), la compatibility date e la variabileNODE_VERSION. - Variabili sensibili: utilizzare
wrangler secret put <NOME>per aggiungere secret nel progetto. - Ambiente di produzione: la costante
PUBLIC_NODE_ENVcontrolla la visibilità del banner “Fork me”.
/
├─ README.md # Questo file
├─ wrangler.jsonc # Configurazione Cloudflare Wrangler
├─ svelte.config.js # Configurazione SvelteKit (adapter-cloudflare)
├─ vite.config.ts # Configurazione Vite
├─ package.json # Script e dipendenze
├─ tsconfig.json # Configurazione TypeScript
├─ src/
│ ├─ app.html # Template HTML principale
│ ├─ app.css # Stili globali
│ ├─ lib/
│ │ ├─ components/
│ │ │ ├─ forkme.svelte # Banner “Fork me” (prod)
│ │ │ ├─ navbar.svelte # Barra di navigazione
│ │ │ ├─ stats.svelte # Componente metriche finestre
│ │ │ ├─ window.svelte # Componente finestra generica
│ │ │ └─ windows/ # Contenuti delle finestre:
│ │ │ ├─ wip.svelte
│ │ │ ├─ about.svelte
│ │ │ ├─ projects.svelte
│ │ │ └─ contact.svelte
│ │ └─ stores/
│ │ └─ windows.ts # Store Svelte per gestione finestre
│ └─ routes/
│ └─ +page.svelte # Pagina principale (loading + windows)
└─ static/
└─ favicon.png- Loading Screen (
+page.svelte): gestito tramiteonMounte transizionifadedi Svelte. - Navbar (
navbar.svelte): navigazione superiore. - Window Manager:
- Store
windowsStoredefinito insrc/lib/stores/windows.ts. - Componente
Windowgenera finestre basate su dati e proprietà.
- Store
- Stats (
stats.svelte): selezione della finestra attiva e visualizzazione di larghezza, altezza e coordinate. - Forkme (
forkme.svelte): link al repository (solo produzione).
-
Effettua il login a Cloudflare:
wrangler login
-
(Opzionale) Aggiungi secret di ambiente:
wrangler secret put <NOME_SECRET>
-
Deploy su Cloudflare Pages:
wrangler pages publish .svelte-kit/cloudflare --project-name <nome_progetto>
-
Oppure deploy come Worker:
wrangler publish
Le pull request sono benvenute! Apri una issue per segnalare bug o proporre nuove features.
Questo progetto è rilasciato sotto licenza MIT.