Date de la création de cette note : 2024-07-16.

Quel est l’objectif de ce projet ?

À partir des POC listés ci-dessous, je souhaite implémenter un moteur HTML de rendu de mon Personal knowledge management. Celui-ci sera propulsé par SvelteKit.

Voir plus loin “Objectif détaillé”.

Pourquoi je souhaite réaliser ce projet ?

Le 30 avril je disais :

Pour le moment, j’utilise Obsidian Quartz pour déployer https://notes.sklein.xyz.

Est-ce que j’en suis satisfait ? Pour le moment, la réponse est non, parce que je ne le maitrise pas assez.

J’ai une grande envie d’implémenter une version personnelle basée sur SvelteKit et Apache Age, mais j’essaie de ne pas tomber dans ce Yak!.

Via de multiples itérations, je souhaite transformer https://notes.sklein.xyz et https://sklein.xyz vers un site qui s’inspire de gwern.net, Andy’s working notes et de Simon Willison - TIL.

Objectif détaillé de ce projet

Dans un premier temps, j’aimerais implémenter une page https://notes.sklein.xyz qui ressemble, par exemple, à la page https://simonwillison.net/2024/Jan/ de Simon Willison.

C’est-à-dire, une page infinie, qui rassemble mes Notes éphémères, avec un système de pagination.

Je souhaite que l’intégralité du contenu de chaque note soit rendue, séparée, par des <hr />.

Pour chaque note, je souhaite, comme dans cet exemple, afficher l’heure et des tags de la note :

Je souhaite aussi séparer les notes par des dates.

La date et l’heure des notes sont définies dans le nom de fichier des notes (YYYY-mm-dd_HHMM.md).

Je souhaite aussi implémenter les pages suivantes :

  • /{date}/ liste toutes les notes d’une journée ;
  • /{note_filename}/ (sans .md) affiche une seule note.

Toutes les notes sont classés à “plat”, c’est-à-dire directement à la racine du site /{note_filename}/ (sans .md).

Roadmap

  • Implémentation d’un script qui injecte des nanoid dans le frontmatter de toutes les notes ;
  • Implémentation d’un script qui injecte type: fleeting_note dans toutes les notes qui se trouvent dans le dossier /Notes éphémères/ ;
  • Implémentation d’un script qui injecte type: evergreen_note à toutes les notes sans type ;
  • Implémentation d’un script qui injecte created_at: ISO 8601 sur les Fleeting Note ;
  • /{note_filename}/ (sans .md) affiche une seule Fleeting Note ;
  • /{date}/ liste toutes les Fleeting Note d’une journée ;
  • / liste de toutes les Fleeting Note de la plus récente à la plus ancienne ;
  • Afficher les Fleeting Note liées aux Evergreen Note en bas des Evergreen Note ;
  • Afficher les backlink sur les Fleeting Note ;
  • Afficher les backlink autre que Fleeting Note sur les pages Evergreen Note ;
  • Rendering des wikilink ;
  • Rendering des #tags ;
  • /tags/{tag_name}/
  • /search/?tags=tagname
  • Support des fichiers binaires (image…)
  • Rendering des Callouts ;
  • Permettre de partager un permalien vers une note, basé sur un nanoid ;
  • Sur la page / implémenter un moteur de recherche, qui permet :
  • Activer l’attribue loading="lazy" sur les images ;
  • Ajouter de la pagination sur / ;
  • Rendering markdown :
    • Rendering des simples liens;
    • Rendering des codes sources.
  • Affichage des tags derrière l’heure : ;
  • Permettre de remplacer les tages du type JaiDécouvert par J'ai découvert pour simplifier la lecture.

Choses que je ne souhaite pas faire

Je souhaite publier quelque chose au plus tôt. Pour cela, dans la première itération, je ne souhaite pas consacrer trop de temps à la mise en forme. Cette première itération sera minimaliste dans son style.

Repository de ce projet :

https://github.com/stephane-klein/sklein-pkm-engine/

Ressources :