Marc Bouvier (Baldir)

Développeur logiciel en quête du sens dans un monde aux ressources limitées.


Devenir de baldir.fr

Reflexions et prochaines évolutions possibles

Réflexions en cours

Mettre en place une base de connaissances ?

Hypothèse : Je ne connais pas de point de départ en français permettant d'avoir une vision générale simple et interconnectée des concepts outils et pratiques du numérique.

Contraintes :

Options (pas mutuellement exclusives)

Alimenter une partie du site avec Grist

Pour pouvoir utiliser des formulaires pour ajouter des informations rapidement

Selon le prototype imaginé sur le prochain site de strasbourg-craft : https://gitlab.com/strasbourg-craft/2027/bretzel-craft#synchroniser-les-données-depuis-grist
Le site chargerait des informations depuis l'API grist pour mettre à jour des fichiers json

import {gristApi} from "./_src/grist-api.js"
import {mapGristSpeakerToSpeaker} from "./_src/speaker.js"
import {writeFile} from 'node:fs/promises'
import {existsSync} from 'node:fs'

// Synchronization from Grist database
// Using Grist API key from .env

// Loads data from Grist tables
// Generates json files to ./data
// Downloads images to ./img

// refresh-images : force downloading already downloaded images
const refresh_images = process.argv.find(it => it === "refresh-images") != null


const collectionsPath = "./_data/"
let gristSpeakers = await gristApi.getSpeakers();
/** @type {Speaker[]} */
let speakers = []

for (const gristSpeaker of gristSpeakers) {
    // Only publish speakers that commited their presence
    if (gristSpeaker.fields.is_visible) {
        let item = await mapGristSpeakerToSpeaker(gristSpeaker, gristApi);
        speakers.push(item)
    }
}
for (const speaker of speakers) {
    const pictureId = speaker.picture_id;
    const pictureUrlMax = speaker.picture.url_max;
    const path = `.${pictureUrlMax}`
    let fileExists = existsSync(path);
    if (!fileExists || (fileExists && refresh_images)) {
        console.log("redownload " + path)
        const blob = await gristApi.downloadAttachment(pictureId)
        await writeFile(path, blob.stream());
    }
}
const jsonSpeakers = JSON.stringify(speakers,null,2);

try {
    await writeFile(collectionsPath + 'speakers.json', jsonSpeakers);
} catch (e) {
    console.error(err);
}

Ressources et possibilités en vrac



[!success] foo
Bar




Wiki links dans eleventy
https://photogabble.co.uk/noteworthy/adding-wiki-links-to-11ty/

Ou encore le récent https://nolebase-integrations.ayaka.io/pages/en/integrations/markdown-it-bi-directional-links/

Markdown It plugin : pour mes citations / questions…

https://nicolas-hoizey.com/articles/2021/02/25/accessible-anchor-links-with-markdown-it-and-eleventy/

https://11tybundle.dev/categories/

https://tylersticka.com/journal/simple-eleventy-3-excerpts/
https://coryd.dev/posts/2024/a-feed-for-everything-and-everything-in-a-feed/

https://hamatti.org/posts/community-websites-with-eleventy/

💪 https://www.bobmonsour.com/posts/adding-webmentions-to-my-site/

💪 https://jamesdoc.com/blog/2023/git-changelog-in-11ty/

https://photogabble.co.uk/changelog/alphabetising-glossary-terms/