WordsEnigma : Un jeu de mots entre Redwood et Prisma
WordsEnigma est un fork avec deux espaces Redwood, web et API. Son modèle relie utilisateurs, langues, banques de mots, parties et essais. Les services GraphQL traduisent les opérations en appels Prisma.
Langages du dépôtTypeScript 97.12%6
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| TypeScript | 487 080 | |
| CSS | 11 156 | |
| JavaScript | 2 001 | |
| Dockerfile | 807 | |
| HTML | 364 | |
| Shell | 125 |
Aperçu
Pourquoi il existe
Moteur de jeu et validateur de dictionnaires en TypeScript supportant plusieurs langues et longueurs de mots.
Cas d’usage
Logique de jeu de lettres algorithmique et heuristiques de résolution.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
Commandes déclarées dans les manifestes
Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Développement et contributions
Testing with Jest
WordsEnigma/README.md
Fonctions et composants 2
- Relations des données
- schema.prisma utilise PostgreSQL. Une Game appartient à un utilisateur et à un mot, référence une banque et possède des essais. Les langues relient mots et préférences; le multilinguisme possède donc un modèle persistant.
- Services et persistance
- games.ts expose les opérations de liste, lecture, création, modification et suppression avec db.game. Les résolveurs de relations chargent utilisateur, mot, banque et essais. Cette couche relie les opérations GraphQL au modèle de données.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Interface Redwood
- API GraphQL
- Résolveurs du service Game
- Client Prisma
- Relations PostgreSQL
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
n0["Interface Redwood"]
n1["API GraphQL"]
n2["Résolveurs du service Game"]
n3["Client Prisma"]
n4["Relations PostgreSQL"]
n0 --> n1
n1 --> n2
n2 --> n3
n3 --> n4
Version texte du diagramme
- Interface Redwood → API GraphQL
- API GraphQL → Résolveurs du service Game
- Résolveurs du service Game → Client Prisma
- Client Prisma → Relations PostgreSQL
Suivre un parcours dans le code
Suivez le résolveur game vers findUnique, puis ses relations. Ces méthodes CRUD ne décrivent pas à elles seules la validation des essais et ne prouvent pas qu’un utilisateur accède seulement à ses propres parties.
Types et structure des fichiers
24 types déclarés, dont 12 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t95c33d5ad155["f"] {
constructor()
}
class tdfd20eddf50b["w6"] {
constructor()
bufferLength()
encoding()
setEncoding()
}
class t2f1e841c76de["e"] {
constructor()
submit()
create()
}
class t4dc7653db721["r"] {
constructor()
create()
}
class t9218f580818e["n"] {
constructor()
}
class t3faaab51d666["s"] {
constructor()
}
class tba189d78e812["IProps"] {
<<interface>>
}
class t1f16c646b417["IState"] {
<<interface>>
}
class t04f5a721d14f["GameBoard"] {
constructor()
eventBus()
componentDidMount()
componentWillUnmount()
}
class tdc6fb562c12d["IProps"] {
<<interface>>
}
class tee5c605d4895["IState"] {
<<interface>>
}
class tb608dc0b97f4["Header"] {
constructor()
render()
}
class b9938495049a9["jwe"] {
<<unresolved_base>>
}
t95c33d5ad155 ..> b9938495049a9 : declared base
class b612c3a755722["p6"] {
<<unresolved_base>>
}
tdfd20eddf50b ..> b612c3a755722 : declared base
class bc2ce90cba9ba["Jqe"] {
<<unresolved_base>>
}
t2f1e841c76de ..> bc2ce90cba9ba : declared base
class b1d2f8b85b03d["zqe"] {
<<unresolved_base>>
}
t4dc7653db721 ..> b1d2f8b85b03d : declared base
class b6e2409b80935["t"] {
<<unresolved_base>>
}
t4dc7653db721 ..> b6e2409b80935 : declared base
t4dc7653db721 <|-- t9218f580818e
class b9589272b3c41["Component"] {
<<unresolved_base>>
}
t04f5a721d14f ..> b9589272b3c41 : declared base
class b5baf1888a7d2["Component"] {
<<unresolved_base>>
}
tb608dc0b97f4 ..> b5baf1888a7d2 : declared base
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
f(class) ·WordsEnigma/.yarn/releases/yarn-3.2.1.cjs:184Méthodes dans l’aperçu :
constructor.Bases déclarées :
jwe.w6(class) ·WordsEnigma/.yarn/releases/yarn-3.2.1.cjs:198Méthodes dans l’aperçu :
constructor, bufferLength, encoding, setEncoding.Bases déclarées :
p6.e(class) ·WordsEnigma/.yarn/releases/yarn-3.2.1.cjs:220Méthodes dans l’aperçu :
constructor, submit, create.Bases déclarées :
Jqe.r(class) ·WordsEnigma/.yarn/releases/yarn-3.2.1.cjs:220Méthodes dans l’aperçu :
constructor, create.Bases déclarées :
zqe, t.n(class) ·WordsEnigma/.yarn/releases/yarn-3.2.1.cjs:307Méthodes dans l’aperçu :
constructor.Bases déclarées :
r.s(class) ·WordsEnigma/.yarn/releases/yarn-3.2.1.cjs:319Méthodes dans l’aperçu :
constructor.IProps(interface) ·WordsEnigma/web/src/pages/MotduJourPage/subcomponents/GameBoard/GameBoard.tsx:6IState(interface) ·WordsEnigma/web/src/pages/MotduJourPage/subcomponents/GameBoard/GameBoard.tsx:11GameBoard(class) ·WordsEnigma/web/src/pages/MotduJourPage/subcomponents/GameBoard/GameBoard.tsx:22Méthodes dans l’aperçu :
constructor, eventBus, componentDidMount, componentWillUnmount.Bases déclarées :
Component.IProps(interface) ·WordsEnigma/web/src/pages/MotduJourPage/subcomponents/Header/Header.tsx:5IState(interface) ·WordsEnigma/web/src/pages/MotduJourPage/subcomponents/Header/Header.tsx:9Header(class) ·WordsEnigma/web/src/pages/MotduJourPage/subcomponents/Header/Header.tsx:12Méthodes dans l’aperçu :
constructor, render.Bases déclarées :
Component.
Référence
221 / 221 fichiers admissibles lus (962 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 2 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["WordsEnigma"]
f0["WordsEnigma/package.json"]
root --> f0
f1["WordsEnigma/api/src/services/games/games.ts"]
root --> f1
f2["README.md"]
root --> f2
f3["WordsEnigma/README.md"]
root --> f3
f4["WordsEnigma/docker-compose.yml"]
root --> f4
f5["WordsEnigma/graphql.config.js"]
root --> f5
f6["WordsEnigma/jest.config.js"]
root --> f6
f7["WordsEnigma/prettier.config.js"]
root --> f7
f8["WordsEnigma/api/jest.config.js"]
root --> f8
f9["WordsEnigma/api/package.json"]
root --> f9
f10["WordsEnigma/api/server.config.js"]
root --> f10
f11["WordsEnigma/scripts/seed.ts"]
root --> f11
f12["WordsEnigma/web/jest.config.js"]
root --> f12
f13["WordsEnigma/web/package.json"]
root --> f13
f14["WordsEnigma/.yarn/releases/yarn-3.2.1.cjs"]
root --> f14
f15["WordsEnigma/scripts/data/fr.ts"]
root --> f15