-
Notifications
You must be signed in to change notification settings - Fork 69
Data flow
Thomas Herzog edited this page Sep 4, 2021
·
2 revisions
understanding were all the data is coming from and how it moves through through the C0D3.com app
- Lesson Material - currently hosted on notion.io docs *Also have unlinked mdx versions
- Lessons - metadata for each lesson (js0, js1 , js2 ...)
- Challenges - the instructions for each challenge (ie js0/problem 1)
- Submissions - users answers to challenge questions with status (open/passed/needMoreWork,overwritten)
- Comment - a message connected to a submission review
- User - user identification information (name, id, email, ect)
- UserLesson - track when user passed lesson and star status
- Star - tracks stars given to mentors by students
- Session - User, submissions, lessonStatus (UserLesson)
- Alerts - admin added notification messages for all users
We currently have two sources of data in the code app. One is the github repo with all the mdx document pages and the other is the database with all the user submitted data. Below is a rough breakdown of all the layers of abstraction along the way.
-
Github repo <- stores all full page lesson docs and extra learning docs (along with all the app source code)
-
MDX - An extension to markdown that allows react jsx components to be embedded in markdown documents
- @mdx-js/loader - webpack plugin that converts mdx to jsx pages at build time
-
MDX - An extension to markdown that allows react jsx components to be embedded in markdown documents
-
PostgreSQL Database - Stores all user generated data, lesson material and challenge material
-
Digitalocean - hosts all our docker images
-
Docker - lightweight, portable, self-sufficient container
-
caprover - manages our docker containers
-
Prisma - ORM (Object–relational mapping) package for node/typescript apps
-
schema.prisma - prisma generated source of truth for all database stored data
-
graphQL - Query Language used to access the database data
-
apollo graphql - the library we use to implement server/frontend graphQL api
- Reslovers - source of all the queries/mutations
-
typedefs - source of graphql type contracts *Must keep in sync with prisma schema file
-
graphql-code-generator - CLI tool to generate typescript types from graphql scheme
- graphql/index.tsx - outputs from codegen
-
graphql-code-generator - CLI tool to generate typescript types from graphql scheme
-
apollo graphql - the library we use to implement server/frontend graphQL api
-
graphQL - Query Language used to access the database data
-
schema.prisma - prisma generated source of truth for all database stored data
-
Prisma - ORM (Object–relational mapping) package for node/typescript apps
-
caprover - manages our docker containers
-
Docker - lightweight, portable, self-sufficient container
-
Digitalocean - hosts all our docker images