Liste des choix technologiques du projet Value Props
Je travaille depuis septembre 2023, en mode « solo dev » sur une application du type « knowledge management » que nous avons lancée avec trois co-fondateurs.
Afin de ne pas alourdir la section « Expériences » de mon curriculum vitæ — que je suis en train de mettre à jour —, j’ai décidé de publier dans ce billet quelques sections du README.md
du projet Value Props qui se trouve dans un dépôt Git privé.
Project Design Choices
Opinions:
- The use of a monorepository pattern
- Monolithic application pattern
- No ORM pattern
- The security layer, specifically permission control, is implemented using PostgreSQL Row-Level Security
- I’m trying to move towards Radical Simplicity
- Don’t Build A General Purpose API To Power Your Own Front End
- The page rendering speed, and therefore the execution speed of SQL queries, needs special attention
Components and libraries:
- SSR SvelteKit with Hydration
- PostgreSQL database server
- Postgres.js - PostgreSQL client for Node.js
- Migration powered by graphile-migrate
- Token generated with jsonwebtoken
- PostgreSQL Row-Level Security
- svelte-headlessui
- sveltekit-i18n
- TailwindCSS
- Tabler Icons
- Superforms
- sveltekit-flash-message + svelte-french-toast
- markdown-it
- Svelecte - Flexible autocomplete/select component written in Svelte
- Driver.js - A light-weight, no-dependency, vanilla JavaScript engine to drive the user’s focus across the page
- svelte-dnd-action
- svelt-yjs powered on yjs
- date-fns
- svelte-headless-table
- svelte-splitpanes
- Fuse.js - Powerful, lightweight fuzzy-search library, with zero dependencies
Tooling:
- mise
- Docker and Docker Compose
- NodeJS
- pnpm
- Jest for unit testing
- tbls to generate database documentation
J’envisage peut-être d’y intégrer le moteur de base de données orienté Graph nommé Apache Age.
Je prendrai ma décision en fonction du résultat du projet « Publier un projet de type playground pour tester Apache Age ».
En lien avec ce sujet, j’ai publié un skeleton dans development-kit-doctor-scripts, qui me sert de brique de base pour construire les « Development Kit » de mes projets.