CONTRIBUTING, SECURITY et modèles GitHub en anglais, CHANGELOG 1.0.0

Les versions françaises passent dans CONTRIBUTING.fr.md et SECURITY.fr.md.
Convention mise à jour : tout texte visible passe par t() avec sa traduction.
Modèles d'issue et de pull request en anglais, le français reste accepté.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
IliesAllaliandClaude Opus 5.5 committed 2026-09-29 16:18:37 +02:00
1 parent 220f4ec643
commit 6067cd0174
11 files changed
+170 -58

No files matched your search

+8 -8
View File
@@ -1,25 +1,25 @@
---
name: Bug
about: Quelque chose ne fonctionne pas comme prévu
about: Something doesn't work as expected
labels: bug
---
<!-- L'issue est publique : ne mettez ni noms, ni dates, ni captures d'une galaxie familiale réelle. -->
<!-- This issue is public: no names, dates or screenshots from a real family tree. Vous pouvez écrire en français. -->
## Ce qui se passe
## What happens
## Ce qui devrait se passer
## What should happen
## Pour reproduire
## To reproduce
1.
2.
## Contexte
## Context
- Où : parenthese.io, ou instance auto-hébergée (commit ou date de mise à jour)
- Navigateur et appareil :
- Where: parenthese.io, or a self-hosted instance (commit or update date)
- Browser and device:
+2 -2
View File
@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Signaler une faille de sécurité
- name: Report a security vulnerability
url: https://github.com/IliesAllali/parenthese/security/policy
about: Jamais dans une issue publique. Signalement privé, voir SECURITY.md.
about: Never in a public issue. Private report, see SECURITY.md.
+8 -6
View File
@@ -1,15 +1,17 @@
---
name: Idée
about: Proposer une amélioration ou une nouvelle fonctionnalité
name: Idea
about: Suggest an improvement or a new feature
labels: enhancement
---
## Le besoin
<!-- Vous pouvez écrire en français. -->
<!-- Ce que vous cherchez à faire, et ce qui bloque aujourd'hui. -->
## The need
<!-- What you are trying to do, and what gets in the way today. -->
## Une piste
## A possible approach
<!-- Facultatif : comment vous l'imagineriez. -->
<!-- Optional: how you would picture it. -->
+8 -8
View File
@@ -1,14 +1,14 @@
## Ce que change cette PR
## What this PR changes
## Pourquoi
## Why
<!-- Lien vers l'issue si elle existe, par exemple : Closes #12 -->
<!-- Link to the issue if there is one, for example: Closes #12 -->
## Vérifications
## Checks
- [ ] Tests, lint et builds passent en local (voir CONTRIBUTING.md)
- [ ] Les textes visibles sont en français
- [ ] Une migration Prisma accompagne tout changement de schéma
- [ ] Capture d'écran jointe si l'interface change
- [ ] Tests, lint and builds pass locally (see CONTRIBUTING.md)
- [ ] New visible text goes through `t()` with its English entry
- [ ] A Prisma migration comes with any schema change
- [ ] Screenshot attached if the interface changes
+37
View File
@@ -0,0 +1,37 @@
# Changelog
Notable changes to Parenthèse. Dates are in YYYY-MM-DD format.
## 1.0.0 (2026-09-29)
First public release. The code has been public since 2026-09-14; this version marks the app as ready to self-host.
### The family tree
- One tree per family, laid out automatically, explored like a map (drag, zoom, search by name).
- A profile for each person: dates and places, occupation, notes, family links.
- Memories on each person: photos, videos (file or YouTube link), audio recordings, quotes, documents, GPS tracks.
- Free annotations on the tree: drawings, stickers, text, photos.
- GEDCOM import and export.
### Sharing with the family
- One link and one sharing password per tree. Relatives look around without an account and suggest additions.
- A welcome screen and a guided flow for relatives who arrive through the link, with a step-by-step guide on parenthese.io.
- Reviewed contributions: the owner applies the family's changes right away or reviews each one.
- A visit log for the owner.
### Interface
- English and French. The app follows the browser's language, with a switch in the app; `?lang=en` or `?lang=fr` forces one.
- Demo tree with a fictional family and real, freely licensed photos (see `frontend/public/demo/CREDITS.md`).
### Self-hosting and data
- `docker compose up` runs the database, the API and the web front end; the CI builds and tests this setup on every push.
- Users can delete a tree or their account from the app; media files are erased with them.
- No analytics on a self-hosted instance unless a PostHog key is provided at build time.
### License
- [PolyForm Noncommercial 1.0.0](LICENSE): free to read, modify and self-host for non-commercial use.
+40
View File
@@ -0,0 +1,40 @@
# Contribuer à Parenthèse
[English version](CONTRIBUTING.md)
Parenthèse est maintenu par une seule personne. Les retours sont les bienvenus, et quelques repères font gagner du temps à tout le monde.
## Avant d'écrire du code
- Un bug ou une idée : ouvrez une issue avec le modèle correspondant.
- Une faille de sécurité : pas d'issue publique, suivez [SECURITY.fr.md](SECURITY.fr.md).
- Pour tout changement plus large qu'une correction, parlez-en d'abord dans une issue. Une pull request non discutée peut être refusée, même soignée.
- Préférez de petites pull requests ciblées : un sujet par PR, un diff qui se relit en quelques minutes.
## Lancer le projet en local
Tout est dans la section « Développer » du [README](README.fr.md).
## Tests
Avant d'ouvrir une pull request, faites passer ce que vérifie la CI :
```bash
npm --prefix frontend ci && npm --prefix frontend run lint && npm --prefix frontend test && npm --prefix frontend run build
npm --prefix landing ci && npm --prefix landing test && npm --prefix landing run build
npm --prefix backend ci && npm --prefix backend run prisma:generate && npm --prefix backend run build && npm --prefix backend test
```
La CI vérifie aussi que les migrations Prisma s'appliquent sur une base vide et reproduisent exactement `backend/prisma/schema.prisma`. Toute modification du schéma s'accompagne donc d'une migration (`npm --prefix backend run prisma:migrate`).
Si vous touchez à Docker ou à nginx, lancez `docker compose up -d --build` puis `bash tools/docker-smoke.sh http://localhost`.
## Conventions
- L'interface est en français et en anglais. Tout texte visible passe par `t()` de `frontend/src/i18n/index.js` : le texte français sert de clé, sa traduction anglaise va dans `frontend/src/i18n/en/`. Un test échoue si une traduction manque.
- Pas de nouvelle dépendance lourde (framework, bibliothèque d'interface, service externe) sans en avoir discuté dans une issue.
- La promesse du README tient : pas de publicité, et aucune mesure d'audience activée par défaut sur une instance auto-hébergée.
## Licence
Parenthèse est publié sous [PolyForm Noncommercial 1.0.0](LICENSE). En proposant une contribution, vous acceptez qu'elle soit publiée sous cette même licence.
+19 -17
View File
@@ -1,21 +1,23 @@
# Contribuer à Parenthèse
# Contributing to Parenthèse
Parenthèse est maintenu par une seule personne. Les retours sont les bienvenus, et quelques repères font gagner du temps à tout le monde.
[Version française](CONTRIBUTING.fr.md)
## Avant d'écrire du code
Parenthèse is maintained by one person. Feedback is welcome, and a few pointers save everyone time. You can write in English or in French.
- Un bug ou une idée : ouvrez une issue avec le modèle correspondant.
- Une faille de sécurité : pas d'issue publique, suivez [SECURITY.md](SECURITY.md).
- Pour tout changement plus large qu'une correction, parlez-en d'abord dans une issue. Une pull request non discutée peut être refusée, même soignée.
- Préférez de petites pull requests ciblées : un sujet par PR, un diff qui se relit en quelques minutes.
## Before writing code
## Lancer le projet en local
- A bug or an idea: open an issue with the matching template.
- A security issue: no public issue, follow [SECURITY.md](SECURITY.md).
- For any change bigger than a fix, talk about it in an issue first. A pull request that wasn't discussed may be declined, even a careful one.
- Prefer small, focused pull requests: one topic per PR, a diff that can be reviewed in a few minutes.
Tout est dans la section « Développer » du [README](README.fr.md).
## Running the project locally
Everything is in the "Development" section of the [README](README.md).
## Tests
Avant d'ouvrir une pull request, faites passer ce que vérifie la CI :
Before opening a pull request, run what the CI checks:
```bash
npm --prefix frontend ci && npm --prefix frontend run lint && npm --prefix frontend test && npm --prefix frontend run build
@@ -23,16 +25,16 @@ npm --prefix landing ci && npm --prefix landing test && npm --prefix landing run
npm --prefix backend ci && npm --prefix backend run prisma:generate && npm --prefix backend run build && npm --prefix backend test
```
La CI vérifie aussi que les migrations Prisma s'appliquent sur une base vide et reproduisent exactement `backend/prisma/schema.prisma`. Toute modification du schéma s'accompagne donc d'une migration (`npm --prefix backend run prisma:migrate`).
The CI also checks that the Prisma migrations apply to an empty database and reproduce `backend/prisma/schema.prisma` exactly. Any schema change therefore comes with a migration (`npm --prefix backend run prisma:migrate`).
Si vous touchez à Docker ou à nginx, lancez `docker compose up -d --build` puis `bash tools/docker-smoke.sh http://localhost`.
If you touch Docker or nginx, run `docker compose up -d --build` then `bash tools/docker-smoke.sh http://localhost`.
## Conventions
- L'interface est en français : libellés, messages, textes d'aide.
- Pas de nouvelle dépendance lourde (framework, bibliothèque d'interface, service externe) sans en avoir discuté dans une issue.
- La promesse du README tient : pas de publicité, et aucune mesure d'audience activée par défaut sur une instance auto-hébergée.
- The interface is in French and English. Every visible text goes through `t()` from `frontend/src/i18n/index.js`, with the French text as the key and its English entry in `frontend/src/i18n/en/`. A test fails if an English entry is missing.
- No new heavy dependency (framework, UI library, external service) without discussing it in an issue.
- The README promise holds: no ads, and no analytics turned on by default on a self-hosted instance.
## Licence
## License
Parenthèse est publié sous [PolyForm Noncommercial 1.0.0](LICENSE). En proposant une contribution, vous acceptez qu'elle soit publiée sous cette même licence.
Parenthèse is published under [PolyForm Noncommercial 1.0.0](LICENSE). By submitting a contribution, you agree that it is published under the same license.
+1 -1
View File
@@ -143,7 +143,7 @@ npm --prefix backend test
## Contribuer
Issues et petites pull requests ciblées sont les bienvenues : la marche à suivre, les tests à faire passer et les conventions sont dans [CONTRIBUTING.md](CONTRIBUTING.md). Pour une faille de sécurité, pas d'issue publique : voir [SECURITY.md](SECURITY.md).
Issues et petites pull requests ciblées sont les bienvenues : la marche à suivre, les tests à faire passer et les conventions sont dans [CONTRIBUTING.fr.md](CONTRIBUTING.fr.md). Pour une faille de sécurité, pas d'issue publique : voir [SECURITY.fr.md](SECURITY.fr.md).
## Licence
+1 -1
View File
@@ -153,7 +153,7 @@ npm --prefix backend test
## Contributing
Issues and small, focused pull requests are welcome. The steps, the tests to pass and the conventions are in [CONTRIBUTING.md](CONTRIBUTING.md) (in French). For a security issue, no public issue please, see [SECURITY.md](SECURITY.md).
Issues and small, focused pull requests are welcome. The steps, the tests to pass and the conventions are in [CONTRIBUTING.md](CONTRIBUTING.md). For a security issue, no public issue please, see [SECURITY.md](SECURITY.md).
## License
+29
View File
@@ -0,0 +1,29 @@
# Sécurité
[English version](SECURITY.md)
## Signaler une faille
Ne décrivez jamais une faille dans une issue, une discussion ou une pull request : tout y est public.
Deux canaux privés :
- l'onglet **Security** de ce dépôt GitHub, bouton « Report a vulnerability » ;
- un email à pro.allali.ilies@gmail.com.
Indiquez si possible ce qui est touché (adresse, route de l'API, fichier), les étapes pour reproduire et l'impact que vous constatez. Un rapport court et précis suffit.
## Périmètre
- L'instance publique [parenthese.io](https://parenthese.io) : le site, l'application et son API.
- Le code de ce dépôt, y compris la configuration d'auto-hébergement (`docker-compose.yml`, images Docker, configuration nginx).
Une instance auto-hébergée par quelqu'un d'autre relève de son administrateur. Si la faille vient du code, elle est dans le périmètre.
Sur parenthese.io, testez uniquement avec votre propre compte et vos propres arbres. N'accédez pas aux données d'autres familles, et pas de déni de service ni de tests automatisés massifs.
## Délai de réponse
Parenthèse est maintenu par une seule personne. Vous recevrez un accusé de réception dès que possible, en général sous une semaine. Les failles graves passent avant tout le reste. Une fois le correctif publié, la faille peut être décrite publiquement, en laissant aux auto-hébergeurs le temps de mettre à jour.
Seule la dernière version de la branche `main` reçoit des correctifs.
+17 -15
View File
@@ -1,27 +1,29 @@
# Sécurité
# Security
## Signaler une faille
[Version française](SECURITY.fr.md)
Ne décrivez jamais une faille dans une issue, une discussion ou une pull request : tout y est public.
## Reporting a vulnerability
Deux canaux privés :
Never describe a vulnerability in an issue, a discussion or a pull request: everything there is public.
- l'onglet **Security** de ce dépôt GitHub, bouton « Report a vulnerability » ;
- un email à pro.allali.ilies@gmail.com.
Two private channels:
Indiquez si possible ce qui est touché (adresse, route de l'API, fichier), les étapes pour reproduire et l'impact que vous constatez. Un rapport court et précis suffit.
- the **Security** tab of this GitHub repository, "Report a vulnerability" button;
- an email to pro.allali.ilies@gmail.com.
## Périmètre
If you can, say what is affected (address, API route, file), the steps to reproduce and the impact you observe. A short, precise report is enough. English or French, as you prefer.
- L'instance publique [parenthese.io](https://parenthese.io) : le site, l'application et son API.
- Le code de ce dépôt, y compris la configuration d'auto-hébergement (`docker-compose.yml`, images Docker, configuration nginx).
## Scope
Une instance auto-hébergée par quelqu'un d'autre relève de son administrateur. Si la faille vient du code, elle est dans le périmètre.
- The public instance [parenthese.io](https://parenthese.io): the website, the app and its API.
- The code in this repository, including the self-hosting setup (`docker-compose.yml`, Docker images, nginx configuration).
Sur parenthese.io, testez uniquement avec votre propre compte et vos propres galaxies. N'accédez pas aux données d'autres familles, et pas de déni de service ni de tests automatisés massifs.
A self-hosted instance run by someone else is the responsibility of its administrator. If the vulnerability comes from the code, it is in scope.
## Délai de réponse
On parenthese.io, test only with your own account and your own trees. Do not access other families' data, and no denial of service or large automated tests.
Parenthèse est maintenu par une seule personne. Vous recevrez un accusé de réception dès que possible, en général sous une semaine. Les failles graves passent avant tout le reste. Une fois le correctif publié, la faille peut être décrite publiquement, en laissant aux auto-hébergeurs le temps de mettre à jour.
## Response time
Seule la dernière version de la branche `main` reçoit des correctifs.
Parenthèse is maintained by one person. You will get an acknowledgment as soon as possible, usually within a week. Serious vulnerabilities come before everything else. Once the fix is published, the vulnerability can be described publicly, leaving self-hosters time to update.
Only the latest version of the `main` branch receives fixes.