Digital Garden personale costruito su Astro + AstroPaper, pensato per apprendimento evolutivo e note connesse nel tempo.
Questo progetto unisce tre idee:
- Digital Garden evolutivo: le note maturano per stage (
raw 🗂️,learning 🧩,fine-tuned 🧠). - TIL (Today I Learned): appunti brevi e pratici, sempre in stage iniziale.
- Knowledge graph: collegamenti tra note con wikilink
[[...]], backlink e visualizzazione grafo.
L'obiettivo non e pubblicare solo contenuti "perfetti", ma rendere visibile il processo di studio.
- Framework: Astro (base AstroPaper)
- Styling: Tailwind CSS
- Contenuti: Markdown + MDX con Astro Content Collections
- Backlink/Wikilink: braindb
- Graph view: D3.js in componente Astro
- Deploy: GitHub Pages
- Lingua contenuti: italiano
- Node.js 20+
- pnpm (consigliato) oppure npm
pnpm installOppure:
npm install# sviluppo locale
pnpm run dev
# build produzione
pnpm run build
# preview build
pnpm run preview
# crea un nuovo TIL da CLI
pnpm run new-til -- "Titolo del mio TIL"Alternativa con npm:
npm run dev
npm run build
npm run preview
npm run new-til -- "Titolo del mio TIL"src/
content/
notes/ # note lunghe, evergreen, mappe concettuali
til/ # note brevi Today I Learned
_inbox/ # bozze grezze (non pubblicate)
config.ts # schema collection (Zod)
components/
GraphView.astro # grafo D3 interattivo backlink
StageTag.astro # badge stage vicino ai titoli
TilList.astro # lista TIL raggruppata per categoria
pages/
garden.astro # indice note per stage
graph.astro # pagina del grafo
notes/[...slug].astro
til/index.astro # indice TIL per categoria
til/[...slug].astro
templates/
note.md # template nota lunga
til.md # template TIL
scripts/
new-til.ts # CLI generazione TIL
docs/
ai-daily-prompt.md # prompt IA riutilizzabile
public/
graph/backlinks.json # esempio dataset grafo
Ogni nota in frontmatter usa:
raw 🗂️: idea grezza, appunti inizialilearning 🧩: concetto in consolidamentofine-tuned 🧠: nota matura e ben rifinita
Lo stage viene mostrato in pagina tramite il componente StageTag.astro.
Schema unificato per notes e til:
title: string obbligatoriadate: data obbligatoria (YYYY-MM-DD)tags: string[] (default[])stage: enum stage (defaultraw 🗂️)source: URL[] opzionalesummary: string opzionale (max 160)draft: boolean (defaultfalse)
I file in src/content/_inbox restano fuori dalle collection pubbliche.
- Note:
slug-descrittivo.md(es.backlinks-e-wikilink.md) - TIL:
YYYY-MM-DD-slug.md(es.2026-03-01-til-astro-content-collections.md)
- Mantieni tag piccoli e consistenti (es.
astro,typescript,tailwind,knowledge-management) - Nei TIL inserisci sempre
tilcome primo o secondo tag - Usa un tag principale per categoria (quello usato per il grouping in
til/index)
- Parti quasi sempre da
raw 🗂️ - Passa a
learning 🧩quando hai verificato il concetto con esempi - Passa a
fine-tuned 🧠quando la nota e stabile, riusabile e ben collegata
- Crea un TIL da CLI:
pnpm run new-til -- "Titolo"- Apri il file generato in
src/content/til/. - Compila sezioni obbligatorie: "Cosa ho imparato", "Esempio pratico", "Pitfall / Errori comuni".
- Mantieni lunghezza indicativa 150-300 parole.
File guida: docs/ai-daily-prompt.md
Flusso consigliato:
- Durante la giornata raccogli link/snippet/appunti in
_inbox. - Incolla prompt + materiale in Claude/ChatGPT/Copilot.
- Ottieni in output solo Markdown finale con frontmatter valido.
- Salva come nota in
src/content/notes/oppuresrc/content/til/. - Aggiungi wikilink
[[...]]verso note esistenti. - Aggiorna stage in base alla maturita della nota.
- Componente:
src/components/GraphView.astro - Pagina:
/graph - Dataset iniziale:
public/graph/backlinks.json
Il dataset puo essere generato in futuro da braindb e serializzato in JSON (nodes + links).
Configurazione minima consigliata:
- In
astro.config.ts, imposta correttamenteSITE.websiteinsrc/config.ts. - Crea GitHub Action di build e deploy della cartella
distsu Pages. - Esegui build con:
pnpm run build- Pubblica l'output statico
dist/.
Questo setup privilegia semplicita e mantenibilita: poche convenzioni chiare, componenti piccoli, schema unico e flusso editoriale ripetibile.