Aller au contenu

Projets open source

Des outils TypeScript que j’écris d’abord pour mes propres besoins, puis que je publie sous licence MIT.

Vincle

Écrire ses vues en JSX et envoyer du HTML. Sans React, sans hydratation, sans JavaScript côté navigateur par défaut.

  • Moteur de rendu JSX vers HTML sans dépendance, avec props et attributs typés.
  • Sortie échappée et URL filtrées par défaut ; la suite de tests est elle-même contrôlée par mutation.
  • Fragments différés et streaming, précompilation, plugin Vite et règles ESLint.
greeting.tsx
import { renderToString } from "@vincle/core";

function Greeting({ name }: { name: string }) {
  return <h1>Hello, {name}!</h1>;
}

const html = await renderToString(
  <Greeting name="world" />,
);
// → "<h1>Hello, world!</h1>"

i18n-tiny

Des traductions vérifiées par TypeScript, sans dépendance et sous les 500 octets compressés.

  • Les clés sont autocomplétées.
  • Un paramètre mal orthographié dans une traduction est une erreur de compilation.
  • Fonctionne dans le navigateur et sous Node.js, sans configuration.
i18n.ts
import { createTypedTranslator } from "@cjean-fr/i18n-tiny";

type Spec = { welcome: readonly ["name"] };

const t = createTypedTranslator<Spec>()({
  welcome: "Bienvenue {name} !",
});

t("welcome", { name: "Christophe" });
// → "Bienvenue Christophe !"

JSON Resume Theme

Un thème JSON Resume qui produit un CV lisible à l’écran et propre à l’impression.

  • Mise en page responsive, optimisée pour l’export PDF.
  • Balises SEO, OpenGraph et JSON-LD générées depuis les données.
  • Le CSS ne contient que les utilitaires Tailwind du CV rendu.
resume.json
{
  "basics": {
    "name": "Christophe Jean",
    "label": "Staff Engineer"
  },
  "work": [ … ]
}