Aller au contenu

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.

Application et services Fork
  • Mis à jour
  • TypeScript · 97.12%
  • Unlicense
Crédit amont
Langages du dépôtTypeScript 97.12%6

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
TypeScript97.12%487 080
CSS2.22%11 156
JavaScript0.4%2 001
Dockerfile0.16%807
HTML0.07%364
Shell0.02%125

GitHub · README · Statistiques de langages

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

It’d be hard to scale from side project to startup without a few tests. Redwood fully integrates Jest with the front and the backends and makes it easy to keep your whole app covered by generating test files with all your components and services: To make the integration even more seamless, Redwood augments Jest with database scenarios and GraphQL mocking.
Lire les instructions complètes ↗
Documentation source

2 documents lus parmi 2 candidats.

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.

Contexte système Contexte
  1. Interface Redwood
  2. API GraphQL
  3. Résolveurs du service Game
  4. Client Prisma
  5. 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.

Vue statique de l’architecture de WordsEnigma
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
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

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

Fichiers à lire 3

Références