diff --git a/.VSCodeCounter/2023-08-11_18-56-14/details.md b/.VSCodeCounter/2023-08-11_18-56-14/details.md deleted file mode 100644 index 1b8dfed..0000000 --- a/.VSCodeCounter/2023-08-11_18-56-14/details.md +++ /dev/null @@ -1,89 +0,0 @@ -# Details - -Date : 2023-08-11 18:56:14 - -Directory /Users/jasonboyett/Documents/Coding/GitHub/speedread - -Total : 73 files, 13035 codes, 205 comments, 370 blanks, all 13610 lines - -[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md) - -## Files - -| filename | language | code | comment | blank | total | -| :-------------------------------------------------------------------------------------- | :----------------- | ----: | ------: | ----: | ----: | -| [.eslintrc.cjs](/.eslintrc.cjs) | JavaScript | 33 | 2 | 3 | 38 | -| [README.md](/README.md) | Markdown | 3 | 0 | 3 | 6 | -| [bable.config.js](/bable.config.js) | JavaScript | 4 | 0 | 1 | 5 | -| [next.config.mjs](/next.config.mjs) | JavaScript | 10 | 11 | 3 | 24 | -| [package-lock.json](/package-lock.json) | JSON | 9,293 | 0 | 1 | 9,294 | -| [package.json](/package.json) | JSON | 81 | 0 | 1 | 82 | -| [postcss.config.cjs](/postcss.config.cjs) | JavaScript | 7 | 0 | 2 | 9 | -| [prettier.config.cjs](/prettier.config.cjs) | JavaScript | 16 | 1 | 2 | 19 | -| [prisma/schema.prisma](/prisma/schema.prisma) | Prisma | 138 | 0 | 23 | 161 | -| [src/components/cubeflasher.tsx](/src/components/cubeflasher.tsx) | TypeScript JSX | 210 | 2 | 12 | 224 | -| [src/components/evensandodds.tsx](/src/components/evensandodds.tsx) | TypeScript JSX | 190 | 0 | 18 | 208 | -| [src/components/flashingcell.tsx](/src/components/flashingcell.tsx) | TypeScript JSX | 308 | 4 | 26 | 338 | -| [src/components/globals.d.ts](/src/components/globals.d.ts) | TypeScript | 29 | 0 | 4 | 33 | -| [src/components/homebutton.tsx](/src/components/homebutton.tsx) | TypeScript JSX | 19 | 0 | 3 | 22 | -| [src/components/loadingspinner.tsx](/src/components/loadingspinner.tsx) | TypeScript JSX | 24 | 0 | 1 | 25 | -| [src/components/schultetable.tsx](/src/components/schultetable.tsx) | TypeScript JSX | 162 | 1 | 8 | 171 | -| [src/components/settingsbutton.tsx](/src/components/settingsbutton.tsx) | TypeScript JSX | 19 | 0 | 2 | 21 | -| [src/components/speedtest.tsx](/src/components/speedtest.tsx) | TypeScript JSX | 195 | 0 | 8 | 203 | -| [src/components/tests/evensandodds.test.ts](/src/components/tests/evensandodds.test.ts) | TypeScript | 92 | 0 | 5 | 97 | -| [src/components/wordchanger.tsx](/src/components/wordchanger.tsx) | TypeScript JSX | 76 | 1 | 10 | 87 | -| [src/cva/cube-flasher.tsx](/src/cva/cube-flasher.tsx) | TypeScript JSX | 32 | 0 | 5 | 37 | -| [src/cva/flashingStyles.tsx](/src/cva/flashingStyles.tsx) | TypeScript JSX | 38 | 0 | 5 | 43 | -| [src/cva/fontProvider.tsx](/src/cva/fontProvider.tsx) | TypeScript JSX | 36 | 0 | 5 | 41 | -| [src/cva/highlightSelectorButton.tsx](/src/cva/highlightSelectorButton.tsx) | TypeScript JSX | 66 | 0 | 6 | 72 | -| [src/env.mjs](/src/env.mjs) | JavaScript | 41 | 23 | 13 | 77 | -| [src/hooks/useInterval.ts](/src/hooks/useInterval.ts) | TypeScript | 19 | 2 | 4 | 25 | -| [src/hooks/useIsVisible.ts](/src/hooks/useIsVisible.ts) | TypeScript | 16 | 0 | 4 | 20 | -| [src/hooks/useSwitcher.ts](/src/hooks/useSwitcher.ts) | TypeScript | 94 | 0 | 10 | 104 | -| [src/middleware.ts](/src/middleware.ts) | TypeScript | 8 | 0 | 3 | 11 | -| [src/pages/\_app.tsx](/src/pages/_app.tsx) | TypeScript JSX | 14 | 0 | 3 | 17 | -| [src/pages/api/trpc/[trpc].ts](/src/pages/api/trpc/%5Btrpc%5D.ts) | TypeScript | 16 | 1 | 3 | 20 | -| [src/pages/done.tsx](/src/pages/done.tsx) | TypeScript JSX | 28 | 0 | 2 | 30 | -| [src/pages/exercises/cubebythree.tsx](/src/pages/exercises/cubebythree.tsx) | TypeScript JSX | 16 | 0 | 2 | 18 | -| [src/pages/exercises/cubebytwo.tsx](/src/pages/exercises/cubebytwo.tsx) | TypeScript JSX | 16 | 0 | 2 | 18 | -| [src/pages/exercises/evennumbers.tsx](/src/pages/exercises/evennumbers.tsx) | TypeScript JSX | 73 | 1 | 3 | 77 | -| [src/pages/exercises/flashfourbyone.tsx](/src/pages/exercises/flashfourbyone.tsx) | TypeScript JSX | 24 | 0 | 4 | 28 | -| [src/pages/exercises/flashonebyone.tsx](/src/pages/exercises/flashonebyone.tsx) | TypeScript JSX | 27 | 0 | 4 | 31 | -| [src/pages/exercises/flashonebytwo.tsx](/src/pages/exercises/flashonebytwo.tsx) | TypeScript JSX | 24 | 0 | 4 | 28 | -| [src/pages/exercises/flashtwobyone.tsx](/src/pages/exercises/flashtwobyone.tsx) | TypeScript JSX | 24 | 0 | 4 | 28 | -| [src/pages/exercises/flashtwobytwo.tsx](/src/pages/exercises/flashtwobytwo.tsx) | TypeScript JSX | 24 | 0 | 4 | 28 | -| [src/pages/exercises/schulteby3.tsx](/src/pages/exercises/schulteby3.tsx) | TypeScript JSX | 24 | 0 | 3 | 27 | -| [src/pages/exercises/schulteby5.tsx](/src/pages/exercises/schulteby5.tsx) | TypeScript JSX | 24 | 0 | 3 | 27 | -| [src/pages/exercises/schulteby7.tsx](/src/pages/exercises/schulteby7.tsx) | TypeScript JSX | 24 | 0 | 3 | 27 | -| [src/pages/exercises/speedtest.tsx](/src/pages/exercises/speedtest.tsx) | TypeScript JSX | 38 | 0 | 4 | 42 | -| [src/pages/exercises/wordchange.tsx](/src/pages/exercises/wordchange.tsx) | TypeScript JSX | 25 | 0 | 4 | 29 | -| [src/pages/index.tsx](/src/pages/index.tsx) | TypeScript JSX | 64 | 0 | 3 | 67 | -| [src/pages/loadnext.tsx](/src/pages/loadnext.tsx) | TypeScript JSX | 93 | 0 | 6 | 99 | -| [src/pages/nav.tsx](/src/pages/nav.tsx) | TypeScript JSX | 56 | 0 | 7 | 63 | -| [src/pages/next.tsx](/src/pages/next.tsx) | TypeScript JSX | 54 | 1 | 2 | 57 | -| [src/pages/settings.tsx](/src/pages/settings.tsx) | TypeScript JSX | 320 | 0 | 3 | 323 | -| [src/pages/setup.tsx](/src/pages/setup.tsx) | TypeScript JSX | 87 | 0 | 3 | 90 | -| [src/pages/signin.tsx](/src/pages/signin.tsx) | TypeScript JSX | 24 | 0 | 2 | 26 | -| [src/pages/signup.tsx](/src/pages/signup.tsx) | TypeScript JSX | 28 | 0 | 4 | 32 | -| [src/server/api/context.ts](/src/server/api/context.ts) | TypeScript | 0 | 22 | 1 | 23 | -| [src/server/api/root.ts](/src/server/api/root.ts) | TypeScript | 12 | 6 | 3 | 21 | -| [src/server/api/routers/app.ts](/src/server/api/routers/app.ts) | TypeScript | 123 | 0 | 7 | 130 | -| [src/server/api/routers/example.ts](/src/server/api/routers/example.ts) | TypeScript | 17 | 0 | 3 | 20 | -| [src/server/api/trpc.ts](/src/server/api/trpc.ts) | TypeScript | 43 | 56 | 11 | 110 | -| [src/server/db.ts](/src/server/db.ts) | TypeScript | 10 | 0 | 5 | 15 | -| [src/stores/useCubeStore.ts](/src/stores/useCubeStore.ts) | TypeScript | 18 | 0 | 5 | 23 | -| [src/stores/useMutateUser.ts](/src/stores/useMutateUser.ts) | TypeScript | 17 | 0 | 3 | 20 | -| [src/stores/userStore.ts](/src/stores/userStore.ts) | TypeScript | 19 | 6 | 5 | 30 | -| [src/styles/globals.css](/src/styles/globals.css) | CSS | 17 | 0 | 11 | 28 | -| [src/utils/api.ts](/src/utils/api.ts) | TypeScript | 30 | 32 | 7 | 69 | -| [src/utils/helpers.ts](/src/utils/helpers.ts) | TypeScript | 136 | 8 | 13 | 157 | -| [src/utils/schema.ts](/src/utils/schema.ts) | TypeScript | 16 | 0 | 3 | 19 | -| [src/utils/types.ts](/src/utils/types.ts) | TypeScript | 33 | 13 | 7 | 53 | -| [src/utils/validators.ts](/src/utils/validators.ts) | TypeScript | 70 | 0 | 6 | 76 | -| [tailwind.config.cjs](/tailwind.config.cjs) | JavaScript | 18 | 1 | 2 | 21 | -| [tsconfig.json](/tsconfig.json) | JSON with Comments | 29 | 6 | 1 | 36 | -| [turbo.json](/turbo.json) | JSON | 6 | 5 | 0 | 11 | -| [vite.config.ts](/vite.config.ts) | TypeScript | 5 | 0 | 2 | 7 | -| [vitest.config.ts](/vitest.config.ts) | TypeScript | 10 | 0 | 2 | 12 | - -[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md) diff --git a/.VSCodeCounter/2023-08-11_18-56-14/results.csv b/.VSCodeCounter/2023-08-11_18-56-14/results.csv deleted file mode 100644 index a86c223..0000000 --- a/.VSCodeCounter/2023-08-11_18-56-14/results.csv +++ /dev/null @@ -1,75 +0,0 @@ -"filename", "language", "TypeScript JSX", "TypeScript", "JavaScript", "CSS", "JSON with Comments", "JSON", "Markdown", "Prisma", "comment", "blank", "total" -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/.eslintrc.cjs", "JavaScript", 0, 0, 33, 0, 0, 0, 0, 0, 2, 3, 38 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/README.md", "Markdown", 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 6 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/bable.config.js", "JavaScript", 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 5 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/next.config.mjs", "JavaScript", 0, 0, 10, 0, 0, 0, 0, 0, 11, 3, 24 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/package-lock.json", "JSON", 0, 0, 0, 0, 0, 9293, 0, 0, 0, 1, 9294 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/package.json", "JSON", 0, 0, 0, 0, 0, 81, 0, 0, 0, 1, 82 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/postcss.config.cjs", "JavaScript", 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 9 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/prettier.config.cjs", "JavaScript", 0, 0, 16, 0, 0, 0, 0, 0, 1, 2, 19 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/prisma/schema.prisma", "Prisma", 0, 0, 0, 0, 0, 0, 0, 138, 0, 23, 161 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/cubeflasher.tsx", "TypeScript JSX", 210, 0, 0, 0, 0, 0, 0, 0, 2, 12, 224 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/evensandodds.tsx", "TypeScript JSX", 190, 0, 0, 0, 0, 0, 0, 0, 0, 18, 208 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/flashingcell.tsx", "TypeScript JSX", 308, 0, 0, 0, 0, 0, 0, 0, 4, 26, 338 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/globals.d.ts", "TypeScript", 0, 29, 0, 0, 0, 0, 0, 0, 0, 4, 33 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/homebutton.tsx", "TypeScript JSX", 19, 0, 0, 0, 0, 0, 0, 0, 0, 3, 22 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/loadingspinner.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/schultetable.tsx", "TypeScript JSX", 162, 0, 0, 0, 0, 0, 0, 0, 1, 8, 171 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/settingsbutton.tsx", "TypeScript JSX", 19, 0, 0, 0, 0, 0, 0, 0, 0, 2, 21 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/speedtest.tsx", "TypeScript JSX", 195, 0, 0, 0, 0, 0, 0, 0, 0, 8, 203 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/tests/evensandodds.test.ts", "TypeScript", 0, 92, 0, 0, 0, 0, 0, 0, 0, 5, 97 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/wordchanger.tsx", "TypeScript JSX", 76, 0, 0, 0, 0, 0, 0, 0, 1, 10, 87 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/cube-flasher.tsx", "TypeScript JSX", 32, 0, 0, 0, 0, 0, 0, 0, 0, 5, 37 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/flashingStyles.tsx", "TypeScript JSX", 38, 0, 0, 0, 0, 0, 0, 0, 0, 5, 43 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/fontProvider.tsx", "TypeScript JSX", 36, 0, 0, 0, 0, 0, 0, 0, 0, 5, 41 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/highlightSelectorButton.tsx", "TypeScript JSX", 66, 0, 0, 0, 0, 0, 0, 0, 0, 6, 72 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/env.mjs", "JavaScript", 0, 0, 41, 0, 0, 0, 0, 0, 23, 13, 77 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useInterval.ts", "TypeScript", 0, 19, 0, 0, 0, 0, 0, 0, 2, 4, 25 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useIsVisible.ts", "TypeScript", 0, 16, 0, 0, 0, 0, 0, 0, 0, 4, 20 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useSwitcher.ts", "TypeScript", 0, 94, 0, 0, 0, 0, 0, 0, 0, 10, 104 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/middleware.ts", "TypeScript", 0, 8, 0, 0, 0, 0, 0, 0, 0, 3, 11 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/_app.tsx", "TypeScript JSX", 14, 0, 0, 0, 0, 0, 0, 0, 0, 3, 17 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/api/trpc/[trpc].ts", "TypeScript", 0, 16, 0, 0, 0, 0, 0, 0, 1, 3, 20 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/done.tsx", "TypeScript JSX", 28, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/cubebythree.tsx", "TypeScript JSX", 16, 0, 0, 0, 0, 0, 0, 0, 0, 2, 18 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/cubebytwo.tsx", "TypeScript JSX", 16, 0, 0, 0, 0, 0, 0, 0, 0, 2, 18 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/evennumbers.tsx", "TypeScript JSX", 73, 0, 0, 0, 0, 0, 0, 0, 1, 3, 77 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashfourbyone.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashonebyone.tsx", "TypeScript JSX", 27, 0, 0, 0, 0, 0, 0, 0, 0, 4, 31 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashonebytwo.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashtwobyone.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashtwobytwo.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby3.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 3, 27 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby5.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 3, 27 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby7.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 3, 27 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/speedtest.tsx", "TypeScript JSX", 38, 0, 0, 0, 0, 0, 0, 0, 0, 4, 42 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/wordchange.tsx", "TypeScript JSX", 25, 0, 0, 0, 0, 0, 0, 0, 0, 4, 29 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/index.tsx", "TypeScript JSX", 64, 0, 0, 0, 0, 0, 0, 0, 0, 3, 67 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/loadnext.tsx", "TypeScript JSX", 93, 0, 0, 0, 0, 0, 0, 0, 0, 6, 99 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/nav.tsx", "TypeScript JSX", 56, 0, 0, 0, 0, 0, 0, 0, 0, 7, 63 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/next.tsx", "TypeScript JSX", 54, 0, 0, 0, 0, 0, 0, 0, 1, 2, 57 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/settings.tsx", "TypeScript JSX", 320, 0, 0, 0, 0, 0, 0, 0, 0, 3, 323 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/setup.tsx", "TypeScript JSX", 87, 0, 0, 0, 0, 0, 0, 0, 0, 3, 90 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/signin.tsx", "TypeScript JSX", 24, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/signup.tsx", "TypeScript JSX", 28, 0, 0, 0, 0, 0, 0, 0, 0, 4, 32 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/context.ts", "TypeScript", 0, 0, 0, 0, 0, 0, 0, 0, 22, 1, 23 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/root.ts", "TypeScript", 0, 12, 0, 0, 0, 0, 0, 0, 6, 3, 21 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/routers/app.ts", "TypeScript", 0, 123, 0, 0, 0, 0, 0, 0, 0, 7, 130 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/routers/example.ts", "TypeScript", 0, 17, 0, 0, 0, 0, 0, 0, 0, 3, 20 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/trpc.ts", "TypeScript", 0, 43, 0, 0, 0, 0, 0, 0, 56, 11, 110 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/db.ts", "TypeScript", 0, 10, 0, 0, 0, 0, 0, 0, 0, 5, 15 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/useCubeStore.ts", "TypeScript", 0, 18, 0, 0, 0, 0, 0, 0, 0, 5, 23 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/useMutateUser.ts", "TypeScript", 0, 17, 0, 0, 0, 0, 0, 0, 0, 3, 20 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/userStore.ts", "TypeScript", 0, 19, 0, 0, 0, 0, 0, 0, 6, 5, 30 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/styles/globals.css", "CSS", 0, 0, 0, 17, 0, 0, 0, 0, 0, 11, 28 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/api.ts", "TypeScript", 0, 30, 0, 0, 0, 0, 0, 0, 32, 7, 69 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/helpers.ts", "TypeScript", 0, 136, 0, 0, 0, 0, 0, 0, 8, 13, 157 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/schema.ts", "TypeScript", 0, 16, 0, 0, 0, 0, 0, 0, 0, 3, 19 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/types.ts", "TypeScript", 0, 33, 0, 0, 0, 0, 0, 0, 13, 7, 53 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/validators.ts", "TypeScript", 0, 70, 0, 0, 0, 0, 0, 0, 0, 6, 76 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/tailwind.config.cjs", "JavaScript", 0, 0, 18, 0, 0, 0, 0, 0, 1, 2, 21 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/tsconfig.json", "JSON with Comments", 0, 0, 0, 0, 29, 0, 0, 0, 6, 1, 36 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/turbo.json", "JSON", 0, 0, 0, 0, 0, 6, 0, 0, 5, 0, 11 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/vite.config.ts", "TypeScript", 0, 5, 0, 0, 0, 0, 0, 0, 0, 2, 7 -"/Users/jasonboyett/Documents/Coding/GitHub/speedread/vitest.config.ts", "TypeScript", 0, 10, 0, 0, 0, 0, 0, 0, 0, 2, 12 -"Total", "-", 2506, 833, 129, 17, 29, 9380, 3, 138, 205, 370, 13610 \ No newline at end of file diff --git a/.VSCodeCounter/2023-08-11_18-56-14/results.json b/.VSCodeCounter/2023-08-11_18-56-14/results.json deleted file mode 100644 index d0cc137..0000000 --- a/.VSCodeCounter/2023-08-11_18-56-14/results.json +++ /dev/null @@ -1,440 +0,0 @@ -{ - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/signin.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/done.tsx": { - "language": "TypeScript JSX", - "code": 28, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/next.tsx": { - "language": "TypeScript JSX", - "code": 54, - "comment": 1, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/api/trpc/%5Btrpc%5D.ts": { - "language": "TypeScript", - "code": 16, - "comment": 1, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/_app.tsx": { - "language": "TypeScript JSX", - "code": 14, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/wordchange.tsx": { - "language": "TypeScript JSX", - "code": 25, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/cubebytwo.tsx": { - "language": "TypeScript JSX", - "code": 16, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashonebyone.tsx": { - "language": "TypeScript JSX", - "code": 27, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/evennumbers.tsx": { - "language": "TypeScript JSX", - "code": 73, - "comment": 1, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashtwobyone.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashtwobytwo.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashfourbyone.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/speedtest.tsx": { - "language": "TypeScript JSX", - "code": 38, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby5.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby7.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/cubebythree.tsx": { - "language": "TypeScript JSX", - "code": 16, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby3.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashonebytwo.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/setup.tsx": { - "language": "TypeScript JSX", - "code": 87, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/signup.tsx": { - "language": "TypeScript JSX", - "code": 28, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/loadnext.tsx": { - "language": "TypeScript JSX", - "code": 93, - "comment": 0, - "blank": 6 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/nav.tsx": { - "language": "TypeScript JSX", - "code": 56, - "comment": 0, - "blank": 7 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/index.tsx": { - "language": "TypeScript JSX", - "code": 64, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/settings.tsx": { - "language": "TypeScript JSX", - "code": 320, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/env.mjs": { - "language": "JavaScript", - "code": 41, - "comment": 23, - "blank": 13 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/fontProvider.tsx": { - "language": "TypeScript JSX", - "code": 36, - "comment": 0, - "blank": 5 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/flashingStyles.tsx": { - "language": "TypeScript JSX", - "code": 38, - "comment": 0, - "blank": 5 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/cube-flasher.tsx": { - "language": "TypeScript JSX", - "code": 32, - "comment": 0, - "blank": 5 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/highlightSelectorButton.tsx": { - "language": "TypeScript JSX", - "code": 66, - "comment": 0, - "blank": 6 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useIsVisible.ts": { - "language": "TypeScript", - "code": 16, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useInterval.ts": { - "language": "TypeScript", - "code": 19, - "comment": 2, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useSwitcher.ts": { - "language": "TypeScript", - "code": 94, - "comment": 0, - "blank": 10 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/wordchanger.tsx": { - "language": "TypeScript JSX", - "code": 76, - "comment": 1, - "blank": 10 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/schultetable.tsx": { - "language": "TypeScript JSX", - "code": 162, - "comment": 1, - "blank": 8 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/settingsbutton.tsx": { - "language": "TypeScript JSX", - "code": 19, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/evensandodds.tsx": { - "language": "TypeScript JSX", - "code": 190, - "comment": 0, - "blank": 18 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/loadingspinner.tsx": { - "language": "TypeScript JSX", - "code": 24, - "comment": 0, - "blank": 1 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/homebutton.tsx": { - "language": "TypeScript JSX", - "code": 19, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/tests/evensandodds.test.ts": { - "language": "TypeScript", - "code": 92, - "comment": 0, - "blank": 5 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/cubeflasher.tsx": { - "language": "TypeScript JSX", - "code": 210, - "comment": 2, - "blank": 12 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/speedtest.tsx": { - "language": "TypeScript JSX", - "code": 195, - "comment": 0, - "blank": 8 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/flashingcell.tsx": { - "language": "TypeScript JSX", - "code": 308, - "comment": 4, - "blank": 26 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/globals.d.ts": { - "language": "TypeScript", - "code": 29, - "comment": 0, - "blank": 4 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/validators.ts": { - "language": "TypeScript", - "code": 70, - "comment": 0, - "blank": 6 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/api.ts": { - "language": "TypeScript", - "code": 30, - "comment": 32, - "blank": 7 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/types.ts": { - "language": "TypeScript", - "code": 33, - "comment": 13, - "blank": 7 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/helpers.ts": { - "language": "TypeScript", - "code": 136, - "comment": 8, - "blank": 13 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/schema.ts": { - "language": "TypeScript", - "code": 16, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/db.ts": { - "language": "TypeScript", - "code": 10, - "comment": 0, - "blank": 5 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/context.ts": { - "language": "TypeScript", - "code": 0, - "comment": 22, - "blank": 1 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/styles/globals.css": { - "language": "CSS", - "code": 17, - "comment": 0, - "blank": 11 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/root.ts": { - "language": "TypeScript", - "code": 12, - "comment": 6, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/trpc.ts": { - "language": "TypeScript", - "code": 43, - "comment": 56, - "blank": 11 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/routers/example.ts": { - "language": "TypeScript", - "code": 17, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/useCubeStore.ts": { - "language": "TypeScript", - "code": 18, - "comment": 0, - "blank": 5 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/userStore.ts": { - "language": "TypeScript", - "code": 19, - "comment": 6, - "blank": 5 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/useMutateUser.ts": { - "language": "TypeScript", - "code": 17, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/middleware.ts": { - "language": "TypeScript", - "code": 8, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/vite.config.ts": { - "language": "TypeScript", - "code": 5, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/tsconfig.json": { - "language": "JSON with Comments", - "code": 29, - "comment": 6, - "blank": 1 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/prettier.config.cjs": { - "language": "JavaScript", - "code": 16, - "comment": 1, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/vitest.config.ts": { - "language": "TypeScript", - "code": 10, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/package.json": { - "language": "JSON", - "code": 81, - "comment": 0, - "blank": 1 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/tailwind.config.cjs": { - "language": "JavaScript", - "code": 18, - "comment": 1, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/routers/app.ts": { - "language": "TypeScript", - "code": 123, - "comment": 0, - "blank": 7 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/.eslintrc.cjs": { - "language": "JavaScript", - "code": 33, - "comment": 2, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/bable.config.js": { - "language": "JavaScript", - "code": 4, - "comment": 0, - "blank": 1 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/postcss.config.cjs": { - "language": "JavaScript", - "code": 7, - "comment": 0, - "blank": 2 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/next.config.mjs": { - "language": "JavaScript", - "code": 10, - "comment": 11, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/README.md": { - "language": "Markdown", - "code": 3, - "comment": 0, - "blank": 3 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/prisma/schema.prisma": { - "language": "Prisma", - "code": 138, - "comment": 0, - "blank": 23 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/turbo.json": { - "language": "JSON", - "code": 6, - "comment": 5, - "blank": 0 - }, - "file:///Users/jasonboyett/Documents/Coding/GitHub/speedread/package-lock.json": { - "language": "JSON", - "code": 9293, - "comment": 0, - "blank": 1 - } -} diff --git a/.VSCodeCounter/2023-08-11_18-56-14/results.md b/.VSCodeCounter/2023-08-11_18-56-14/results.md deleted file mode 100644 index 34cd6fd..0000000 --- a/.VSCodeCounter/2023-08-11_18-56-14/results.md +++ /dev/null @@ -1,52 +0,0 @@ -# Summary - -Date : 2023-08-11 18:56:14 - -Directory /Users/jasonboyett/Documents/Coding/GitHub/speedread - -Total : 73 files, 13035 codes, 205 comments, 370 blanks, all 13610 lines - -Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md) - -## Languages - -| language | files | code | comment | blank | total | -| :----------------- | ----: | ----: | ------: | ----: | ----: | -| JSON | 3 | 9,380 | 5 | 2 | 9,387 | -| TypeScript JSX | 36 | 2,506 | 10 | 188 | 2,704 | -| TypeScript | 23 | 833 | 146 | 116 | 1,095 | -| Prisma | 1 | 138 | 0 | 23 | 161 | -| JavaScript | 7 | 129 | 38 | 26 | 193 | -| JSON with Comments | 1 | 29 | 6 | 1 | 36 | -| CSS | 1 | 17 | 0 | 11 | 28 | -| Markdown | 1 | 3 | 0 | 3 | 6 | - -## Directories - -| path | files | code | comment | blank | total | -| :--------------------- | ----: | -----: | ------: | ----: | -----: | -| . | 73 | 13,035 | 205 | 370 | 13,610 | -| . (Files) | 13 | 9,515 | 26 | 23 | 9,564 | -| prisma | 1 | 138 | 0 | 23 | 161 | -| src | 59 | 3,382 | 179 | 324 | 3,885 | -| src (Files) | 2 | 49 | 23 | 16 | 88 | -| src/components | 11 | 1,324 | 8 | 97 | 1,429 | -| src/components (Files) | 10 | 1,232 | 8 | 92 | 1,332 | -| src/components/tests | 1 | 92 | 0 | 5 | 97 | -| src/cva | 4 | 172 | 0 | 21 | 193 | -| src/hooks | 3 | 129 | 2 | 18 | 149 | -| src/pages | 24 | 1,147 | 3 | 82 | 1,232 | -| src/pages (Files) | 10 | 768 | 1 | 35 | 804 | -| src/pages/api | 1 | 16 | 1 | 3 | 20 | -| src/pages/api/trpc | 1 | 16 | 1 | 3 | 20 | -| src/pages/exercises | 13 | 363 | 1 | 44 | 408 | -| src/server | 6 | 205 | 84 | 30 | 319 | -| src/server (Files) | 1 | 10 | 0 | 5 | 15 | -| src/server/api | 5 | 195 | 84 | 25 | 304 | -| src/server/api (Files) | 3 | 55 | 84 | 15 | 154 | -| src/server/api/routers | 2 | 140 | 0 | 10 | 150 | -| src/stores | 3 | 54 | 6 | 13 | 73 | -| src/styles | 1 | 17 | 0 | 11 | 28 | -| src/utils | 5 | 285 | 53 | 36 | 374 | - -Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md) diff --git a/.VSCodeCounter/2023-08-11_18-56-14/results.txt b/.VSCodeCounter/2023-08-11_18-56-14/results.txt deleted file mode 100644 index c7e371d..0000000 --- a/.VSCodeCounter/2023-08-11_18-56-14/results.txt +++ /dev/null @@ -1,126 +0,0 @@ -Date : 2023-08-11 18:56:14 -Directory : /Users/jasonboyett/Documents/Coding/GitHub/speedread -Total : 73 files, 13035 codes, 205 comments, 370 blanks, all 13610 lines - -Languages -+--------------------+------------+------------+------------+------------+------------+ -| language | files | code | comment | blank | total | -+--------------------+------------+------------+------------+------------+------------+ -| JSON | 3 | 9,380 | 5 | 2 | 9,387 | -| TypeScript JSX | 36 | 2,506 | 10 | 188 | 2,704 | -| TypeScript | 23 | 833 | 146 | 116 | 1,095 | -| Prisma | 1 | 138 | 0 | 23 | 161 | -| JavaScript | 7 | 129 | 38 | 26 | 193 | -| JSON with Comments | 1 | 29 | 6 | 1 | 36 | -| CSS | 1 | 17 | 0 | 11 | 28 | -| Markdown | 1 | 3 | 0 | 3 | 6 | -+--------------------+------------+------------+------------+------------+------------+ - -Directories -+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ -| path | files | code | comment | blank | total | -+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ -| . | 73 | 13,035 | 205 | 370 | 13,610 | -| . (Files) | 13 | 9,515 | 26 | 23 | 9,564 | -| prisma | 1 | 138 | 0 | 23 | 161 | -| src | 59 | 3,382 | 179 | 324 | 3,885 | -| src (Files) | 2 | 49 | 23 | 16 | 88 | -| src/components | 11 | 1,324 | 8 | 97 | 1,429 | -| src/components (Files) | 10 | 1,232 | 8 | 92 | 1,332 | -| src/components/tests | 1 | 92 | 0 | 5 | 97 | -| src/cva | 4 | 172 | 0 | 21 | 193 | -| src/hooks | 3 | 129 | 2 | 18 | 149 | -| src/pages | 24 | 1,147 | 3 | 82 | 1,232 | -| src/pages (Files) | 10 | 768 | 1 | 35 | 804 | -| src/pages/api | 1 | 16 | 1 | 3 | 20 | -| src/pages/api/trpc | 1 | 16 | 1 | 3 | 20 | -| src/pages/exercises | 13 | 363 | 1 | 44 | 408 | -| src/server | 6 | 205 | 84 | 30 | 319 | -| src/server (Files) | 1 | 10 | 0 | 5 | 15 | -| src/server/api | 5 | 195 | 84 | 25 | 304 | -| src/server/api (Files) | 3 | 55 | 84 | 15 | 154 | -| src/server/api/routers | 2 | 140 | 0 | 10 | 150 | -| src/stores | 3 | 54 | 6 | 13 | 73 | -| src/styles | 1 | 17 | 0 | 11 | 28 | -| src/utils | 5 | 285 | 53 | 36 | 374 | -+------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ - -Files -+------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+ -| filename | language | code | comment | blank | total | -+------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+ -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/.eslintrc.cjs | JavaScript | 33 | 2 | 3 | 38 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/README.md | Markdown | 3 | 0 | 3 | 6 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/bable.config.js | JavaScript | 4 | 0 | 1 | 5 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/next.config.mjs | JavaScript | 10 | 11 | 3 | 24 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/package-lock.json | JSON | 9,293 | 0 | 1 | 9,294 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/package.json | JSON | 81 | 0 | 1 | 82 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/postcss.config.cjs | JavaScript | 7 | 0 | 2 | 9 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/prettier.config.cjs | JavaScript | 16 | 1 | 2 | 19 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/prisma/schema.prisma | Prisma | 138 | 0 | 23 | 161 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/cubeflasher.tsx | TypeScript JSX | 210 | 2 | 12 | 224 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/evensandodds.tsx | TypeScript JSX | 190 | 0 | 18 | 208 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/flashingcell.tsx | TypeScript JSX | 308 | 4 | 26 | 338 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/globals.d.ts | TypeScript | 29 | 0 | 4 | 33 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/homebutton.tsx | TypeScript JSX | 19 | 0 | 3 | 22 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/loadingspinner.tsx | TypeScript JSX | 24 | 0 | 1 | 25 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/schultetable.tsx | TypeScript JSX | 162 | 1 | 8 | 171 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/settingsbutton.tsx | TypeScript JSX | 19 | 0 | 2 | 21 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/speedtest.tsx | TypeScript JSX | 195 | 0 | 8 | 203 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/tests/evensandodds.test.ts | TypeScript | 92 | 0 | 5 | 97 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/components/wordchanger.tsx | TypeScript JSX | 76 | 1 | 10 | 87 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/cube-flasher.tsx | TypeScript JSX | 32 | 0 | 5 | 37 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/flashingStyles.tsx | TypeScript JSX | 38 | 0 | 5 | 43 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/fontProvider.tsx | TypeScript JSX | 36 | 0 | 5 | 41 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/cva/highlightSelectorButton.tsx | TypeScript JSX | 66 | 0 | 6 | 72 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/env.mjs | JavaScript | 41 | 23 | 13 | 77 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useInterval.ts | TypeScript | 19 | 2 | 4 | 25 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useIsVisible.ts | TypeScript | 16 | 0 | 4 | 20 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/hooks/useSwitcher.ts | TypeScript | 94 | 0 | 10 | 104 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/middleware.ts | TypeScript | 8 | 0 | 3 | 11 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/_app.tsx | TypeScript JSX | 14 | 0 | 3 | 17 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/api/trpc/[trpc].ts | TypeScript | 16 | 1 | 3 | 20 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/done.tsx | TypeScript JSX | 28 | 0 | 2 | 30 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/cubebythree.tsx | TypeScript JSX | 16 | 0 | 2 | 18 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/cubebytwo.tsx | TypeScript JSX | 16 | 0 | 2 | 18 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/evennumbers.tsx | TypeScript JSX | 73 | 1 | 3 | 77 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashfourbyone.tsx | TypeScript JSX | 24 | 0 | 4 | 28 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashonebyone.tsx | TypeScript JSX | 27 | 0 | 4 | 31 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashonebytwo.tsx | TypeScript JSX | 24 | 0 | 4 | 28 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashtwobyone.tsx | TypeScript JSX | 24 | 0 | 4 | 28 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/flashtwobytwo.tsx | TypeScript JSX | 24 | 0 | 4 | 28 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby3.tsx | TypeScript JSX | 24 | 0 | 3 | 27 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby5.tsx | TypeScript JSX | 24 | 0 | 3 | 27 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/schulteby7.tsx | TypeScript JSX | 24 | 0 | 3 | 27 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/speedtest.tsx | TypeScript JSX | 38 | 0 | 4 | 42 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/exercises/wordchange.tsx | TypeScript JSX | 25 | 0 | 4 | 29 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/index.tsx | TypeScript JSX | 64 | 0 | 3 | 67 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/loadnext.tsx | TypeScript JSX | 93 | 0 | 6 | 99 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/nav.tsx | TypeScript JSX | 56 | 0 | 7 | 63 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/next.tsx | TypeScript JSX | 54 | 1 | 2 | 57 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/settings.tsx | TypeScript JSX | 320 | 0 | 3 | 323 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/setup.tsx | TypeScript JSX | 87 | 0 | 3 | 90 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/signin.tsx | TypeScript JSX | 24 | 0 | 2 | 26 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/pages/signup.tsx | TypeScript JSX | 28 | 0 | 4 | 32 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/context.ts | TypeScript | 0 | 22 | 1 | 23 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/root.ts | TypeScript | 12 | 6 | 3 | 21 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/routers/app.ts | TypeScript | 123 | 0 | 7 | 130 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/routers/example.ts | TypeScript | 17 | 0 | 3 | 20 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/api/trpc.ts | TypeScript | 43 | 56 | 11 | 110 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/server/db.ts | TypeScript | 10 | 0 | 5 | 15 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/useCubeStore.ts | TypeScript | 18 | 0 | 5 | 23 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/useMutateUser.ts | TypeScript | 17 | 0 | 3 | 20 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/stores/userStore.ts | TypeScript | 19 | 6 | 5 | 30 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/styles/globals.css | CSS | 17 | 0 | 11 | 28 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/api.ts | TypeScript | 30 | 32 | 7 | 69 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/helpers.ts | TypeScript | 136 | 8 | 13 | 157 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/schema.ts | TypeScript | 16 | 0 | 3 | 19 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/types.ts | TypeScript | 33 | 13 | 7 | 53 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/src/utils/validators.ts | TypeScript | 70 | 0 | 6 | 76 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/tailwind.config.cjs | JavaScript | 18 | 1 | 2 | 21 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/tsconfig.json | JSON with Comments | 29 | 6 | 1 | 36 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/turbo.json | JSON | 6 | 5 | 0 | 11 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/vite.config.ts | TypeScript | 5 | 0 | 2 | 7 | -| /Users/jasonboyett/Documents/Coding/GitHub/speedread/vitest.config.ts | TypeScript | 10 | 0 | 2 | 12 | -| Total | | 13,035 | 205 | 370 | 13,610 | -+------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+ \ No newline at end of file diff --git a/.VSCodeCounter/2024-01-29_02-53-16/details.md b/.VSCodeCounter/2024-01-29_02-53-16/details.md new file mode 100644 index 0000000..d04ffa3 --- /dev/null +++ b/.VSCodeCounter/2024-01-29_02-53-16/details.md @@ -0,0 +1,209 @@ +# Details + +Date : 2024-01-29 02:53:16 + +Directory /home/jboyett/Documents/dev/github/iris-mobile + +Total : 194 files, 27407 codes, 356 comments, 2962 blanks, all 30725 lines + +[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md) + +## Files +| filename | language | code | comment | blank | total | +| :--- | :--- | ---: | ---: | ---: | ---: | +| [.eslintrc.cjs](/.eslintrc.cjs) | JavaScript | 25 | 1 | 1 | 27 | +| [.github/ISSUE_TEMPLATE/bug_report.md](/.github/ISSUE_TEMPLATE/bug_report.md) | Markdown | 32 | 0 | 12 | 44 | +| [.github/workflows/ci.yml](/.github/workflows/ci.yml) | YAML | 47 | 2 | 14 | 63 | +| [.prettierrc.cjs](/.prettierrc.cjs) | JavaScript | 16 | 1 | 2 | 19 | +| [README.md](/README.md) | Markdown | 131 | 0 | 75 | 206 | +| [app.json](/app.json) | JSON | 17 | 0 | 1 | 18 | +| [apps/expo/.expo-shared/assets.json](/apps/expo/.expo-shared/assets.json) | JSON | 4 | 0 | 1 | 5 | +| [apps/expo/app.config.ts](/apps/expo/app.config.ts) | TypeScript | 37 | 0 | 4 | 41 | +| [apps/expo/babel.config.js](/apps/expo/babel.config.js) | JavaScript | 12 | 0 | 1 | 13 | +| [apps/expo/expo-plugins/with-modify-gradle.js](/apps/expo/expo-plugins/with-modify-gradle.js) | JavaScript | 29 | 6 | 7 | 42 | +| [apps/expo/index.ts](/apps/expo/index.ts) | TypeScript | 3 | 3 | 3 | 9 | +| [apps/expo/metro.config.js](/apps/expo/metro.config.js) | JavaScript | 13 | 8 | 6 | 27 | +| [apps/expo/package.json](/apps/expo/package.json) | JSON | 64 | 0 | 1 | 65 | +| [apps/expo/src/_app.tsx](/apps/expo/src/_app.tsx) | TypeScript JSX | 98 | 0 | 7 | 105 | +| [apps/expo/src/components/BoxFlasher.tsx](/apps/expo/src/components/BoxFlasher.tsx) | TypeScript JSX | 260 | 0 | 24 | 284 | +| [apps/expo/src/components/Grid.tsx](/apps/expo/src/components/Grid.tsx) | TypeScript JSX | 47 | 0 | 10 | 57 | +| [apps/expo/src/components/SignInWithOAuth.tsx](/apps/expo/src/components/SignInWithOAuth.tsx) | TypeScript JSX | 250 | 3 | 12 | 265 | +| [apps/expo/src/components/SignUpWithOAuth.tsx](/apps/expo/src/components/SignUpWithOAuth.tsx) | TypeScript JSX | 268 | 1 | 12 | 281 | +| [apps/expo/src/components/Train.tsx](/apps/expo/src/components/Train.tsx) | TypeScript JSX | 235 | 0 | 8 | 243 | +| [apps/expo/src/components/exercises/CubeFlasher.tsx](/apps/expo/src/components/exercises/CubeFlasher.tsx) | TypeScript JSX | 0 | 0 | 1 | 1 | +| [apps/expo/src/components/exercises/EvenNumber.tsx](/apps/expo/src/components/exercises/EvenNumber.tsx) | TypeScript JSX | 175 | 0 | 17 | 192 | +| [apps/expo/src/components/exercises/GreenDot/Dot.tsx](/apps/expo/src/components/exercises/GreenDot/Dot.tsx) | TypeScript JSX | 90 | 5 | 9 | 104 | +| [apps/expo/src/components/exercises/GreenDot/Text.tsx](/apps/expo/src/components/exercises/GreenDot/Text.tsx) | TypeScript JSX | 51 | 0 | 1 | 52 | +| [apps/expo/src/components/exercises/GreenDot/index.tsx](/apps/expo/src/components/exercises/GreenDot/index.tsx) | TypeScript JSX | 44 | 0 | 4 | 48 | +| [apps/expo/src/components/exercises/Letters.tsx](/apps/expo/src/components/exercises/Letters.tsx) | TypeScript JSX | 273 | 0 | 19 | 292 | +| [apps/expo/src/components/exercises/NumberMatcher.tsx](/apps/expo/src/components/exercises/NumberMatcher.tsx) | TypeScript JSX | 285 | 6 | 24 | 315 | +| [apps/expo/src/components/exercises/SchulteTable.tsx](/apps/expo/src/components/exercises/SchulteTable.tsx) | TypeScript JSX | 273 | 0 | 25 | 298 | +| [apps/expo/src/components/exercises/WordFlasher.tsx](/apps/expo/src/components/exercises/WordFlasher.tsx) | TypeScript JSX | 308 | 0 | 19 | 327 | +| [apps/expo/src/components/exercises/WordPairs.tsx](/apps/expo/src/components/exercises/WordPairs.tsx) | TypeScript JSX | 200 | 0 | 15 | 215 | +| [apps/expo/src/components/instructions/Boxes.tsx](/apps/expo/src/components/instructions/Boxes.tsx) | TypeScript JSX | 163 | 3 | 4 | 170 | +| [apps/expo/src/components/instructions/EvenNumbers.tsx](/apps/expo/src/components/instructions/EvenNumbers.tsx) | TypeScript JSX | 171 | 3 | 4 | 178 | +| [apps/expo/src/components/instructions/GreenDot.tsx](/apps/expo/src/components/instructions/GreenDot.tsx) | TypeScript JSX | 151 | 3 | 4 | 158 | +| [apps/expo/src/components/instructions/LetterMatch.tsx](/apps/expo/src/components/instructions/LetterMatch.tsx) | TypeScript JSX | 170 | 3 | 4 | 177 | +| [apps/expo/src/components/instructions/NumberMatch.tsx](/apps/expo/src/components/instructions/NumberMatch.tsx) | TypeScript JSX | 155 | 3 | 4 | 162 | +| [apps/expo/src/components/instructions/SchulteTable.tsx](/apps/expo/src/components/instructions/SchulteTable.tsx) | TypeScript JSX | 174 | 3 | 4 | 181 | +| [apps/expo/src/components/instructions/SpeedTest.tsx](/apps/expo/src/components/instructions/SpeedTest.tsx) | TypeScript JSX | 178 | 3 | 4 | 185 | +| [apps/expo/src/components/instructions/WordFlasher.tsx](/apps/expo/src/components/instructions/WordFlasher.tsx) | TypeScript JSX | 163 | 3 | 4 | 170 | +| [apps/expo/src/components/instructions/WordPair.tsx](/apps/expo/src/components/instructions/WordPair.tsx) | TypeScript JSX | 178 | 3 | 4 | 185 | +| [apps/expo/src/components/speedtest/index.tsx](/apps/expo/src/components/speedtest/index.tsx) | TypeScript JSX | 366 | 12 | 32 | 410 | +| [apps/expo/src/cva/FontProvider.tsx](/apps/expo/src/cva/FontProvider.tsx) | TypeScript JSX | 48 | 0 | 6 | 54 | +| [apps/expo/src/cva/WordFlashCell.tsx](/apps/expo/src/cva/WordFlashCell.tsx) | TypeScript JSX | 80 | 0 | 5 | 85 | +| [apps/expo/src/hooks/useIncrementalState.ts](/apps/expo/src/hooks/useIncrementalState.ts) | TypeScript | 30 | 0 | 2 | 32 | +| [apps/expo/src/hooks/useInterval.ts](/apps/expo/src/hooks/useInterval.ts) | TypeScript | 19 | 2 | 4 | 25 | +| [apps/expo/src/hooks/useStopWatch.ts](/apps/expo/src/hooks/useStopWatch.ts) | TypeScript | 31 | 29 | 7 | 67 | +| [apps/expo/src/hooks/useWarmUpBrowser.ts](/apps/expo/src/hooks/useWarmUpBrowser.ts) | TypeScript | 10 | 0 | 2 | 12 | +| [apps/expo/src/screens/Settings.tsx](/apps/expo/src/screens/Settings.tsx) | TypeScript JSX | 376 | 0 | 16 | 392 | +| [apps/expo/src/screens/auth.tsx](/apps/expo/src/screens/auth.tsx) | TypeScript JSX | 51 | 0 | 5 | 56 | +| [apps/expo/src/screens/home.tsx](/apps/expo/src/screens/home.tsx) | TypeScript JSX | 368 | 0 | 18 | 386 | +| [apps/expo/src/screens/signout.tsx](/apps/expo/src/screens/signout.tsx) | TypeScript JSX | 14 | 0 | 2 | 16 | +| [apps/expo/src/screens/signup.tsx](/apps/expo/src/screens/signup.tsx) | TypeScript JSX | 19 | 0 | 4 | 23 | +| [apps/expo/src/screens/train.tsx](/apps/expo/src/screens/train.tsx) | TypeScript JSX | 10 | 0 | 2 | 12 | +| [apps/expo/src/stores/useBoxStore.ts](/apps/expo/src/stores/useBoxStore.ts) | TypeScript | 15 | 0 | 3 | 18 | +| [apps/expo/src/stores/useSpeedTestStore.ts](/apps/expo/src/stores/useSpeedTestStore.ts) | TypeScript | 67 | 0 | 3 | 70 | +| [apps/expo/src/stores/userStore.ts](/apps/expo/src/stores/userStore.ts) | TypeScript | 23 | 6 | 3 | 32 | +| [apps/expo/src/types/nativewind.d.ts](/apps/expo/src/types/nativewind.d.ts) | TypeScript | 0 | 1 | 1 | 2 | +| [apps/expo/src/utils/cache.ts](/apps/expo/src/utils/cache.ts) | TypeScript | 16 | 3 | 4 | 23 | +| [apps/expo/src/utils/trpc.tsx](/apps/expo/src/utils/trpc.tsx) | TypeScript JSX | 46 | 17 | 5 | 68 | +| [apps/expo/tailwind.config.cjs](/apps/expo/tailwind.config.cjs) | JavaScript | 3 | 1 | 1 | 5 | +| [apps/expo/tsconfig.json](/apps/expo/tsconfig.json) | JSON with Comments | 8 | 0 | 1 | 9 | +| [apps/nextjs/.eslintrc.cjs](/apps/nextjs/.eslintrc.cjs) | JavaScript | 6 | 1 | 1 | 8 | +| [apps/nextjs/README.md](/apps/nextjs/README.md) | Markdown | 92 | 0 | 40 | 132 | +| [apps/nextjs/next-env.d.ts](/apps/nextjs/next-env.d.ts) | TypeScript | 0 | 4 | 2 | 6 | +| [apps/nextjs/next.config.mjs](/apps/nextjs/next.config.mjs) | JavaScript | 17 | 7 | 4 | 28 | +| [apps/nextjs/package.json](/apps/nextjs/package.json) | JSON | 45 | 0 | 1 | 46 | +| [apps/nextjs/postcss.config.cjs](/apps/nextjs/postcss.config.cjs) | JavaScript | 1 | 0 | 1 | 2 | +| [apps/nextjs/src/components/cubeflasher.tsx](/apps/nextjs/src/components/cubeflasher.tsx) | TypeScript JSX | 211 | 0 | 11 | 222 | +| [apps/nextjs/src/components/evensandodds.tsx](/apps/nextjs/src/components/evensandodds.tsx) | TypeScript JSX | 173 | 0 | 20 | 193 | +| [apps/nextjs/src/components/flasherstartbutton.tsx](/apps/nextjs/src/components/flasherstartbutton.tsx) | TypeScript JSX | 49 | 0 | 5 | 54 | +| [apps/nextjs/src/components/flashingWordsNav.tsx](/apps/nextjs/src/components/flashingWordsNav.tsx) | TypeScript JSX | 43 | 0 | 6 | 49 | +| [apps/nextjs/src/components/flashingcell.tsx](/apps/nextjs/src/components/flashingcell.tsx) | TypeScript JSX | 304 | 2 | 25 | 331 | +| [apps/nextjs/src/components/greendottext.tsx](/apps/nextjs/src/components/greendottext.tsx) | TypeScript JSX | 40 | 0 | 1 | 41 | +| [apps/nextjs/src/components/letterMatcher.tsx](/apps/nextjs/src/components/letterMatcher.tsx) | TypeScript JSX | 174 | 0 | 10 | 184 | +| [apps/nextjs/src/components/loadingspinner.tsx](/apps/nextjs/src/components/loadingspinner.tsx) | TypeScript JSX | 23 | 0 | 1 | 24 | +| [apps/nextjs/src/components/numbermatcher.tsx](/apps/nextjs/src/components/numbermatcher.tsx) | TypeScript JSX | 181 | 0 | 13 | 194 | +| [apps/nextjs/src/components/pietimer.tsx](/apps/nextjs/src/components/pietimer.tsx) | TypeScript JSX | 94 | 5 | 11 | 110 | +| [apps/nextjs/src/components/schultedraw.tsx](/apps/nextjs/src/components/schultedraw.tsx) | TypeScript JSX | 118 | 5 | 11 | 134 | +| [apps/nextjs/src/components/schultetable.tsx](/apps/nextjs/src/components/schultetable.tsx) | TypeScript JSX | 164 | 0 | 20 | 184 | +| [apps/nextjs/src/components/sidebar.tsx](/apps/nextjs/src/components/sidebar.tsx) | TypeScript JSX | 92 | 2 | 4 | 98 | +| [apps/nextjs/src/components/speedtest.tsx](/apps/nextjs/src/components/speedtest.tsx) | TypeScript JSX | 190 | 0 | 8 | 198 | +| [apps/nextjs/src/components/tableswitcher.tsx](/apps/nextjs/src/components/tableswitcher.tsx) | TypeScript JSX | 58 | 0 | 3 | 61 | +| [apps/nextjs/src/components/tests/evensandodds.test.ts](/apps/nextjs/src/components/tests/evensandodds.test.ts) | TypeScript | 92 | 0 | 5 | 97 | +| [apps/nextjs/src/components/wordchanger.tsx](/apps/nextjs/src/components/wordchanger.tsx) | TypeScript JSX | 67 | 1 | 10 | 78 | +| [apps/nextjs/src/components/wordpairs.tsx](/apps/nextjs/src/components/wordpairs.tsx) | TypeScript JSX | 172 | 0 | 17 | 189 | +| [apps/nextjs/src/cva/cube-flasher.tsx](/apps/nextjs/src/cva/cube-flasher.tsx) | TypeScript JSX | 41 | 0 | 4 | 45 | +| [apps/nextjs/src/cva/flashingStyles.tsx](/apps/nextjs/src/cva/flashingStyles.tsx) | TypeScript JSX | 46 | 0 | 4 | 50 | +| [apps/nextjs/src/cva/fontProvider.tsx](/apps/nextjs/src/cva/fontProvider.tsx) | TypeScript JSX | 45 | 0 | 6 | 51 | +| [apps/nextjs/src/cva/highlightSelectorButton.tsx](/apps/nextjs/src/cva/highlightSelectorButton.tsx) | TypeScript JSX | 44 | 0 | 4 | 48 | +| [apps/nextjs/src/env/client.mjs](/apps/nextjs/src/env/client.mjs) | JavaScript | 25 | 2 | 7 | 34 | +| [apps/nextjs/src/env/schema.mjs](/apps/nextjs/src/env/schema.mjs) | JavaScript | 11 | 16 | 4 | 31 | +| [apps/nextjs/src/env/server.mjs](/apps/nextjs/src/env/server.mjs) | JavaScript | 17 | 5 | 6 | 28 | +| [apps/nextjs/src/hooks/useInterval.ts](/apps/nextjs/src/hooks/useInterval.ts) | TypeScript | 19 | 2 | 4 | 25 | +| [apps/nextjs/src/hooks/useIsVisible.ts](/apps/nextjs/src/hooks/useIsVisible.ts) | TypeScript | 16 | 0 | 4 | 20 | +| [apps/nextjs/src/hooks/useStopWatch.ts](/apps/nextjs/src/hooks/useStopWatch.ts) | TypeScript | 25 | 29 | 6 | 60 | +| [apps/nextjs/src/hooks/useTimer.ts](/apps/nextjs/src/hooks/useTimer.ts) | TypeScript | 62 | 4 | 9 | 75 | +| [apps/nextjs/src/middleware.ts](/apps/nextjs/src/middleware.ts) | TypeScript | 11 | 9 | 3 | 23 | +| [apps/nextjs/src/pages/_app.tsx](/apps/nextjs/src/pages/_app.tsx) | TypeScript JSX | 12 | 1 | 3 | 16 | +| [apps/nextjs/src/pages/admin/createquestion/done.tsx](/apps/nextjs/src/pages/admin/createquestion/done.tsx) | TypeScript JSX | 56 | 0 | 8 | 64 | +| [apps/nextjs/src/pages/admin/createquestion/index.tsx](/apps/nextjs/src/pages/admin/createquestion/index.tsx) | TypeScript JSX | 157 | 0 | 8 | 165 | +| [apps/nextjs/src/pages/admin/index.tsx](/apps/nextjs/src/pages/admin/index.tsx) | TypeScript JSX | 67 | 0 | 9 | 76 | +| [apps/nextjs/src/pages/admin/testexercise.tsx](/apps/nextjs/src/pages/admin/testexercise.tsx) | TypeScript JSX | 103 | 0 | 5 | 108 | +| [apps/nextjs/src/pages/api/trpc/[trpc].ts](/apps/nextjs/src/pages/api/trpc/%5Btrpc%5D.ts) | TypeScript | 6 | 12 | 5 | 23 | +| [apps/nextjs/src/pages/done.tsx](/apps/nextjs/src/pages/done.tsx) | TypeScript JSX | 24 | 0 | 2 | 26 | +| [apps/nextjs/src/pages/exercises/boxes.tsx](/apps/nextjs/src/pages/exercises/boxes.tsx) | TypeScript JSX | 26 | 0 | 3 | 29 | +| [apps/nextjs/src/pages/exercises/cubebythree.tsx](/apps/nextjs/src/pages/exercises/cubebythree.tsx) | TypeScript JSX | 14 | 0 | 2 | 16 | +| [apps/nextjs/src/pages/exercises/cubebytwo.tsx](/apps/nextjs/src/pages/exercises/cubebytwo.tsx) | TypeScript JSX | 14 | 0 | 2 | 16 | +| [apps/nextjs/src/pages/exercises/evennumbers.tsx](/apps/nextjs/src/pages/exercises/evennumbers.tsx) | TypeScript JSX | 34 | 1 | 3 | 38 | +| [apps/nextjs/src/pages/exercises/flashfourbyone.tsx](/apps/nextjs/src/pages/exercises/flashfourbyone.tsx) | TypeScript JSX | 16 | 0 | 2 | 18 | +| [apps/nextjs/src/pages/exercises/flashonebyone.tsx](/apps/nextjs/src/pages/exercises/flashonebyone.tsx) | TypeScript JSX | 16 | 0 | 2 | 18 | +| [apps/nextjs/src/pages/exercises/flashonebytwo.tsx](/apps/nextjs/src/pages/exercises/flashonebytwo.tsx) | TypeScript JSX | 16 | 0 | 2 | 18 | +| [apps/nextjs/src/pages/exercises/flashtwobyone.tsx](/apps/nextjs/src/pages/exercises/flashtwobyone.tsx) | TypeScript JSX | 16 | 0 | 2 | 18 | +| [apps/nextjs/src/pages/exercises/flashtwobytwo.tsx](/apps/nextjs/src/pages/exercises/flashtwobytwo.tsx) | TypeScript JSX | 16 | 0 | 2 | 18 | +| [apps/nextjs/src/pages/exercises/greendot.tsx](/apps/nextjs/src/pages/exercises/greendot.tsx) | TypeScript JSX | 40 | 0 | 4 | 44 | +| [apps/nextjs/src/pages/exercises/lettermatcher.tsx](/apps/nextjs/src/pages/exercises/lettermatcher.tsx) | TypeScript JSX | 19 | 0 | 3 | 22 | +| [apps/nextjs/src/pages/exercises/numbermatcher.tsx](/apps/nextjs/src/pages/exercises/numbermatcher.tsx) | TypeScript JSX | 19 | 0 | 3 | 22 | +| [apps/nextjs/src/pages/exercises/schultetable/by3.tsx](/apps/nextjs/src/pages/exercises/schultetable/by3.tsx) | TypeScript JSX | 29 | 0 | 4 | 33 | +| [apps/nextjs/src/pages/exercises/schultetable/by5.tsx](/apps/nextjs/src/pages/exercises/schultetable/by5.tsx) | TypeScript JSX | 29 | 0 | 4 | 33 | +| [apps/nextjs/src/pages/exercises/schultetable/by7.tsx](/apps/nextjs/src/pages/exercises/schultetable/by7.tsx) | TypeScript JSX | 29 | 0 | 4 | 33 | +| [apps/nextjs/src/pages/exercises/schultetable/index.tsx](/apps/nextjs/src/pages/exercises/schultetable/index.tsx) | TypeScript JSX | 44 | 0 | 5 | 49 | +| [apps/nextjs/src/pages/exercises/speedtest/index.tsx](/apps/nextjs/src/pages/exercises/speedtest/index.tsx) | TypeScript JSX | 91 | 0 | 10 | 101 | +| [apps/nextjs/src/pages/exercises/speedtest/question.tsx](/apps/nextjs/src/pages/exercises/speedtest/question.tsx) | TypeScript JSX | 111 | 0 | 5 | 116 | +| [apps/nextjs/src/pages/exercises/speedtest/result.tsx](/apps/nextjs/src/pages/exercises/speedtest/result.tsx) | TypeScript JSX | 152 | 6 | 12 | 170 | +| [apps/nextjs/src/pages/exercises/wordpairs.tsx](/apps/nextjs/src/pages/exercises/wordpairs.tsx) | TypeScript JSX | 17 | 0 | 2 | 19 | +| [apps/nextjs/src/pages/index.tsx](/apps/nextjs/src/pages/index.tsx) | TypeScript JSX | 77 | 0 | 5 | 82 | +| [apps/nextjs/src/pages/instructions/boxes.tsx](/apps/nextjs/src/pages/instructions/boxes.tsx) | TypeScript JSX | 127 | 3 | 11 | 141 | +| [apps/nextjs/src/pages/instructions/evennumbers.tsx](/apps/nextjs/src/pages/instructions/evennumbers.tsx) | TypeScript JSX | 120 | 3 | 9 | 132 | +| [apps/nextjs/src/pages/instructions/flashingwords/fourbyone.tsx](/apps/nextjs/src/pages/instructions/flashingwords/fourbyone.tsx) | TypeScript JSX | 98 | 3 | 7 | 108 | +| [apps/nextjs/src/pages/instructions/flashingwords/onebyone.tsx](/apps/nextjs/src/pages/instructions/flashingwords/onebyone.tsx) | TypeScript JSX | 98 | 3 | 7 | 108 | +| [apps/nextjs/src/pages/instructions/flashingwords/onebytwo.tsx](/apps/nextjs/src/pages/instructions/flashingwords/onebytwo.tsx) | TypeScript JSX | 99 | 3 | 7 | 109 | +| [apps/nextjs/src/pages/instructions/flashingwords/twobyone.tsx](/apps/nextjs/src/pages/instructions/flashingwords/twobyone.tsx) | TypeScript JSX | 97 | 3 | 6 | 106 | +| [apps/nextjs/src/pages/instructions/flashingwords/twobytwo.tsx](/apps/nextjs/src/pages/instructions/flashingwords/twobytwo.tsx) | TypeScript JSX | 96 | 3 | 6 | 105 | +| [apps/nextjs/src/pages/instructions/greendot.tsx](/apps/nextjs/src/pages/instructions/greendot.tsx) | TypeScript JSX | 98 | 3 | 8 | 109 | +| [apps/nextjs/src/pages/instructions/lettermatcher.tsx](/apps/nextjs/src/pages/instructions/lettermatcher.tsx) | TypeScript JSX | 119 | 3 | 8 | 130 | +| [apps/nextjs/src/pages/instructions/numbermatcher.tsx](/apps/nextjs/src/pages/instructions/numbermatcher.tsx) | TypeScript JSX | 105 | 3 | 9 | 117 | +| [apps/nextjs/src/pages/instructions/schultetable.tsx](/apps/nextjs/src/pages/instructions/schultetable.tsx) | TypeScript JSX | 178 | 3 | 10 | 191 | +| [apps/nextjs/src/pages/instructions/speedtest.tsx](/apps/nextjs/src/pages/instructions/speedtest.tsx) | TypeScript JSX | 128 | 3 | 9 | 140 | +| [apps/nextjs/src/pages/instructions/wordpairs.tsx](/apps/nextjs/src/pages/instructions/wordpairs.tsx) | TypeScript JSX | 127 | 3 | 8 | 138 | +| [apps/nextjs/src/pages/nav.tsx](/apps/nextjs/src/pages/nav.tsx) | TypeScript JSX | 229 | 0 | 16 | 245 | +| [apps/nextjs/src/pages/next.tsx](/apps/nextjs/src/pages/next.tsx) | TypeScript JSX | 43 | 0 | 3 | 46 | +| [apps/nextjs/src/pages/settings.tsx](/apps/nextjs/src/pages/settings.tsx) | TypeScript JSX | 368 | 0 | 5 | 373 | +| [apps/nextjs/src/pages/setup.tsx](/apps/nextjs/src/pages/setup.tsx) | TypeScript JSX | 91 | 0 | 3 | 94 | +| [apps/nextjs/src/pages/sign-in/[[...index]].tsx](/apps/nextjs/src/pages/sign-in/%5B%5B...index%5D%5D.tsx) | TypeScript JSX | 19 | 0 | 3 | 22 | +| [apps/nextjs/src/pages/sign-up/[[...index]].tsx](/apps/nextjs/src/pages/sign-up/%5B%5B...index%5D%5D.tsx) | TypeScript JSX | 19 | 0 | 3 | 22 | +| [apps/nextjs/src/stores/useCubeStore.ts](/apps/nextjs/src/stores/useCubeStore.ts) | TypeScript | 20 | 0 | 3 | 23 | +| [apps/nextjs/src/stores/useMutateUser.ts](/apps/nextjs/src/stores/useMutateUser.ts) | TypeScript | 17 | 0 | 3 | 20 | +| [apps/nextjs/src/stores/usePairsStore.ts](/apps/nextjs/src/stores/usePairsStore.ts) | TypeScript | 14 | 0 | 4 | 18 | +| [apps/nextjs/src/stores/useSpeedTestStore.ts](/apps/nextjs/src/stores/useSpeedTestStore.ts) | TypeScript | 74 | 0 | 4 | 78 | +| [apps/nextjs/src/stores/userStore.ts](/apps/nextjs/src/stores/userStore.ts) | TypeScript | 21 | 6 | 3 | 30 | +| [apps/nextjs/src/styles/globals.css](/apps/nextjs/src/styles/globals.css) | CSS | 25 | 0 | 12 | 37 | +| [apps/nextjs/src/utils/trpc.ts](/apps/nextjs/src/utils/trpc.ts) | TypeScript | 30 | 9 | 6 | 45 | +| [apps/nextjs/tailwind.config.cjs](/apps/nextjs/tailwind.config.cjs) | JavaScript | 3 | 1 | 1 | 5 | +| [apps/nextjs/tsconfig.json](/apps/nextjs/tsconfig.json) | JSON with Comments | 5 | 0 | 1 | 6 | +| [drizzle.config.ts](/drizzle.config.ts) | TypeScript | 13 | 0 | 4 | 17 | +| [eas.json](/eas.json) | JSON | 18 | 0 | 1 | 19 | +| [next-env.d.ts](/next-env.d.ts) | TypeScript | 0 | 4 | 2 | 6 | +| [package.json](/package.json) | JSON | 50 | 0 | 1 | 51 | +| [packages/api/index.ts](/packages/api/index.ts) | TypeScript | 4 | 0 | 2 | 6 | +| [packages/api/package.json](/packages/api/package.json) | JSON | 28 | 0 | 1 | 29 | +| [packages/api/src/context.ts](/packages/api/src/context.ts) | TypeScript | 18 | 12 | 5 | 35 | +| [packages/api/src/router/auth.ts](/packages/api/src/router/auth.ts) | TypeScript | 9 | 0 | 2 | 11 | +| [packages/api/src/router/builders.ts](/packages/api/src/router/builders.ts) | TypeScript | 28 | 0 | 2 | 30 | +| [packages/api/src/router/collection.ts](/packages/api/src/router/collection.ts) | TypeScript | 204 | 0 | 10 | 214 | +| [packages/api/src/router/exercises.ts](/packages/api/src/router/exercises.ts) | TypeScript | 202 | 0 | 10 | 212 | +| [packages/api/src/router/index.ts](/packages/api/src/router/index.ts) | TypeScript | 16 | 1 | 3 | 20 | +| [packages/api/src/router/post.ts](/packages/api/src/router/post.ts) | TypeScript | 15 | 0 | 2 | 17 | +| [packages/api/src/router/user.ts](/packages/api/src/router/user.ts) | TypeScript | 68 | 0 | 3 | 71 | +| [packages/api/src/trpc.ts](/packages/api/src/trpc.ts) | TypeScript | 22 | 0 | 4 | 26 | +| [packages/api/transformer.ts](/packages/api/transformer.ts) | TypeScript | 2 | 0 | 1 | 3 | +| [packages/api/tsconfig.json](/packages/api/tsconfig.json) | JSON with Comments | 4 | 0 | 1 | 5 | +| [packages/config/tailwind/index.js](/packages/config/tailwind/index.js) | JavaScript | 7 | 1 | 1 | 9 | +| [packages/config/tailwind/package.json](/packages/config/tailwind/package.json) | JSON | 15 | 0 | 1 | 16 | +| [packages/config/tailwind/postcss.js](/packages/config/tailwind/postcss.js) | JavaScript | 6 | 0 | 1 | 7 | +| [packages/db/drizzle/index.ts](/packages/db/drizzle/index.ts) | TypeScript | 48 | 0 | 5 | 53 | +| [packages/db/drizzle/schema.ts](/packages/db/drizzle/schema.ts) | TypeScript | 380 | 0 | 16 | 396 | +| [packages/db/index.ts](/packages/db/index.ts) | TypeScript | 16 | 2 | 5 | 23 | +| [packages/db/package-lock.json](/packages/db/package-lock.json) | JSON | 280 | 0 | 1 | 281 | +| [packages/db/package.json](/packages/db/package.json) | JSON | 24 | 0 | 1 | 25 | +| [packages/db/prisma/schema.prisma](/packages/db/prisma/schema.prisma) | Prisma | 233 | 2 | 37 | 272 | +| [packages/db/tsconfig.json](/packages/db/tsconfig.json) | JSON with Comments | 4 | 0 | 1 | 5 | +| [packages/helpers/index.ts](/packages/helpers/index.ts) | TypeScript | 184 | 16 | 16 | 216 | +| [packages/helpers/package.json](/packages/helpers/package.json) | JSON | 24 | 0 | 1 | 25 | +| [packages/helpers/tsconfig.json](/packages/helpers/tsconfig.json) | JSON with Comments | 4 | 0 | 1 | 5 | +| [packages/stores/index.ts](/packages/stores/index.ts) | TypeScript | 0 | 0 | 2 | 2 | +| [packages/stores/user.ts](/packages/stores/user.ts) | TypeScript | 0 | 0 | 1 | 1 | +| [packages/types/index.ts](/packages/types/index.ts) | TypeScript | 44 | 13 | 18 | 75 | +| [packages/types/package.json](/packages/types/package.json) | JSON | 23 | 0 | 1 | 24 | +| [packages/types/tsconfig.json](/packages/types/tsconfig.json) | JSON with Comments | 4 | 0 | 1 | 5 | +| [packages/validators/index.ts](/packages/validators/index.ts) | TypeScript | 194 | 2 | 21 | 217 | +| [packages/validators/package.json](/packages/validators/package.json) | JSON | 20 | 0 | 1 | 21 | +| [packages/validators/tsconfig.json](/packages/validators/tsconfig.json) | JSON with Comments | 4 | 0 | 1 | 5 | +| [patches/react-native@0.70.5.patch](/patches/react-native@0.70.5.patch) | Diff | 45 | 0 | 5 | 50 | +| [pnpm-lock.yaml](/pnpm-lock.yaml) | YAML | 12,196 | 0 | 1,683 | 13,879 | +| [pnpm-workspace.yaml](/pnpm-workspace.yaml) | YAML | 9 | 0 | 1 | 10 | +| [tsconfig.json](/tsconfig.json) | JSON with Comments | 27 | 0 | 1 | 28 | +| [turbo.json](/turbo.json) | JSON | 39 | 0 | 1 | 40 | + +[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md) \ No newline at end of file diff --git a/.VSCodeCounter/2023-08-11_18-56-14/diff-details.md b/.VSCodeCounter/2024-01-29_02-53-16/diff-details.md similarity index 50% rename from .VSCodeCounter/2023-08-11_18-56-14/diff-details.md rename to .VSCodeCounter/2024-01-29_02-53-16/diff-details.md index 4216d3b..6c5b184 100644 --- a/.VSCodeCounter/2023-08-11_18-56-14/diff-details.md +++ b/.VSCodeCounter/2024-01-29_02-53-16/diff-details.md @@ -1,16 +1,15 @@ # Diff Details -Date : 2023-08-11 18:56:14 +Date : 2024-01-29 02:53:16 -Directory /Users/jasonboyett/Documents/Coding/GitHub/speedread +Directory /home/jboyett/Documents/dev/github/iris-mobile -Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines +Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines [Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details ## Files - | filename | language | code | comment | blank | total | -| :------- | :------- | ---: | ------: | ----: | ----: | +| :--- | :--- | ---: | ---: | ---: | ---: | -[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details +[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details \ No newline at end of file diff --git a/.VSCodeCounter/2023-08-11_18-56-14/diff.csv b/.VSCodeCounter/2024-01-29_02-53-16/diff.csv similarity index 100% rename from .VSCodeCounter/2023-08-11_18-56-14/diff.csv rename to .VSCodeCounter/2024-01-29_02-53-16/diff.csv diff --git a/.VSCodeCounter/2023-08-11_18-56-14/diff.md b/.VSCodeCounter/2024-01-29_02-53-16/diff.md similarity index 52% rename from .VSCodeCounter/2023-08-11_18-56-14/diff.md rename to .VSCodeCounter/2024-01-29_02-53-16/diff.md index 7c043c2..4d35ea5 100644 --- a/.VSCodeCounter/2023-08-11_18-56-14/diff.md +++ b/.VSCodeCounter/2024-01-29_02-53-16/diff.md @@ -1,21 +1,19 @@ # Diff Summary -Date : 2023-08-11 18:56:14 +Date : 2024-01-29 02:53:16 -Directory /Users/jasonboyett/Documents/Coding/GitHub/speedread +Directory /home/jboyett/Documents/dev/github/iris-mobile -Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines +Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines [Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md) ## Languages - | language | files | code | comment | blank | total | -| :------- | ----: | ---: | ------: | ----: | ----: | +| :--- | ---: | ---: | ---: | ---: | ---: | ## Directories - | path | files | code | comment | blank | total | -| :--- | ----: | ---: | ------: | ----: | ----: | +| :--- | ---: | ---: | ---: | ---: | ---: | -[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md) +[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md) \ No newline at end of file diff --git a/.VSCodeCounter/2023-08-11_18-56-14/diff.txt b/.VSCodeCounter/2024-01-29_02-53-16/diff.txt similarity index 92% rename from .VSCodeCounter/2023-08-11_18-56-14/diff.txt rename to .VSCodeCounter/2024-01-29_02-53-16/diff.txt index 5f5b055..161b3db 100644 --- a/.VSCodeCounter/2023-08-11_18-56-14/diff.txt +++ b/.VSCodeCounter/2024-01-29_02-53-16/diff.txt @@ -1,5 +1,5 @@ -Date : 2023-08-11 18:56:14 -Directory : /Users/jasonboyett/Documents/Coding/GitHub/speedread +Date : 2024-01-29 02:53:16 +Directory : /home/jboyett/Documents/dev/github/iris-mobile Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines Languages diff --git a/.VSCodeCounter/2024-01-29_02-53-16/results.csv b/.VSCodeCounter/2024-01-29_02-53-16/results.csv new file mode 100644 index 0000000..3baea91 --- /dev/null +++ b/.VSCodeCounter/2024-01-29_02-53-16/results.csv @@ -0,0 +1,196 @@ +"filename", "language", "JSON with Comments", "Markdown", "JSON", "JavaScript", "TypeScript", "TypeScript JSX", "CSS", "YAML", "Diff", "Prisma", "comment", "blank", "total" +"/home/jboyett/Documents/dev/github/iris-mobile/.eslintrc.cjs", "JavaScript", 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 1, 1, 27 +"/home/jboyett/Documents/dev/github/iris-mobile/.github/ISSUE_TEMPLATE/bug_report.md", "Markdown", 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 44 +"/home/jboyett/Documents/dev/github/iris-mobile/.github/workflows/ci.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 2, 14, 63 +"/home/jboyett/Documents/dev/github/iris-mobile/.prettierrc.cjs", "JavaScript", 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 2, 19 +"/home/jboyett/Documents/dev/github/iris-mobile/README.md", "Markdown", 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 206 +"/home/jboyett/Documents/dev/github/iris-mobile/app.json", "JSON", 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/.expo-shared/assets.json", "JSON", 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/app.config.ts", "TypeScript", 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 4, 41 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/babel.config.js", "JavaScript", 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 13 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/expo-plugins/with-modify-gradle.js", "JavaScript", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 6, 7, 42 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/index.ts", "TypeScript", 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 3, 9 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/metro.config.js", "JavaScript", 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 8, 6, 27 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/package.json", "JSON", 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/_app.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 7, 105 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/BoxFlasher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, 24, 284 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/Grid.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 10, 57 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/SignInWithOAuth.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 12, 265 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/SignUpWithOAuth.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 1, 12, 281 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/Train.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 8, 243 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/CubeFlasher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/EvenNumber.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 17, 192 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/Dot.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 5, 9, 104 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/Text.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 1, 52 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/index.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 4, 48 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/Letters.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, 0, 19, 292 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/NumberMatcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 285, 0, 0, 0, 0, 6, 24, 315 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/SchulteTable.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, 0, 25, 298 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/WordFlasher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 19, 327 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/WordPairs.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 15, 215 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/Boxes.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 3, 4, 170 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/EvenNumbers.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 3, 4, 178 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/GreenDot.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 3, 4, 158 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/LetterMatch.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 3, 4, 177 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/NumberMatch.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 3, 4, 162 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/SchulteTable.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 3, 4, 181 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/SpeedTest.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 3, 4, 185 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/WordFlasher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 3, 4, 170 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/WordPair.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 3, 4, 185 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/speedtest/index.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 366, 0, 0, 0, 0, 12, 32, 410 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/cva/FontProvider.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 6, 54 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/cva/WordFlashCell.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 5, 85 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useIncrementalState.ts", "TypeScript", 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 2, 32 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useInterval.ts", "TypeScript", 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 2, 4, 25 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useStopWatch.ts", "TypeScript", 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 29, 7, 67 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useWarmUpBrowser.ts", "TypeScript", 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 2, 12 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/Settings.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 376, 0, 0, 0, 0, 0, 16, 392 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/auth.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 5, 56 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/home.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 18, 386 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/signout.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 2, 16 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/signup.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 4, 23 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/train.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 2, 12 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/useBoxStore.ts", "TypeScript", 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/useSpeedTestStore.ts", "TypeScript", 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 3, 70 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/userStore.ts", "TypeScript", 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 6, 3, 32 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/types/nativewind.d.ts", "TypeScript", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/utils/cache.ts", "TypeScript", 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 3, 4, 23 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/utils/trpc.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 17, 5, 68 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/tailwind.config.cjs", "JavaScript", 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/expo/tsconfig.json", "JSON with Comments", 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/.eslintrc.cjs", "JavaScript", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 1, 1, 8 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/README.md", "Markdown", 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 132 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/next-env.d.ts", "TypeScript", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 6 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/next.config.mjs", "JavaScript", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 7, 4, 28 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/package.json", "JSON", 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 1, 46 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/postcss.config.cjs", "JavaScript", 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/cubeflasher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 11, 222 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/evensandodds.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 20, 193 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flasherstartbutton.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 5, 54 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flashingWordsNav.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 6, 49 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flashingcell.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 304, 0, 0, 0, 0, 2, 25, 331 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/greendottext.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 1, 41 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/letterMatcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 10, 184 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/loadingspinner.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 1, 24 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/numbermatcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 13, 194 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/pietimer.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 5, 11, 110 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/schultedraw.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 5, 11, 134 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/schultetable.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 20, 184 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/sidebar.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 2, 4, 98 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/speedtest.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 8, 198 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/tableswitcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 3, 61 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/tests/evensandodds.test.ts", "TypeScript", 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 5, 97 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/wordchanger.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 1, 10, 78 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/wordpairs.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 17, 189 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/cube-flasher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 4, 45 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/flashingStyles.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 4, 50 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/fontProvider.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 6, 51 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/highlightSelectorButton.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 4, 48 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/client.mjs", "JavaScript", 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 2, 7, 34 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/schema.mjs", "JavaScript", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 16, 4, 31 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/server.mjs", "JavaScript", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 5, 6, 28 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useInterval.ts", "TypeScript", 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 2, 4, 25 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useIsVisible.ts", "TypeScript", 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 4, 20 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useStopWatch.ts", "TypeScript", 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 29, 6, 60 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useTimer.ts", "TypeScript", 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 4, 9, 75 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/middleware.ts", "TypeScript", 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 9, 3, 23 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/_app.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 3, 16 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/createquestion/done.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 8, 64 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/createquestion/index.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 8, 165 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/index.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 9, 76 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/testexercise.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 5, 108 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/api/trpc/[trpc].ts", "TypeScript", 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 12, 5, 23 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/done.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 2, 26 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/boxes.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 3, 29 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/cubebythree.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 2, 16 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/cubebytwo.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 2, 16 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/evennumbers.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 1, 3, 38 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashfourbyone.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashonebyone.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashonebytwo.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashtwobyone.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashtwobytwo.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/greendot.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 4, 44 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/lettermatcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 3, 22 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/numbermatcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 3, 22 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by3.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 4, 33 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by5.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 4, 33 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by7.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 4, 33 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/index.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 5, 49 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/index.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 10, 101 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/question.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 5, 116 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/result.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 6, 12, 170 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/wordpairs.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 2, 19 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/index.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 5, 82 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/boxes.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 3, 11, 141 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/evennumbers.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 3, 9, 132 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/fourbyone.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 3, 7, 108 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/onebyone.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 3, 7, 108 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/onebytwo.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 3, 7, 109 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/twobyone.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 3, 6, 106 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/twobytwo.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 3, 6, 105 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/greendot.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 3, 8, 109 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/lettermatcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 3, 8, 130 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/numbermatcher.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 3, 9, 117 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/schultetable.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 3, 10, 191 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/speedtest.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 3, 9, 140 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/wordpairs.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 3, 8, 138 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/nav.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 16, 245 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/next.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 3, 46 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/settings.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 5, 373 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/setup.tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 3, 94 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/sign-in/[[...index]].tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 3, 22 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/sign-up/[[...index]].tsx", "TypeScript JSX", 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 3, 22 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useCubeStore.ts", "TypeScript", 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 3, 23 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useMutateUser.ts", "TypeScript", 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 3, 20 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/usePairsStore.ts", "TypeScript", 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 4, 18 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useSpeedTestStore.ts", "TypeScript", 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 4, 78 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/userStore.ts", "TypeScript", 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 6, 3, 30 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/styles/globals.css", "CSS", 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 12, 37 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/utils/trpc.ts", "TypeScript", 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 9, 6, 45 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/tailwind.config.cjs", "JavaScript", 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/tsconfig.json", "JSON with Comments", 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6 +"/home/jboyett/Documents/dev/github/iris-mobile/drizzle.config.ts", "TypeScript", 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 4, 17 +"/home/jboyett/Documents/dev/github/iris-mobile/eas.json", "JSON", 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 1, 19 +"/home/jboyett/Documents/dev/github/iris-mobile/next-env.d.ts", "TypeScript", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 6 +"/home/jboyett/Documents/dev/github/iris-mobile/package.json", "JSON", 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 1, 51 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/index.ts", "TypeScript", 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 2, 6 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/package.json", "JSON", 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/context.ts", "TypeScript", 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 12, 5, 35 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/auth.ts", "TypeScript", 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 11 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/builders.ts", "TypeScript", 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 2, 30 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/collection.ts", "TypeScript", 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 10, 214 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/exercises.ts", "TypeScript", 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 10, 212 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/index.ts", "TypeScript", 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 1, 3, 20 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/post.ts", "TypeScript", 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 2, 17 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/user.ts", "TypeScript", 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 3, 71 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/trpc.ts", "TypeScript", 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 4, 26 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/transformer.ts", "TypeScript", 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 3 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/api/tsconfig.json", "JSON with Comments", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/index.js", "JavaScript", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 1, 9 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/package.json", "JSON", 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/postcss.js", "JavaScript", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 7 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/db/drizzle/index.ts", "TypeScript", 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 5, 53 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/db/drizzle/schema.ts", "TypeScript", 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 16, 396 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/db/index.ts", "TypeScript", 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 5, 23 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/db/package-lock.json", "JSON", 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 1, 281 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/db/package.json", "JSON", 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/db/prisma/schema.prisma", "Prisma", 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 2, 37, 272 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/db/tsconfig.json", "JSON with Comments", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/index.ts", "TypeScript", 0, 0, 0, 0, 184, 0, 0, 0, 0, 0, 16, 16, 216 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/package.json", "JSON", 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/tsconfig.json", "JSON with Comments", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/stores/index.ts", "TypeScript", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/stores/user.ts", "TypeScript", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/types/index.ts", "TypeScript", 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 13, 18, 75 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/types/package.json", "JSON", 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 1, 24 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/types/tsconfig.json", "JSON with Comments", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/validators/index.ts", "TypeScript", 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 2, 21, 217 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/validators/package.json", "JSON", 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21 +"/home/jboyett/Documents/dev/github/iris-mobile/packages/validators/tsconfig.json", "JSON with Comments", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5 +"/home/jboyett/Documents/dev/github/iris-mobile/patches/react-native@0.70.5.patch", "Diff", 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 5, 50 +"/home/jboyett/Documents/dev/github/iris-mobile/pnpm-lock.yaml", "YAML", 0, 0, 0, 0, 0, 0, 0, 12196, 0, 0, 0, 1683, 13879 +"/home/jboyett/Documents/dev/github/iris-mobile/pnpm-workspace.yaml", "YAML", 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 1, 10 +"/home/jboyett/Documents/dev/github/iris-mobile/tsconfig.json", "JSON with Comments", 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28 +"/home/jboyett/Documents/dev/github/iris-mobile/turbo.json", "JSON", 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 1, 40 +"Total", "-", 60, 255, 651, 191, 2125, 11570, 25, 12252, 45, 233, 356, 2962, 30725 \ No newline at end of file diff --git a/.VSCodeCounter/2024-01-29_02-53-16/results.json b/.VSCodeCounter/2024-01-29_02-53-16/results.json new file mode 100644 index 0000000..3c62297 --- /dev/null +++ b/.VSCodeCounter/2024-01-29_02-53-16/results.json @@ -0,0 +1 @@ +{"file:///home/jboyett/Documents/dev/github/iris-mobile/tsconfig.json":{"language":"JSON with Comments","code":27,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/README.md":{"language":"Markdown","code":131,"comment":0,"blank":75},"file:///home/jboyett/Documents/dev/github/iris-mobile/eas.json":{"language":"JSON","code":18,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/postcss.js":{"language":"JavaScript","code":6,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/index.js":{"language":"JavaScript","code":7,"comment":1,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/package.json":{"language":"JSON","code":15,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/tsconfig.json":{"language":"JSON with Comments","code":8,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/tsconfig.json":{"language":"JSON with Comments","code":5,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/useSpeedTestStore.ts":{"language":"TypeScript","code":67,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/train.tsx":{"language":"TypeScript JSX","code":10,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/useBoxStore.ts":{"language":"TypeScript","code":15,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/home.tsx":{"language":"TypeScript JSX","code":368,"comment":0,"blank":18},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/userStore.ts":{"language":"TypeScript","code":23,"comment":6,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/signout.tsx":{"language":"TypeScript JSX","code":14,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/signup.tsx":{"language":"TypeScript JSX","code":19,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/utils/trpc.tsx":{"language":"TypeScript JSX","code":46,"comment":17,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/utils/cache.ts":{"language":"TypeScript","code":16,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/_app.tsx":{"language":"TypeScript JSX","code":98,"comment":0,"blank":7},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/types/nativewind.d.ts":{"language":"TypeScript","code":0,"comment":1,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useInterval.ts":{"language":"TypeScript","code":19,"comment":2,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useIncrementalState.ts":{"language":"TypeScript","code":30,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/SignUpWithOAuth.tsx":{"language":"TypeScript JSX","code":268,"comment":1,"blank":12},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/Train.tsx":{"language":"TypeScript JSX","code":235,"comment":0,"blank":8},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/Settings.tsx":{"language":"TypeScript JSX","code":376,"comment":0,"blank":16},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/Grid.tsx":{"language":"TypeScript JSX","code":47,"comment":0,"blank":10},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/SpeedTest.tsx":{"language":"TypeScript JSX","code":178,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/SignInWithOAuth.tsx":{"language":"TypeScript JSX","code":250,"comment":3,"blank":12},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/NumberMatch.tsx":{"language":"TypeScript JSX","code":155,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/WordFlasher.tsx":{"language":"TypeScript JSX","code":163,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/SchulteTable.tsx":{"language":"TypeScript JSX","code":174,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/Boxes.tsx":{"language":"TypeScript JSX","code":163,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/cva/WordFlashCell.tsx":{"language":"TypeScript JSX","code":80,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/auth.tsx":{"language":"TypeScript JSX","code":51,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/LetterMatch.tsx":{"language":"TypeScript JSX","code":170,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/EvenNumbers.tsx":{"language":"TypeScript JSX","code":171,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/WordPair.tsx":{"language":"TypeScript JSX","code":178,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/GreenDot.tsx":{"language":"TypeScript JSX","code":151,"comment":3,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/BoxFlasher.tsx":{"language":"TypeScript JSX","code":260,"comment":0,"blank":24},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/cva/FontProvider.tsx":{"language":"TypeScript JSX","code":48,"comment":0,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useWarmUpBrowser.ts":{"language":"TypeScript","code":10,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useStopWatch.ts":{"language":"TypeScript","code":31,"comment":29,"blank":7},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/speedtest/index.tsx":{"language":"TypeScript JSX","code":366,"comment":12,"blank":32},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/SchulteTable.tsx":{"language":"TypeScript JSX","code":273,"comment":0,"blank":25},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/Dot.tsx":{"language":"TypeScript JSX","code":90,"comment":5,"blank":9},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/Text.tsx":{"language":"TypeScript JSX","code":51,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/NumberMatcher.tsx":{"language":"TypeScript JSX","code":285,"comment":6,"blank":24},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/.expo-shared/assets.json":{"language":"JSON","code":4,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/Letters.tsx":{"language":"TypeScript JSX","code":273,"comment":0,"blank":19},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/index.tsx":{"language":"TypeScript JSX","code":44,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/WordPairs.tsx":{"language":"TypeScript JSX","code":200,"comment":0,"blank":15},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/WordFlasher.tsx":{"language":"TypeScript JSX","code":308,"comment":0,"blank":19},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/EvenNumber.tsx":{"language":"TypeScript JSX","code":175,"comment":0,"blank":17},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/CubeFlasher.tsx":{"language":"TypeScript JSX","code":0,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/tailwind.config.cjs":{"language":"JavaScript","code":3,"comment":1,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/metro.config.js":{"language":"JavaScript","code":13,"comment":8,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/index.ts":{"language":"TypeScript","code":3,"comment":3,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/package.json":{"language":"JSON","code":64,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/README.md":{"language":"Markdown","code":92,"comment":0,"blank":40},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/babel.config.js":{"language":"JavaScript","code":12,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/expo-plugins/with-modify-gradle.js":{"language":"JavaScript","code":29,"comment":6,"blank":7},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/next.config.mjs":{"language":"JavaScript","code":17,"comment":7,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/middleware.ts":{"language":"TypeScript","code":11,"comment":9,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useIsVisible.ts":{"language":"TypeScript","code":16,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useTimer.ts":{"language":"TypeScript","code":62,"comment":4,"blank":9},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useStopWatch.ts":{"language":"TypeScript","code":25,"comment":29,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useInterval.ts":{"language":"TypeScript","code":19,"comment":2,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/server.mjs":{"language":"JavaScript","code":17,"comment":5,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/utils/trpc.ts":{"language":"TypeScript","code":30,"comment":9,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/client.mjs":{"language":"JavaScript","code":25,"comment":2,"blank":7},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/schema.mjs":{"language":"JavaScript","code":11,"comment":16,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useCubeStore.ts":{"language":"TypeScript","code":20,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/highlightSelectorButton.tsx":{"language":"TypeScript JSX","code":44,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useSpeedTestStore.ts":{"language":"TypeScript","code":74,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useMutateUser.ts":{"language":"TypeScript","code":17,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/flashingStyles.tsx":{"language":"TypeScript JSX","code":46,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/userStore.ts":{"language":"TypeScript","code":21,"comment":6,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/fontProvider.tsx":{"language":"TypeScript JSX","code":45,"comment":0,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/cube-flasher.tsx":{"language":"TypeScript JSX","code":41,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/wordchanger.tsx":{"language":"TypeScript JSX","code":67,"comment":1,"blank":10},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/usePairsStore.ts":{"language":"TypeScript","code":14,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/schultetable.tsx":{"language":"TypeScript JSX","code":164,"comment":0,"blank":20},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flasherstartbutton.tsx":{"language":"TypeScript JSX","code":49,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/tests/evensandodds.test.ts":{"language":"TypeScript","code":92,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/greendottext.tsx":{"language":"TypeScript JSX","code":40,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/schultedraw.tsx":{"language":"TypeScript JSX","code":118,"comment":5,"blank":11},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/_app.tsx":{"language":"TypeScript JSX","code":12,"comment":1,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flashingcell.tsx":{"language":"TypeScript JSX","code":304,"comment":2,"blank":25},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/wordpairs.tsx":{"language":"TypeScript JSX","code":172,"comment":0,"blank":17},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/settings.tsx":{"language":"TypeScript JSX","code":368,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/styles/globals.css":{"language":"CSS","code":25,"comment":0,"blank":12},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/sidebar.tsx":{"language":"TypeScript JSX","code":92,"comment":2,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/letterMatcher.tsx":{"language":"TypeScript JSX","code":174,"comment":0,"blank":10},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/sign-in/%5B%5B...index%5D%5D.tsx":{"language":"TypeScript JSX","code":19,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/setup.tsx":{"language":"TypeScript JSX","code":91,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/done.tsx":{"language":"TypeScript JSX","code":24,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/api/trpc/%5Btrpc%5D.ts":{"language":"TypeScript","code":6,"comment":12,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/index.tsx":{"language":"TypeScript JSX","code":77,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/greendot.tsx":{"language":"TypeScript JSX","code":98,"comment":3,"blank":8},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/next.tsx":{"language":"TypeScript JSX","code":43,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/boxes.tsx":{"language":"TypeScript JSX","code":127,"comment":3,"blank":11},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/lettermatcher.tsx":{"language":"TypeScript JSX","code":119,"comment":3,"blank":8},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/wordpairs.tsx":{"language":"TypeScript JSX","code":127,"comment":3,"blank":8},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/fourbyone.tsx":{"language":"TypeScript JSX","code":98,"comment":3,"blank":7},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/evennumbers.tsx":{"language":"TypeScript JSX","code":120,"comment":3,"blank":9},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/twobyone.tsx":{"language":"TypeScript JSX","code":97,"comment":3,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/speedtest.tsx":{"language":"TypeScript JSX","code":128,"comment":3,"blank":9},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/twobytwo.tsx":{"language":"TypeScript JSX","code":96,"comment":3,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/onebytwo.tsx":{"language":"TypeScript JSX","code":99,"comment":3,"blank":7},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/onebyone.tsx":{"language":"TypeScript JSX","code":98,"comment":3,"blank":7},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/numbermatcher.tsx":{"language":"TypeScript JSX","code":105,"comment":3,"blank":9},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/sign-up/%5B%5B...index%5D%5D.tsx":{"language":"TypeScript JSX","code":19,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/schultetable.tsx":{"language":"TypeScript JSX","code":178,"comment":3,"blank":10},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/testexercise.tsx":{"language":"TypeScript JSX","code":103,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/index.tsx":{"language":"TypeScript JSX","code":67,"comment":0,"blank":9},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/tableswitcher.tsx":{"language":"TypeScript JSX","code":58,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/speedtest.tsx":{"language":"TypeScript JSX","code":190,"comment":0,"blank":8},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/nav.tsx":{"language":"TypeScript JSX","code":229,"comment":0,"blank":16},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flashingWordsNav.tsx":{"language":"TypeScript JSX","code":43,"comment":0,"blank":6},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/cubeflasher.tsx":{"language":"TypeScript JSX","code":211,"comment":0,"blank":11},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/numbermatcher.tsx":{"language":"TypeScript JSX","code":181,"comment":0,"blank":13},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/pietimer.tsx":{"language":"TypeScript JSX","code":94,"comment":5,"blank":11},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/createquestion/done.tsx":{"language":"TypeScript JSX","code":56,"comment":0,"blank":8},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/evensandodds.tsx":{"language":"TypeScript JSX","code":173,"comment":0,"blank":20},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/loadingspinner.tsx":{"language":"TypeScript JSX","code":23,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/expo/app.config.ts":{"language":"TypeScript","code":37,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/tailwind.config.cjs":{"language":"JavaScript","code":3,"comment":1,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/createquestion/index.tsx":{"language":"TypeScript JSX","code":157,"comment":0,"blank":8},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/postcss.config.cjs":{"language":"JavaScript","code":1,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/next-env.d.ts":{"language":"TypeScript","code":0,"comment":4,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/.eslintrc.cjs":{"language":"JavaScript","code":6,"comment":1,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/package.json":{"language":"JSON","code":45,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashonebyone.tsx":{"language":"TypeScript JSX","code":16,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashtwobyone.tsx":{"language":"TypeScript JSX","code":16,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/wordpairs.tsx":{"language":"TypeScript JSX","code":17,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/validators/tsconfig.json":{"language":"JSON with Comments","code":4,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/cubebythree.tsx":{"language":"TypeScript JSX","code":14,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/evennumbers.tsx":{"language":"TypeScript JSX","code":34,"comment":1,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/validators/index.ts":{"language":"TypeScript","code":194,"comment":2,"blank":21},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/numbermatcher.tsx":{"language":"TypeScript JSX","code":19,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/result.tsx":{"language":"TypeScript JSX","code":152,"comment":6,"blank":12},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/transformer.ts":{"language":"TypeScript","code":2,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/tsconfig.json":{"language":"JSON with Comments","code":4,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/trpc.ts":{"language":"TypeScript","code":22,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/context.ts":{"language":"TypeScript","code":18,"comment":12,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/index.tsx":{"language":"TypeScript JSX","code":44,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/auth.ts":{"language":"TypeScript","code":9,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/user.ts":{"language":"TypeScript","code":68,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/index.ts":{"language":"TypeScript","code":16,"comment":1,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/post.ts":{"language":"TypeScript","code":15,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/exercises.ts":{"language":"TypeScript","code":202,"comment":0,"blank":10},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/collection.ts":{"language":"TypeScript","code":204,"comment":0,"blank":10},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/package.json":{"language":"JSON","code":28,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/builders.ts":{"language":"TypeScript","code":28,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by3.tsx":{"language":"TypeScript JSX","code":29,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/api/index.ts":{"language":"TypeScript","code":4,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/index.tsx":{"language":"TypeScript JSX","code":91,"comment":0,"blank":10},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by5.tsx":{"language":"TypeScript JSX","code":29,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by7.tsx":{"language":"TypeScript JSX","code":29,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/question.tsx":{"language":"TypeScript JSX","code":111,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/validators/package.json":{"language":"JSON","code":20,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/cubebytwo.tsx":{"language":"TypeScript JSX","code":14,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/boxes.tsx":{"language":"TypeScript JSX","code":26,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/lettermatcher.tsx":{"language":"TypeScript JSX","code":19,"comment":0,"blank":3},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashfourbyone.tsx":{"language":"TypeScript JSX","code":16,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/package.json":{"language":"JSON","code":24,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashtwobytwo.tsx":{"language":"TypeScript JSX","code":16,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/greendot.tsx":{"language":"TypeScript JSX","code":40,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashonebytwo.tsx":{"language":"TypeScript JSX","code":16,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/tsconfig.json":{"language":"JSON with Comments","code":4,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/index.ts":{"language":"TypeScript","code":184,"comment":16,"blank":16},"file:///home/jboyett/Documents/dev/github/iris-mobile/app.json":{"language":"JSON","code":17,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/pnpm-workspace.yaml":{"language":"YAML","code":9,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/next-env.d.ts":{"language":"TypeScript","code":0,"comment":4,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/turbo.json":{"language":"JSON","code":39,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/.eslintrc.cjs":{"language":"JavaScript","code":25,"comment":1,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/package.json":{"language":"JSON","code":50,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/.prettierrc.cjs":{"language":"JavaScript","code":16,"comment":1,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/drizzle.config.ts":{"language":"TypeScript","code":13,"comment":0,"blank":4},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/db/package.json":{"language":"JSON","code":24,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/stores/user.ts":{"language":"TypeScript","code":0,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/stores/index.ts":{"language":"TypeScript","code":0,"comment":0,"blank":2},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/types/index.ts":{"language":"TypeScript","code":44,"comment":13,"blank":18},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/types/tsconfig.json":{"language":"JSON with Comments","code":4,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/patches/react-native%400.70.5.patch":{"language":"Diff","code":45,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/types/package.json":{"language":"JSON","code":23,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/db/index.ts":{"language":"TypeScript","code":16,"comment":2,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/db/package-lock.json":{"language":"JSON","code":280,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/db/drizzle/schema.ts":{"language":"TypeScript","code":380,"comment":0,"blank":16},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/db/tsconfig.json":{"language":"JSON with Comments","code":4,"comment":0,"blank":1},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/db/prisma/schema.prisma":{"language":"Prisma","code":233,"comment":2,"blank":37},"file:///home/jboyett/Documents/dev/github/iris-mobile/packages/db/drizzle/index.ts":{"language":"TypeScript","code":48,"comment":0,"blank":5},"file:///home/jboyett/Documents/dev/github/iris-mobile/.github/workflows/ci.yml":{"language":"YAML","code":47,"comment":2,"blank":14},"file:///home/jboyett/Documents/dev/github/iris-mobile/.github/ISSUE_TEMPLATE/bug_report.md":{"language":"Markdown","code":32,"comment":0,"blank":12},"file:///home/jboyett/Documents/dev/github/iris-mobile/pnpm-lock.yaml":{"language":"YAML","code":12196,"comment":0,"blank":1683}} \ No newline at end of file diff --git a/.VSCodeCounter/2024-01-29_02-53-16/results.md b/.VSCodeCounter/2024-01-29_02-53-16/results.md new file mode 100644 index 0000000..f7ac286 --- /dev/null +++ b/.VSCodeCounter/2024-01-29_02-53-16/results.md @@ -0,0 +1,100 @@ +# Summary + +Date : 2024-01-29 02:53:16 + +Directory /home/jboyett/Documents/dev/github/iris-mobile + +Total : 194 files, 27407 codes, 356 comments, 2962 blanks, all 30725 lines + +Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md) + +## Languages +| language | files | code | comment | blank | total | +| :--- | ---: | ---: | ---: | ---: | ---: | +| YAML | 3 | 12,252 | 2 | 1,698 | 13,952 | +| TypeScript JSX | 102 | 11,570 | 133 | 786 | 12,489 | +| TypeScript | 46 | 2,125 | 169 | 231 | 2,525 | +| JSON | 14 | 651 | 0 | 14 | 665 | +| Markdown | 3 | 255 | 0 | 127 | 382 | +| Prisma | 1 | 233 | 2 | 37 | 272 | +| JavaScript | 15 | 191 | 50 | 44 | 285 | +| JSON with Comments | 8 | 60 | 0 | 8 | 68 | +| Diff | 1 | 45 | 0 | 5 | 50 | +| CSS | 1 | 25 | 0 | 12 | 37 | + +## Directories +| path | files | code | comment | blank | total | +| :--- | ---: | ---: | ---: | ---: | ---: | +| . | 194 | 27,407 | 356 | 2,962 | 30,725 | +| . (Files) | 12 | 12,541 | 6 | 1,773 | 14,320 | +| .github | 2 | 79 | 2 | 26 | 107 | +| .github/ISSUE_TEMPLATE | 1 | 32 | 0 | 12 | 44 | +| .github/workflows | 1 | 47 | 2 | 14 | 63 | +| apps | 145 | 12,608 | 299 | 979 | 13,886 | +| apps/expo | 53 | 6,122 | 130 | 392 | 6,644 | +| apps/expo (Files) | 7 | 140 | 12 | 17 | 169 | +| apps/expo/.expo-shared | 1 | 4 | 0 | 1 | 5 | +| apps/expo/expo-plugins | 1 | 29 | 6 | 7 | 42 | +| apps/expo/src | 44 | 5,949 | 112 | 367 | 6,428 | +| apps/expo/src (Files) | 1 | 98 | 0 | 7 | 105 | +| apps/expo/src/components | 25 | 4,628 | 54 | 268 | 4,950 | +| apps/expo/src/components (Files) | 5 | 1,060 | 4 | 66 | 1,130 | +| apps/expo/src/components/exercises | 10 | 1,699 | 11 | 134 | 1,844 | +| apps/expo/src/components/exercises (Files) | 7 | 1,514 | 6 | 120 | 1,640 | +| apps/expo/src/components/exercises/GreenDot | 3 | 185 | 5 | 14 | 204 | +| apps/expo/src/components/instructions | 9 | 1,503 | 27 | 36 | 1,566 | +| apps/expo/src/components/speedtest | 1 | 366 | 12 | 32 | 410 | +| apps/expo/src/cva | 2 | 128 | 0 | 11 | 139 | +| apps/expo/src/hooks | 4 | 90 | 31 | 15 | 136 | +| apps/expo/src/screens | 6 | 838 | 0 | 47 | 885 | +| apps/expo/src/stores | 3 | 105 | 6 | 9 | 120 | +| apps/expo/src/types | 1 | 0 | 1 | 1 | 2 | +| apps/expo/src/utils | 2 | 62 | 20 | 9 | 91 | +| apps/nextjs | 92 | 6,486 | 169 | 587 | 7,242 | +| apps/nextjs (Files) | 8 | 169 | 13 | 51 | 233 | +| apps/nextjs/src | 84 | 6,317 | 156 | 536 | 7,009 | +| apps/nextjs/src (Files) | 1 | 11 | 9 | 3 | 23 | +| apps/nextjs/src/components | 18 | 2,245 | 15 | 181 | 2,441 | +| apps/nextjs/src/components (Files) | 17 | 2,153 | 15 | 176 | 2,344 | +| apps/nextjs/src/components/tests | 1 | 92 | 0 | 5 | 97 | +| apps/nextjs/src/cva | 4 | 176 | 0 | 18 | 194 | +| apps/nextjs/src/env | 3 | 53 | 23 | 17 | 93 | +| apps/nextjs/src/hooks | 4 | 122 | 35 | 23 | 180 | +| apps/nextjs/src/pages | 47 | 3,509 | 59 | 259 | 3,827 | +| apps/nextjs/src/pages (Files) | 7 | 844 | 1 | 37 | 882 | +| apps/nextjs/src/pages/admin | 4 | 383 | 0 | 30 | 413 | +| apps/nextjs/src/pages/admin (Files) | 2 | 170 | 0 | 14 | 184 | +| apps/nextjs/src/pages/admin/createquestion | 2 | 213 | 0 | 16 | 229 | +| apps/nextjs/src/pages/api | 1 | 6 | 12 | 5 | 23 | +| apps/nextjs/src/pages/api/trpc | 1 | 6 | 12 | 5 | 23 | +| apps/nextjs/src/pages/exercises | 20 | 748 | 7 | 76 | 831 | +| apps/nextjs/src/pages/exercises (Files) | 13 | 263 | 1 | 32 | 296 | +| apps/nextjs/src/pages/exercises/schultetable | 4 | 131 | 0 | 17 | 148 | +| apps/nextjs/src/pages/exercises/speedtest | 3 | 354 | 6 | 27 | 387 | +| apps/nextjs/src/pages/instructions | 13 | 1,490 | 39 | 105 | 1,634 | +| apps/nextjs/src/pages/instructions (Files) | 8 | 1,002 | 24 | 72 | 1,098 | +| apps/nextjs/src/pages/instructions/flashingwords | 5 | 488 | 15 | 33 | 536 | +| apps/nextjs/src/pages/sign-in | 1 | 19 | 0 | 3 | 22 | +| apps/nextjs/src/pages/sign-up | 1 | 19 | 0 | 3 | 22 | +| apps/nextjs/src/stores | 5 | 146 | 6 | 17 | 169 | +| apps/nextjs/src/styles | 1 | 25 | 0 | 12 | 37 | +| apps/nextjs/src/utils | 1 | 30 | 9 | 6 | 45 | +| packages | 34 | 2,134 | 49 | 179 | 2,362 | +| packages/api | 13 | 620 | 13 | 46 | 679 | +| packages/api (Files) | 4 | 38 | 0 | 5 | 43 | +| packages/api/src | 9 | 582 | 13 | 41 | 636 | +| packages/api/src (Files) | 2 | 40 | 12 | 9 | 61 | +| packages/api/src/router | 7 | 542 | 1 | 32 | 575 | +| packages/config | 3 | 28 | 1 | 3 | 32 | +| packages/config/tailwind | 3 | 28 | 1 | 3 | 32 | +| packages/db | 7 | 985 | 4 | 66 | 1,055 | +| packages/db (Files) | 4 | 324 | 2 | 8 | 334 | +| packages/db/drizzle | 2 | 428 | 0 | 21 | 449 | +| packages/db/prisma | 1 | 233 | 2 | 37 | 272 | +| packages/helpers | 3 | 212 | 16 | 18 | 246 | +| packages/stores | 2 | 0 | 0 | 3 | 3 | +| packages/types | 3 | 71 | 13 | 20 | 104 | +| packages/validators | 3 | 218 | 2 | 23 | 243 | +| patches | 1 | 45 | 0 | 5 | 50 | + +Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md) \ No newline at end of file diff --git a/.VSCodeCounter/2024-01-29_02-53-16/results.txt b/.VSCodeCounter/2024-01-29_02-53-16/results.txt new file mode 100644 index 0000000..27aaaae --- /dev/null +++ b/.VSCodeCounter/2024-01-29_02-53-16/results.txt @@ -0,0 +1,297 @@ +Date : 2024-01-29 02:53:16 +Directory : /home/jboyett/Documents/dev/github/iris-mobile +Total : 194 files, 27407 codes, 356 comments, 2962 blanks, all 30725 lines + +Languages ++--------------------+------------+------------+------------+------------+------------+ +| language | files | code | comment | blank | total | ++--------------------+------------+------------+------------+------------+------------+ +| YAML | 3 | 12,252 | 2 | 1,698 | 13,952 | +| TypeScript JSX | 102 | 11,570 | 133 | 786 | 12,489 | +| TypeScript | 46 | 2,125 | 169 | 231 | 2,525 | +| JSON | 14 | 651 | 0 | 14 | 665 | +| Markdown | 3 | 255 | 0 | 127 | 382 | +| Prisma | 1 | 233 | 2 | 37 | 272 | +| JavaScript | 15 | 191 | 50 | 44 | 285 | +| JSON with Comments | 8 | 60 | 0 | 8 | 68 | +| Diff | 1 | 45 | 0 | 5 | 50 | +| CSS | 1 | 25 | 0 | 12 | 37 | ++--------------------+------------+------------+------------+------------+------------+ + +Directories ++---------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ +| path | files | code | comment | blank | total | ++---------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ +| . | 194 | 27,407 | 356 | 2,962 | 30,725 | +| . (Files) | 12 | 12,541 | 6 | 1,773 | 14,320 | +| .github | 2 | 79 | 2 | 26 | 107 | +| .github/ISSUE_TEMPLATE | 1 | 32 | 0 | 12 | 44 | +| .github/workflows | 1 | 47 | 2 | 14 | 63 | +| apps | 145 | 12,608 | 299 | 979 | 13,886 | +| apps/expo | 53 | 6,122 | 130 | 392 | 6,644 | +| apps/expo (Files) | 7 | 140 | 12 | 17 | 169 | +| apps/expo/.expo-shared | 1 | 4 | 0 | 1 | 5 | +| apps/expo/expo-plugins | 1 | 29 | 6 | 7 | 42 | +| apps/expo/src | 44 | 5,949 | 112 | 367 | 6,428 | +| apps/expo/src (Files) | 1 | 98 | 0 | 7 | 105 | +| apps/expo/src/components | 25 | 4,628 | 54 | 268 | 4,950 | +| apps/expo/src/components (Files) | 5 | 1,060 | 4 | 66 | 1,130 | +| apps/expo/src/components/exercises | 10 | 1,699 | 11 | 134 | 1,844 | +| apps/expo/src/components/exercises (Files) | 7 | 1,514 | 6 | 120 | 1,640 | +| apps/expo/src/components/exercises/GreenDot | 3 | 185 | 5 | 14 | 204 | +| apps/expo/src/components/instructions | 9 | 1,503 | 27 | 36 | 1,566 | +| apps/expo/src/components/speedtest | 1 | 366 | 12 | 32 | 410 | +| apps/expo/src/cva | 2 | 128 | 0 | 11 | 139 | +| apps/expo/src/hooks | 4 | 90 | 31 | 15 | 136 | +| apps/expo/src/screens | 6 | 838 | 0 | 47 | 885 | +| apps/expo/src/stores | 3 | 105 | 6 | 9 | 120 | +| apps/expo/src/types | 1 | 0 | 1 | 1 | 2 | +| apps/expo/src/utils | 2 | 62 | 20 | 9 | 91 | +| apps/nextjs | 92 | 6,486 | 169 | 587 | 7,242 | +| apps/nextjs (Files) | 8 | 169 | 13 | 51 | 233 | +| apps/nextjs/src | 84 | 6,317 | 156 | 536 | 7,009 | +| apps/nextjs/src (Files) | 1 | 11 | 9 | 3 | 23 | +| apps/nextjs/src/components | 18 | 2,245 | 15 | 181 | 2,441 | +| apps/nextjs/src/components (Files) | 17 | 2,153 | 15 | 176 | 2,344 | +| apps/nextjs/src/components/tests | 1 | 92 | 0 | 5 | 97 | +| apps/nextjs/src/cva | 4 | 176 | 0 | 18 | 194 | +| apps/nextjs/src/env | 3 | 53 | 23 | 17 | 93 | +| apps/nextjs/src/hooks | 4 | 122 | 35 | 23 | 180 | +| apps/nextjs/src/pages | 47 | 3,509 | 59 | 259 | 3,827 | +| apps/nextjs/src/pages (Files) | 7 | 844 | 1 | 37 | 882 | +| apps/nextjs/src/pages/admin | 4 | 383 | 0 | 30 | 413 | +| apps/nextjs/src/pages/admin (Files) | 2 | 170 | 0 | 14 | 184 | +| apps/nextjs/src/pages/admin/createquestion | 2 | 213 | 0 | 16 | 229 | +| apps/nextjs/src/pages/api | 1 | 6 | 12 | 5 | 23 | +| apps/nextjs/src/pages/api/trpc | 1 | 6 | 12 | 5 | 23 | +| apps/nextjs/src/pages/exercises | 20 | 748 | 7 | 76 | 831 | +| apps/nextjs/src/pages/exercises (Files) | 13 | 263 | 1 | 32 | 296 | +| apps/nextjs/src/pages/exercises/schultetable | 4 | 131 | 0 | 17 | 148 | +| apps/nextjs/src/pages/exercises/speedtest | 3 | 354 | 6 | 27 | 387 | +| apps/nextjs/src/pages/instructions | 13 | 1,490 | 39 | 105 | 1,634 | +| apps/nextjs/src/pages/instructions (Files) | 8 | 1,002 | 24 | 72 | 1,098 | +| apps/nextjs/src/pages/instructions/flashingwords | 5 | 488 | 15 | 33 | 536 | +| apps/nextjs/src/pages/sign-in | 1 | 19 | 0 | 3 | 22 | +| apps/nextjs/src/pages/sign-up | 1 | 19 | 0 | 3 | 22 | +| apps/nextjs/src/stores | 5 | 146 | 6 | 17 | 169 | +| apps/nextjs/src/styles | 1 | 25 | 0 | 12 | 37 | +| apps/nextjs/src/utils | 1 | 30 | 9 | 6 | 45 | +| packages | 34 | 2,134 | 49 | 179 | 2,362 | +| packages/api | 13 | 620 | 13 | 46 | 679 | +| packages/api (Files) | 4 | 38 | 0 | 5 | 43 | +| packages/api/src | 9 | 582 | 13 | 41 | 636 | +| packages/api/src (Files) | 2 | 40 | 12 | 9 | 61 | +| packages/api/src/router | 7 | 542 | 1 | 32 | 575 | +| packages/config | 3 | 28 | 1 | 3 | 32 | +| packages/config/tailwind | 3 | 28 | 1 | 3 | 32 | +| packages/db | 7 | 985 | 4 | 66 | 1,055 | +| packages/db (Files) | 4 | 324 | 2 | 8 | 334 | +| packages/db/drizzle | 2 | 428 | 0 | 21 | 449 | +| packages/db/prisma | 1 | 233 | 2 | 37 | 272 | +| packages/helpers | 3 | 212 | 16 | 18 | 246 | +| packages/stores | 2 | 0 | 0 | 3 | 3 | +| packages/types | 3 | 71 | 13 | 20 | 104 | +| packages/validators | 3 | 218 | 2 | 23 | 243 | +| patches | 1 | 45 | 0 | 5 | 50 | ++---------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ + +Files ++---------------------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+ +| filename | language | code | comment | blank | total | ++---------------------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+ +| /home/jboyett/Documents/dev/github/iris-mobile/.eslintrc.cjs | JavaScript | 25 | 1 | 1 | 27 | +| /home/jboyett/Documents/dev/github/iris-mobile/.github/ISSUE_TEMPLATE/bug_report.md | Markdown | 32 | 0 | 12 | 44 | +| /home/jboyett/Documents/dev/github/iris-mobile/.github/workflows/ci.yml | YAML | 47 | 2 | 14 | 63 | +| /home/jboyett/Documents/dev/github/iris-mobile/.prettierrc.cjs | JavaScript | 16 | 1 | 2 | 19 | +| /home/jboyett/Documents/dev/github/iris-mobile/README.md | Markdown | 131 | 0 | 75 | 206 | +| /home/jboyett/Documents/dev/github/iris-mobile/app.json | JSON | 17 | 0 | 1 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/.expo-shared/assets.json | JSON | 4 | 0 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/app.config.ts | TypeScript | 37 | 0 | 4 | 41 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/babel.config.js | JavaScript | 12 | 0 | 1 | 13 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/expo-plugins/with-modify-gradle.js | JavaScript | 29 | 6 | 7 | 42 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/index.ts | TypeScript | 3 | 3 | 3 | 9 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/metro.config.js | JavaScript | 13 | 8 | 6 | 27 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/package.json | JSON | 64 | 0 | 1 | 65 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/_app.tsx | TypeScript JSX | 98 | 0 | 7 | 105 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/BoxFlasher.tsx | TypeScript JSX | 260 | 0 | 24 | 284 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/Grid.tsx | TypeScript JSX | 47 | 0 | 10 | 57 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/SignInWithOAuth.tsx | TypeScript JSX | 250 | 3 | 12 | 265 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/SignUpWithOAuth.tsx | TypeScript JSX | 268 | 1 | 12 | 281 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/Train.tsx | TypeScript JSX | 235 | 0 | 8 | 243 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/CubeFlasher.tsx | TypeScript JSX | 0 | 0 | 1 | 1 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/EvenNumber.tsx | TypeScript JSX | 175 | 0 | 17 | 192 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/Dot.tsx | TypeScript JSX | 90 | 5 | 9 | 104 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/Text.tsx | TypeScript JSX | 51 | 0 | 1 | 52 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/GreenDot/index.tsx | TypeScript JSX | 44 | 0 | 4 | 48 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/Letters.tsx | TypeScript JSX | 273 | 0 | 19 | 292 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/NumberMatcher.tsx | TypeScript JSX | 285 | 6 | 24 | 315 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/SchulteTable.tsx | TypeScript JSX | 273 | 0 | 25 | 298 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/WordFlasher.tsx | TypeScript JSX | 308 | 0 | 19 | 327 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/exercises/WordPairs.tsx | TypeScript JSX | 200 | 0 | 15 | 215 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/Boxes.tsx | TypeScript JSX | 163 | 3 | 4 | 170 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/EvenNumbers.tsx | TypeScript JSX | 171 | 3 | 4 | 178 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/GreenDot.tsx | TypeScript JSX | 151 | 3 | 4 | 158 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/LetterMatch.tsx | TypeScript JSX | 170 | 3 | 4 | 177 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/NumberMatch.tsx | TypeScript JSX | 155 | 3 | 4 | 162 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/SchulteTable.tsx | TypeScript JSX | 174 | 3 | 4 | 181 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/SpeedTest.tsx | TypeScript JSX | 178 | 3 | 4 | 185 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/WordFlasher.tsx | TypeScript JSX | 163 | 3 | 4 | 170 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/instructions/WordPair.tsx | TypeScript JSX | 178 | 3 | 4 | 185 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/components/speedtest/index.tsx | TypeScript JSX | 366 | 12 | 32 | 410 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/cva/FontProvider.tsx | TypeScript JSX | 48 | 0 | 6 | 54 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/cva/WordFlashCell.tsx | TypeScript JSX | 80 | 0 | 5 | 85 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useIncrementalState.ts | TypeScript | 30 | 0 | 2 | 32 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useInterval.ts | TypeScript | 19 | 2 | 4 | 25 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useStopWatch.ts | TypeScript | 31 | 29 | 7 | 67 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/hooks/useWarmUpBrowser.ts | TypeScript | 10 | 0 | 2 | 12 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/Settings.tsx | TypeScript JSX | 376 | 0 | 16 | 392 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/auth.tsx | TypeScript JSX | 51 | 0 | 5 | 56 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/home.tsx | TypeScript JSX | 368 | 0 | 18 | 386 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/signout.tsx | TypeScript JSX | 14 | 0 | 2 | 16 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/signup.tsx | TypeScript JSX | 19 | 0 | 4 | 23 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/screens/train.tsx | TypeScript JSX | 10 | 0 | 2 | 12 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/useBoxStore.ts | TypeScript | 15 | 0 | 3 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/useSpeedTestStore.ts | TypeScript | 67 | 0 | 3 | 70 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/stores/userStore.ts | TypeScript | 23 | 6 | 3 | 32 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/types/nativewind.d.ts | TypeScript | 0 | 1 | 1 | 2 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/utils/cache.ts | TypeScript | 16 | 3 | 4 | 23 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/src/utils/trpc.tsx | TypeScript JSX | 46 | 17 | 5 | 68 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/tailwind.config.cjs | JavaScript | 3 | 1 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/expo/tsconfig.json | JSON with Comments | 8 | 0 | 1 | 9 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/.eslintrc.cjs | JavaScript | 6 | 1 | 1 | 8 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/README.md | Markdown | 92 | 0 | 40 | 132 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/next-env.d.ts | TypeScript | 0 | 4 | 2 | 6 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/next.config.mjs | JavaScript | 17 | 7 | 4 | 28 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/package.json | JSON | 45 | 0 | 1 | 46 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/postcss.config.cjs | JavaScript | 1 | 0 | 1 | 2 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/cubeflasher.tsx | TypeScript JSX | 211 | 0 | 11 | 222 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/evensandodds.tsx | TypeScript JSX | 173 | 0 | 20 | 193 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flasherstartbutton.tsx | TypeScript JSX | 49 | 0 | 5 | 54 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flashingWordsNav.tsx | TypeScript JSX | 43 | 0 | 6 | 49 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/flashingcell.tsx | TypeScript JSX | 304 | 2 | 25 | 331 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/greendottext.tsx | TypeScript JSX | 40 | 0 | 1 | 41 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/letterMatcher.tsx | TypeScript JSX | 174 | 0 | 10 | 184 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/loadingspinner.tsx | TypeScript JSX | 23 | 0 | 1 | 24 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/numbermatcher.tsx | TypeScript JSX | 181 | 0 | 13 | 194 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/pietimer.tsx | TypeScript JSX | 94 | 5 | 11 | 110 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/schultedraw.tsx | TypeScript JSX | 118 | 5 | 11 | 134 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/schultetable.tsx | TypeScript JSX | 164 | 0 | 20 | 184 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/sidebar.tsx | TypeScript JSX | 92 | 2 | 4 | 98 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/speedtest.tsx | TypeScript JSX | 190 | 0 | 8 | 198 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/tableswitcher.tsx | TypeScript JSX | 58 | 0 | 3 | 61 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/tests/evensandodds.test.ts | TypeScript | 92 | 0 | 5 | 97 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/wordchanger.tsx | TypeScript JSX | 67 | 1 | 10 | 78 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/components/wordpairs.tsx | TypeScript JSX | 172 | 0 | 17 | 189 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/cube-flasher.tsx | TypeScript JSX | 41 | 0 | 4 | 45 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/flashingStyles.tsx | TypeScript JSX | 46 | 0 | 4 | 50 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/fontProvider.tsx | TypeScript JSX | 45 | 0 | 6 | 51 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/cva/highlightSelectorButton.tsx | TypeScript JSX | 44 | 0 | 4 | 48 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/client.mjs | JavaScript | 25 | 2 | 7 | 34 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/schema.mjs | JavaScript | 11 | 16 | 4 | 31 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/env/server.mjs | JavaScript | 17 | 5 | 6 | 28 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useInterval.ts | TypeScript | 19 | 2 | 4 | 25 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useIsVisible.ts | TypeScript | 16 | 0 | 4 | 20 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useStopWatch.ts | TypeScript | 25 | 29 | 6 | 60 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/hooks/useTimer.ts | TypeScript | 62 | 4 | 9 | 75 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/middleware.ts | TypeScript | 11 | 9 | 3 | 23 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/_app.tsx | TypeScript JSX | 12 | 1 | 3 | 16 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/createquestion/done.tsx | TypeScript JSX | 56 | 0 | 8 | 64 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/createquestion/index.tsx | TypeScript JSX | 157 | 0 | 8 | 165 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/index.tsx | TypeScript JSX | 67 | 0 | 9 | 76 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/admin/testexercise.tsx | TypeScript JSX | 103 | 0 | 5 | 108 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/api/trpc/[trpc].ts | TypeScript | 6 | 12 | 5 | 23 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/done.tsx | TypeScript JSX | 24 | 0 | 2 | 26 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/boxes.tsx | TypeScript JSX | 26 | 0 | 3 | 29 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/cubebythree.tsx | TypeScript JSX | 14 | 0 | 2 | 16 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/cubebytwo.tsx | TypeScript JSX | 14 | 0 | 2 | 16 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/evennumbers.tsx | TypeScript JSX | 34 | 1 | 3 | 38 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashfourbyone.tsx | TypeScript JSX | 16 | 0 | 2 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashonebyone.tsx | TypeScript JSX | 16 | 0 | 2 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashonebytwo.tsx | TypeScript JSX | 16 | 0 | 2 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashtwobyone.tsx | TypeScript JSX | 16 | 0 | 2 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/flashtwobytwo.tsx | TypeScript JSX | 16 | 0 | 2 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/greendot.tsx | TypeScript JSX | 40 | 0 | 4 | 44 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/lettermatcher.tsx | TypeScript JSX | 19 | 0 | 3 | 22 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/numbermatcher.tsx | TypeScript JSX | 19 | 0 | 3 | 22 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by3.tsx | TypeScript JSX | 29 | 0 | 4 | 33 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by5.tsx | TypeScript JSX | 29 | 0 | 4 | 33 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/by7.tsx | TypeScript JSX | 29 | 0 | 4 | 33 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/schultetable/index.tsx | TypeScript JSX | 44 | 0 | 5 | 49 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/index.tsx | TypeScript JSX | 91 | 0 | 10 | 101 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/question.tsx | TypeScript JSX | 111 | 0 | 5 | 116 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/speedtest/result.tsx | TypeScript JSX | 152 | 6 | 12 | 170 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/exercises/wordpairs.tsx | TypeScript JSX | 17 | 0 | 2 | 19 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/index.tsx | TypeScript JSX | 77 | 0 | 5 | 82 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/boxes.tsx | TypeScript JSX | 127 | 3 | 11 | 141 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/evennumbers.tsx | TypeScript JSX | 120 | 3 | 9 | 132 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/fourbyone.tsx | TypeScript JSX | 98 | 3 | 7 | 108 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/onebyone.tsx | TypeScript JSX | 98 | 3 | 7 | 108 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/onebytwo.tsx | TypeScript JSX | 99 | 3 | 7 | 109 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/twobyone.tsx | TypeScript JSX | 97 | 3 | 6 | 106 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/flashingwords/twobytwo.tsx | TypeScript JSX | 96 | 3 | 6 | 105 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/greendot.tsx | TypeScript JSX | 98 | 3 | 8 | 109 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/lettermatcher.tsx | TypeScript JSX | 119 | 3 | 8 | 130 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/numbermatcher.tsx | TypeScript JSX | 105 | 3 | 9 | 117 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/schultetable.tsx | TypeScript JSX | 178 | 3 | 10 | 191 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/speedtest.tsx | TypeScript JSX | 128 | 3 | 9 | 140 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/instructions/wordpairs.tsx | TypeScript JSX | 127 | 3 | 8 | 138 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/nav.tsx | TypeScript JSX | 229 | 0 | 16 | 245 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/next.tsx | TypeScript JSX | 43 | 0 | 3 | 46 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/settings.tsx | TypeScript JSX | 368 | 0 | 5 | 373 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/setup.tsx | TypeScript JSX | 91 | 0 | 3 | 94 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/sign-in/[[...index]].tsx | TypeScript JSX | 19 | 0 | 3 | 22 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/pages/sign-up/[[...index]].tsx | TypeScript JSX | 19 | 0 | 3 | 22 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useCubeStore.ts | TypeScript | 20 | 0 | 3 | 23 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useMutateUser.ts | TypeScript | 17 | 0 | 3 | 20 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/usePairsStore.ts | TypeScript | 14 | 0 | 4 | 18 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/useSpeedTestStore.ts | TypeScript | 74 | 0 | 4 | 78 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/stores/userStore.ts | TypeScript | 21 | 6 | 3 | 30 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/styles/globals.css | CSS | 25 | 0 | 12 | 37 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/src/utils/trpc.ts | TypeScript | 30 | 9 | 6 | 45 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/tailwind.config.cjs | JavaScript | 3 | 1 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/apps/nextjs/tsconfig.json | JSON with Comments | 5 | 0 | 1 | 6 | +| /home/jboyett/Documents/dev/github/iris-mobile/drizzle.config.ts | TypeScript | 13 | 0 | 4 | 17 | +| /home/jboyett/Documents/dev/github/iris-mobile/eas.json | JSON | 18 | 0 | 1 | 19 | +| /home/jboyett/Documents/dev/github/iris-mobile/next-env.d.ts | TypeScript | 0 | 4 | 2 | 6 | +| /home/jboyett/Documents/dev/github/iris-mobile/package.json | JSON | 50 | 0 | 1 | 51 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/index.ts | TypeScript | 4 | 0 | 2 | 6 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/package.json | JSON | 28 | 0 | 1 | 29 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/context.ts | TypeScript | 18 | 12 | 5 | 35 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/auth.ts | TypeScript | 9 | 0 | 2 | 11 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/builders.ts | TypeScript | 28 | 0 | 2 | 30 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/collection.ts | TypeScript | 204 | 0 | 10 | 214 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/exercises.ts | TypeScript | 202 | 0 | 10 | 212 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/index.ts | TypeScript | 16 | 1 | 3 | 20 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/post.ts | TypeScript | 15 | 0 | 2 | 17 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/router/user.ts | TypeScript | 68 | 0 | 3 | 71 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/src/trpc.ts | TypeScript | 22 | 0 | 4 | 26 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/transformer.ts | TypeScript | 2 | 0 | 1 | 3 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/api/tsconfig.json | JSON with Comments | 4 | 0 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/index.js | JavaScript | 7 | 1 | 1 | 9 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/package.json | JSON | 15 | 0 | 1 | 16 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/config/tailwind/postcss.js | JavaScript | 6 | 0 | 1 | 7 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/db/drizzle/index.ts | TypeScript | 48 | 0 | 5 | 53 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/db/drizzle/schema.ts | TypeScript | 380 | 0 | 16 | 396 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/db/index.ts | TypeScript | 16 | 2 | 5 | 23 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/db/package-lock.json | JSON | 280 | 0 | 1 | 281 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/db/package.json | JSON | 24 | 0 | 1 | 25 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/db/prisma/schema.prisma | Prisma | 233 | 2 | 37 | 272 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/db/tsconfig.json | JSON with Comments | 4 | 0 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/index.ts | TypeScript | 184 | 16 | 16 | 216 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/package.json | JSON | 24 | 0 | 1 | 25 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/helpers/tsconfig.json | JSON with Comments | 4 | 0 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/stores/index.ts | TypeScript | 0 | 0 | 2 | 2 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/stores/user.ts | TypeScript | 0 | 0 | 1 | 1 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/types/index.ts | TypeScript | 44 | 13 | 18 | 75 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/types/package.json | JSON | 23 | 0 | 1 | 24 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/types/tsconfig.json | JSON with Comments | 4 | 0 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/validators/index.ts | TypeScript | 194 | 2 | 21 | 217 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/validators/package.json | JSON | 20 | 0 | 1 | 21 | +| /home/jboyett/Documents/dev/github/iris-mobile/packages/validators/tsconfig.json | JSON with Comments | 4 | 0 | 1 | 5 | +| /home/jboyett/Documents/dev/github/iris-mobile/patches/react-native@0.70.5.patch | Diff | 45 | 0 | 5 | 50 | +| /home/jboyett/Documents/dev/github/iris-mobile/pnpm-lock.yaml | YAML | 12,196 | 0 | 1,683 | 13,879 | +| /home/jboyett/Documents/dev/github/iris-mobile/pnpm-workspace.yaml | YAML | 9 | 0 | 1 | 10 | +| /home/jboyett/Documents/dev/github/iris-mobile/tsconfig.json | JSON with Comments | 27 | 0 | 1 | 28 | +| /home/jboyett/Documents/dev/github/iris-mobile/turbo.json | JSON | 39 | 0 | 1 | 40 | +| Total | | 27,407 | 356 | 2,962 | 30,725 | ++---------------------------------------------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+ \ No newline at end of file diff --git a/.env.example b/.env.example index 9a43ec3..9d3982b 100644 --- a/.env.example +++ b/.env.example @@ -1,14 +1,16 @@ -# Since the ".env" file is gitignored, you can use the ".env.example" file to -# build a new ".env" file when you clone the repo. Keep this file up-to-date -# when you add new variables to `.env`. +# Since .env is gitignored, you can use .env.example to build a new `.env` file when you clone the repo. +# Keep this file up-to-date when you add new variables to \`.env\`. -# This file will be committed to version control, so make sure not to have any -# secrets in it. If you are cloning this repo, create a copy of this file named -# ".env" and populate it with your secrets. +# This file will be committed to version control, so make sure not to have any secrets in it. +# If you are cloning this repo, create a copy of this file named `.env` and populate it with your secrets. -# When adding additional environment variables, the schema in "/src/env.mjs" -# should be updated accordingly. +# We use dotenv to load Prisma from Next.js' .env file +# @see https://www.prisma.io/docs/reference/database-reference/connection-urls +DATABASE_URL=file:./db.sqlite -# Prisma -# https://www.prisma.io/docs/reference/database-reference/connection-urls#env -DATABASE_URL='mysql://1mfaly70aqbq5rmbf74q:pscale_pw_cHymijLKKkUlBHggKM1l1k7sr4DhbXEGjSLg62GjhjZ@aws.connect.psdb.cloud/speedread?sslaccept=strict' +# CLERK is used for authentication and authorization in the app +# @see https://dashboard.clerk.dev for your Clerk API keys +# +### NEW KEYS FOR APPS AFTER 1/18/2023 +NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXXXX +CLERK_SECRET_KEY=sk_test_XXXXXXXXXXXXXXXXXXXXXXXX diff --git a/.eslintrc.cjs b/.eslintrc.cjs index bdcf2d5..da522dc 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,25 +1,16 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const path = require('path') - /** @type {import("eslint").Linter.Config} */ -const config = { - overrides: [ - { - extends: [ - 'plugin:@typescript-eslint/recommended-requiring-type-checking', - ], - files: ['*.ts', '*.tsx'], - parserOptions: { - project: path.join(__dirname, 'tsconfig.json'), - }, - }, - ], - parser: '@typescript-eslint/parser', +module.exports = { + root: true, + parser: "@typescript-eslint/parser", parserOptions: { - project: path.join(__dirname, 'tsconfig.json'), + tsconfigRootDir: __dirname, + project: [ + "./tsconfig.json", + "./apps/*/tsconfig.json", + "./packages/*/tsconfig.json", + ], }, - plugins: ['@typescript-eslint'], - extends: ['next/core-web-vitals', 'plugin:@typescript-eslint/recommended'], + plugins: ["@typescript-eslint"], rules: { 'react-hooks/exhaustive-deps': 'off', '@typescript-eslint/consistent-type-imports': [ @@ -31,7 +22,5 @@ const config = { ], '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], '@typescript-eslint/no-unsafe-member-access': 'warn', - }, -} - -module.exports = config + }, extends: ["plugin:@typescript-eslint/recommended"], +}; diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 29cd8f4..d26ad8a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,17 +1,17 @@ --- name: Bug report about: Create a report to help us improve -title: "[BUG]" -labels: '' +title: '' +labels: bug assignees: '' - --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** -Steps to reproduce the behavior : +Steps to reproduce the behavior: + 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' @@ -20,25 +20,24 @@ Steps to reproduce the behavior : **Expected behavior** A clear and concise description of what you expected to happen. +**Logs** +Please provide logs showing the error. + **Screenshots** If applicable, add screenshots to help explain your problem. -**Web (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] +**Desktop (please complete the following information):** + +- OS: [e.g. iOS] +- Browser [e.g. chrome, safari] +- Version [e.g. 22] **Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Tablet (please complete the following information):** - - Device: [e.g. iPad Air] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] + +- Device: [e.g. iPhone6] +- OS: [e.g. iOS8.1] +- Browser [e.g. stock browser, safari] +- Version [e.g. 22] **Additional context** Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index bbcbbe7..0000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md deleted file mode 100644 index a47604a..0000000 --- a/.github/pull_request_template.md +++ /dev/null @@ -1,16 +0,0 @@ -#### Motivation -> Why is this change necessary? What problem does it solve? - -> If this is related to an issue which one? - -Closes #ISSUE_NUMBER - -#### Implementation -> How does this PR solve the problem? What technical approach is taken? - -#### Testing -> How did you verify that this works? Were automated tests written? -> What manual tests were performed? - -#### Related PRs -> Optional: if any other PRs provide context to this change diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..69c05f0 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,62 @@ +name: CI + +on: + pull_request: + branches: ["*"] + push: + branches: ["main"] + +# You can leverage Vercel Remote Caching with Turbo to speed up your builds +# @link https://turborepo.org/docs/core-concepts/remote-caching#remote-caching-on-vercel-builds +env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY}} + CLERK_SECRET_KEY: ${{secrets.CLERK_SECRET_KEY}} + + +jobs: + build-lint: + env: + DATABASE_URL: file:./db.sqlite + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Setup pnpm + uses: pnpm/action-setup@v2.2.4 + + - name: Setup Node 18 + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT + + - name: Setup pnpm cache + uses: actions/cache@v3 + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install deps (with cache) + run: pnpm install + + - name: Next.js cache + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}apps/nextjs/.next/cache + key: ${{ runner.os }}-${{ runner.node }}-${{ hashFiles('**/pnpm-lock.yaml') }}-nextjs + + - name: Build, lint and type-check + run: pnpm turbo build lint type-check + + - name: Check workspaces + run: pnpm manypkg check diff --git a/.gitignore b/.gitignore index 337f440..55fb5b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,27 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies -/node_modules -/.pnp +node_modules +.pnp .pnp.js # testing -/coverage +coverage # database -/prisma/db.sqlite -/prisma/db.sqlite-journal +prisma/db.sqlite +prisma/db.sqlite-journal # next.js -/.next/ -/out/ -next-env.d.ts +.next/ +out/ + +# expo +.expo/ +dist/ # production -/build +build # misc .DS_Store @@ -31,7 +34,6 @@ yarn-error.log* .pnpm-debug.log* # local env files -# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables .env .env*.local @@ -41,8 +43,5 @@ yarn-error.log* # typescript *.tsbuildinfo -# editor -.vscode - # turbo .turbo diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 03d9549..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 0633606..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/speedread.iml b/.idea/speedread.iml deleted file mode 100644 index 24643cc..0000000 --- a/.idea/speedread.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..e165d81 --- /dev/null +++ b/.npmrc @@ -0,0 +1,12 @@ +# Expo doesn't play nice with pnpm by default. +# The symbolic links of pnpm break the rules of Expo monorepos. +# @link https://docs.expo.dev/guides/monorepos/#common-issues +node-linker=hoisted + +# In order to cache Prisma correctly +public-hoist-pattern[]=*prisma* + +# FIXME: @prisma/client is required by the @acme/auth, +# but we don't want it installed there since it's already +# installed in the @acme/db package +strict-peer-dependencies=false diff --git a/prettier.config.cjs b/.prettierrc.cjs similarity index 100% rename from prettier.config.cjs rename to .prettierrc.cjs diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..4487d71 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "bradlc.vscode-tailwindcss", + "Prisma.prisma" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..22fd348 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + }, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "eslint.rules.customizations": [{ "rule": "*", "severity": "warn" }], + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/README.md b/README.md index ef9392e..b827322 100644 --- a/README.md +++ b/README.md @@ -1,215 +1,205 @@ -# Project Iris Official Repo - -![Iris Logo](/public/IRIS-LOGO.png) - -Iris is a speed reading training application. It is deigned to be used as part of -an academic study on the effects of speed reading training on reading and academic -performance. -To facilitate this study, Iris is designed to collect data on the study -participants and their usage of the application. - -### Check out the current production version [here.](https://project-iris.app) ---- - - -## Core Project Dependencies - -- Iris uses the [t3 stack](https://create.t3.gg/) - - [TypeScript](https://www.typescriptlang.org/) - - [Tailwind CSS](https://tailwindcss.com/) - - [Trpc](https://trpc.io/) - - [Next.js](https://nextjs.org/) - - [React](https://reactjs.org/) - - [Vercel](https://vercel.com/) -- [Zustand](https://zustand-demo.pmnd.rs/) for state management, -- [Clerk](https://clerk.com/) for authentication, -- [Class Variance Authority](https://cva.style/docs) for reusable styling, -- [Planet Scale](https://planetscale.com/) for our database. -- Iris also uses various chron jobs written in [Go](https://go.dev/) to handle various database operations that cannot be hosted on the public repository. - - -## Project Structure - -### Basic Usage -```mermaid ---- -title: Daily use ---- -graph LR - index[Home Page] -- Clerk Authentication --> nav{Navigation Page} - nav -- If weekly test is done --> exercise(random exercise) - nav -- If weekly test is not done --> test(Weekly test) --> exercise - exercise -- If there are still remaining exercises --> exercise - exercise -- If all exercises are completed --> done(Done for the day) --> nav - nav -- If user is an administrator --> admin(Admin Page) - exercise --sends exercise data --> db[(Database)] -``` - -### System Architecture -```mermaid ---- -title: Data flow ---- - -sequenceDiagram - actor user - participant Client - participant Server - participant DB - participant Auth - participant Chron - participant Third Party API - - user ->> Client: Logs in - Client ->> Auth: sends request - Auth -->> Client: returns cookie - Auth -->> Server: sends cookie - Client ->> Server: Requests user info through tRPC - Server ->> DB: requests user info through prisma - DB -->> Server: returns user info as SQL string that is parsed by prisma - Server -->> Client: returns user info through tRPC - Client ->> Server: requests exercise data - Server ->> Third Party API: requests data - Third Party API -->> Server: returns data - Server ->> DB: requests data - DB -->> Server: returns data - Chron ->> DB: resets all user's "tested" values to "false" at the beginning of the week - Client -->> user: Serves daily exercises until all are complete. - Client ->> Server: Sends exercise data through tRPC - Server ->> DB: Sends exercise data through prisma - Client ->> Client: Maintains state with Zustand +[![CI](https://github.com/perkinsjr/t3-turbo-and-clerk/actions/workflows/ci.yml/badge.svg)](https://github.com/perkinsjr/t3-turbo-and-clerk/actions/workflows/ci.yml) -``` +# Create T3 Turbo with Clerk Authentication -### Understanding the file structure +## Clerk Dashboard Setup -Iris uses the pages router provided by Next.js. The [pages](src/pages) directory contains all -the routs for the application. The pages are divided into instructions, exercises, -and admin routes as well some miscellaneous routes listed directly in the pages directory. +For this template to work you need to enable Discord as an OAuth provider. You can find the social options under `User & Authentication / Social Providers` in the [Clerk Dashboard](https://dashboard.clerk.dev) -The [server](src/server) directory is a part of the Next.js framework and it contains -all the serverless functions used by the application. +> If you change any setting here outside of adding Discord, you may need to update your Expo code to handle any requirements you change. -The [components](src/components) directory contains various reusable components used -throughout the application. +It uses [Turborepo](https://turborepo.org/) and contains: -The [cva](src/cva) directory contains the -class variance authority styles used throughout the application. +## Code Layout -The [hooks](src/hooks) directory contains all custom hooks used in the application. +``` +.github + └─ workflows + └─ CI with pnpm cache setup +.vscode + └─ Recommended extensions and settings for VSCode users +apps + ├─ expo + └─ next.js + ├─ Next.js 13 + ├─ React 18 + └─ E2E Typesafe API Server & Client +packages + ├─ api + | └─ tRPC v10 router definition + └─ db + └─ typesafe db-calls using Prisma +``` -The [stores](src/stores) directory contains Zustand stores. +## Quick Start -The [utils](src/utils) directory contains utility functions, types and Zod schemas. +To get it running, follow the steps below: -## Project Authors -- Primary Developer: [Jason Boyett](https://GitHub.com/JasonBoyett) -- Project Manager: [Dr. Vojislav Petrovic PhD](https://schreiner.edu/su-directory/petrovic-vojislav/) -- UI Designer: Jason Boyett & [Zach Lyman](https://limeademedia.com) +### Setup dependencies -## Contributing +```diff +# Install dependencies +pnpm i -### Getting a foothold -The best entry point for the project is the [pages](src/pages) directory. -[Index.tsx](src/pages/index.tsx) Is the home page of the web sight but the main page of the app is [Nav](src/pages/nav.tsx). -From there you can view the individual exercises by viewing the [exercises](src/pages/exercises) directory. -Most exercises consist of some basic setup and a call to a primary component. Said components can be found in the [components directory](src/components). -### Running the project locally -To run the project locally you will neet to have [Node.js](https://nodejs.org/en/) installed. -Once you have Node.js installed, clone the repository and run `npm install` to install all the dependencies. -You will need some environment variables to run the project locally. -These will be: +# Configure environment variables. +# There is an `.env.example` in the root directory you can use for reference +cp .env.example .env -- DATABASE_URL - - This is the connection point to the database. - - You can get by creating a planet scale database and copying the connection string. -- NEXT_PUBLIC_CLERK_FRONTEND_API - - This is the public API key for the Clerk authentication service. - - You can get this by creating a Clerk account and creating a project. -- NEXT_PUBLIC_CLERK_SIGN_IN_URL - - This is the URL for the Clerk sign in page. - - You can get this by creating a Clerk account and creating a project. +# Push the Prisma schema to your database +pnpm db-push +``` -If you would like to use the production database -and clerk project you can contact the project author for access. -You will need to make significant contributions before you will be -considered for access to the production database and clerk project. +### Configure Expo app -Once you have the environment variables set up you will need to initialize -your development database by running `npx prisma db push` to view the database -database contents run `npx prisma studio` and navigate to `localhost:5555` in your browser. +Expo doesn't use the .env for the publishable key, so you will need to go to `apps/expo/app.config.ts` and add it there. -You can now run the project using either: +``` +const CLERK_PUBLISHABLE_KEY = "your-clerk-publishable-key"; -npm -```bash -npm run dev ``` -or turbo -```bash -turbo dev + +### Configure Expo `dev`-script + +> **Note:** If you want to use a physical phone with Expo Go, just run `pnpm dev` and scan the QR-code. + +#### Use iOS Simulator + +1. Make sure you have XCode and XCommand Line Tools installed [as shown on expo docs](https://docs.expo.dev/workflow/ios-simulator/). +2. Change the `dev` script at `apps/expo/package.json` to open the iOS simulator. + +```diff ++ "dev": "expo start --ios", ``` -Both of these commands will start the project and default to port 3000. +3. Run `pnpm dev` at the project root folder. -Before attempting to submit your pull request please run the following commands -```bash -prettier --write . -turbo build lint +#### For Android + +1. Install Android Studio tools [as shown on expo docs](https://docs.expo.dev/workflow/android-studio-emulator/). +2. Change the `dev` script at `apps/expo/package.json` to open the Android emulator. + +```diff ++ "dev": "expo start --android", ``` -This will ensure that your code is formatted correctly and will build in production. -### Code Style -If you are taking the time to contribute to the development of Iris we greatly appreciate your contribution. -In order to keep the code consistent there are a few things we ask. +3. Run `pnpm dev` at the project root folder. + +## Deployment + +### Next.js + +> Note if you are building locallly you will need to insert your env correctly, for example using `pnpm with-env next build` + +#### Prerequisites + +_We do not recommend deploying a SQLite database on serverless environments since the data wouldn't be persisted. I provisioned a quick Postgresql database on [Railway](https://railway.app), but you can of course use any other database provider. Make sure the prisma schema is updated to use the correct database._ + +#### Deploy to Vercel + +Let's deploy the Next.js application to [Vercel](https://vercel.com/). If you have ever deployed a Turborepo app there, the steps are quite straightforward. You can also read the [official Turborepo guide](https://vercel.com/docs/concepts/monorepos/turborepo) on deploying to Vercel. + +1. Create a new project on Vercel, select the `apps/nextjs` folder as the root directory and apply the following build settings: + +Vercel deployment settings + +> The install command filters out the expo package and saves a few second (and cache size) of dependency installation. The build command makes us build the application using Turbo. + +2. Add your `DATABASE_URL`,`NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY` environment variable. + +3. Done! Your app should successfully deploy. Assign your domain and use that instead of `localhost` for the `url` in the Expo app so that your Expo app can communicate with your backend when you are not in development. + +### Expo + +Deploying your Expo application works slightly differently compared to Next.js on the web. Instead of "deploying" your app online, you need to submit production builds of your app to the app stores, like [Apple App Store](https://www.apple.com/app-store/) and [Google Play](https://play.google.com/store/apps). You can read the full [Distributing your app](https://docs.expo.dev/distribution/introduction/), including best practices, in the Expo docs. + +1. Let's start by setting up [EAS Build](https://docs.expo.dev/build/introduction/), which is short for Expo Application Services. The build service helps you create builds of your app, without requiring a full native development setup. The commands below are a summary of [Creating your first build](https://docs.expo.dev/build/setup/). + + ```bash + // Install the EAS CLI + $ pnpm add -g eas-cli + + // Log in with your Expo account + $ eas login + + // Configure your Expo app + $ cd apps/expo + $ eas build:configure + ``` + +2. After the initial setup, you can create your first build. You can build for Android and iOS platforms and use different [**eas.json** build profiles](https://docs.expo.dev/build-reference/eas-json/) to create production builds or development, or test builds. Let's make a production build for iOS. + + ``` + $ eas build --platform ios --profile production + ``` + + > If you don't specify the `--profile` flag, EAS uses the `production` profile by default. + +3. Now that you have your first production build, you can submit this to the stores. [EAS Submit](https://docs.expo.dev/submit/introduction/) can help you send the build to the stores. + + ``` + $ eas submit --platform ios --latest + ``` + + > You can also combine build and submit in a single command, using `eas build ... --auto-submit`. + +4. Before you can get your app in the hands of your users, you'll have to provide additional information to the app stores. This includes screenshots, app information, privacy policies, etc. _While still in preview_, [EAS Metadata](https://docs.expo.dev/eas/metadata/) can help you with most of this information. + +5. If you're using OAuth social providers with Clerk, for instance Google, Apple, Facebook, etc..., you must whitelist your own OAuth redirect URL for the Expo application in the Clerk Dashboard. + + In `apps/expo/app.config.ts`, add a `scheme` that will be used to identify your standalone app. + + ```ts + import { ExpoConfig, ConfigContext } from '@expo/config' + + const CLERK_PUBLISHABLE_KEY = 'your-clerk-publishable-key' + + const defineConfig = (_ctx: ConfigContext): ExpoConfig => ({ + name: 'expo', + slug: 'expo', + scheme: 'your-app-scheme', + // ... + }) + ``` + + Then, in the [Clerk Dashboard](https://dashboard.clerk.dev/), go to **User & Authentication > Social Connections > Settings** and add your app's scheme and redirect URL to the **Redirect URLs** field: + + ```txt + your-app-scheme://oauth-native-callback + ``` + + Here, `your-app-scheme` corresponds to the `scheme` defined in `app.config.ts`, and `oauth-native-callback` corresponds to the redirect URL defined when authenticating with social providers. See [SignInWithOAuth.tsx](/apps/expo/src/components/SignInWithOAuth.tsx) for reference. -- If you can, keep lines under 100 characters. - - consider setting a guide line in your editor - - some times long lines are unavoidable. We won't reject a pr over this issue. -- We prefer most functions to be declared using the `function myFunction(){}` syntax as opposed to arrow functions. - - the exception is when you are passing an inline function as a parameter. In this case please use arrow functions. -- We prefer functional components and react hooks as opposed to class components. -- Limit comments. - - We prefer where possible code to be self documenting. - - JS doc comments do not count. - - If you are exporting a function or a class feel free to add any documentation you deem necessary. -- Limit single line if statements. - - accept in certain cases please add brackets after if statements even if they are only a single line. - - the exception is if you are checking the condition and immediately breaking the current scope. For example: - - ```tsx - if(!condition) return - ``` -- Where possible apply single responsibility principle. + > You can find more information about this in the [Expo documentation](https://docs.expo.dev/versions/latest/sdk/auth-session/#redirecting-to-your-app). -### Submitting a Pull Request -If you are not familiar with the process of submitting a pull request we suggest you check out the [docs](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) provided by GitHub. + You should now be able to sign in with your social providers in the TestFlight application build. -We ask that your pull request have the following information: +6. Once everything is approved, your users can finally enjoy your app. Let's say you spotted a small typo; you'll have to create a new build, submit it to the stores, and wait for approval before you can resolve this issue. In these cases, you can use EAS Update to quickly send a small bugfix to your users without going through this long process. Let's start by setting up EAS Update. -#### Motivation -> Why is this change necessary? What problem does it solve? + The steps below summarize the [Getting started with EAS Update](https://docs.expo.dev/eas-update/getting-started/#configure-your-project) guide. -> If this is related to an issue which one? + ```bash + // Add the `expo-updates` library to your Expo app + $ cd apps/expo + $ pnpm expo install expo-updates -Closes #ISSUE_NUMBER + // Configure EAS Update + $ eas update:configure + ``` -#### Implementation -> How does this PR solve the problem? What technical approach is taken? +7. Before we can send out updates to your app, you have to create a new build and submit it to the app stores. For every change that includes native APIs, you have to rebuild the app and submit the update to the app stores. See steps 2 and 3. -#### Testing -> How did you verify that this works? Were automated tests written? -> What manual tests were performed? +8. Now that everything is ready for updates, let's create a new update for `production` builds. With the `--auto` flag, EAS Update uses your current git branch name and commit message for this update. See [How EAS Update works](https://docs.expo.dev/eas-update/how-eas-update-works/#publishing-an-update) for more information. -#### Related PRs -> Optional: if any other PRs provide context to this change + ```bash + $ cd apps/expo + $ eas update --auto + ``` -If your pull request does not have this information or some equivalent attached it will be rejected without further consideration. + > Your OTA (Over The Air) updates must always follow the app store's rules. You can't change your app's primary functionality without getting app store approval. But this is a fast way to update your app for minor changes and bug fixes. -### Issues -If you don't want to contribute directly or don't feel ready to file a pull request you are welcome to contribute by filing issues. +9. Done! Now that you have created your production build, submitted it to the stores, and installed EAS Update, you are ready for anything! -We want Iris to be as great of an experience as possible and the only way for us to accomplish that is to get feedback. Please if you see a problem, let us know! +## References -If you don't know how to file an issue here is a [guide](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue) from GitHub. +The stack originates from [create-t3-turbo](https://github.com/t3-oss/create-t3-turbo). diff --git a/app.json b/app.json new file mode 100644 index 0000000..42e5bfa --- /dev/null +++ b/app.json @@ -0,0 +1,17 @@ +{ + "expo": { + "extra": { + "eas": { + "projectId": "0fa37b39-ff25-4053-ba33-a30409f8546e" + } + }, + "android": { + "package": "com.jasonboyett.projectIris" + }, + "ios": { + "bundleIdentifier": "com.jasonboyett.projectIris" + }, + "owner": "jasonboyettsoftwareconsulting", + "slug": "iris" + } +} diff --git a/apps/expo/.expo-shared/assets.json b/apps/expo/.expo-shared/assets.json new file mode 100644 index 0000000..1e6decf --- /dev/null +++ b/apps/expo/.expo-shared/assets.json @@ -0,0 +1,4 @@ +{ + "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true, + "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true +} diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts new file mode 100644 index 0000000..f1c0060 --- /dev/null +++ b/apps/expo/app.config.ts @@ -0,0 +1,40 @@ +import type { ExpoConfig, ConfigContext } from '@expo/config' + +const CLERK_PUBLISHABLE_KEY = 'pk_test_bGVuaWVudC1tdXN0YW5nLTIxLmNsZXJrLmFjY291bnRzLmRldiQ' + +const defineConfig = (_ctx: ConfigContext): ExpoConfig => ({ + name: 'iris', + slug: 'expo', + version: '1.0.0', + orientation: 'portrait', + icon: './assets/icon.png', + userInterfaceStyle: 'automatic', + splash: { + image: './assets/IRIS-LOGO.png', + resizeMode: 'contain', + backgroundColor: '#2e026d', + }, + updates: { + fallbackToCacheTimeout: 0, + }, + assetBundlePatterns: ['**/*'], + ios: { + supportsTablet: true, + bundleIdentifier: 'your.bundle.identifier', + }, + android: { + adaptiveIcon: { + foregroundImage: './assets/icon.png', + backgroundColor: '#2e026d', + }, + }, + extra: { + eas: { + projectId: '0fa37b39-ff25-4053-ba33-a30409f8546e', + }, + CLERK_PUBLISHABLE_KEY, + }, + plugins: ['./expo-plugins/with-modify-gradle.js'], +}) + +export default defineConfig diff --git a/apps/expo/assets/IRIS-LOGO.png b/apps/expo/assets/IRIS-LOGO.png new file mode 100644 index 0000000..2ebf1c9 Binary files /dev/null and b/apps/expo/assets/IRIS-LOGO.png differ diff --git a/public/flying-butterfly.gif b/apps/expo/assets/flying-butterfly.gif similarity index 100% rename from public/flying-butterfly.gif rename to apps/expo/assets/flying-butterfly.gif diff --git a/apps/expo/babel.config.js b/apps/expo/babel.config.js new file mode 100644 index 0000000..b96b882 --- /dev/null +++ b/apps/expo/babel.config.js @@ -0,0 +1,12 @@ +module.exports = function(api) { + api.cache(true); + return { + plugins: [ + "nativewind/babel", + "react-native-reanimated/plugin" + ], + presets: [ + "module:metro-react-native-babel-preset" + ], + }; +}; diff --git a/apps/expo/expo-plugins/with-modify-gradle.js b/apps/expo/expo-plugins/with-modify-gradle.js new file mode 100644 index 0000000..2fc40f0 --- /dev/null +++ b/apps/expo/expo-plugins/with-modify-gradle.js @@ -0,0 +1,41 @@ +//@ts-check + +// This plugin is required for fixing `.apk` build issue +// It appends Expo and RN versions into the `build.gradle` file +// References: +// https://github.com/t3-oss/create-t3-turbo/issues/120 +// https://github.com/expo/expo/issues/18129 + +const { withProjectBuildGradle } = require("@expo/config-plugins"); + +module.exports = (config) => { + return withProjectBuildGradle(config, (config) => { + if (!config.modResults.contents.includes("ext.getPackageJsonVersion =")) { + config.modResults.contents = config.modResults.contents.replace( + "buildscript {", + `buildscript { + ext.getPackageJsonVersion = { packageName -> + new File(['node', '--print', "JSON.parse(require('fs').readFileSync(require.resolve('\${packageName}/package.json'), 'utf-8')).version"].execute(null, rootDir).text.trim()) + }`, + ); + } + + if (!config.modResults.contents.includes("reactNativeVersion =")) { + config.modResults.contents = config.modResults.contents.replace( + "ext {", + `ext { + reactNativeVersion = "\${ext.getPackageJsonVersion('react-native')}"`, + ); + } + + if (!config.modResults.contents.includes("expoPackageVersion =")) { + config.modResults.contents = config.modResults.contents.replace( + "ext {", + `ext { + expoPackageVersion = "\${ext.getPackageJsonVersion('expo')}"`, + ); + } + + return config; + }); +}; diff --git a/apps/expo/index.ts b/apps/expo/index.ts new file mode 100644 index 0000000..0ae9b1e --- /dev/null +++ b/apps/expo/index.ts @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo' + +import { App } from './src/_app' + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App) diff --git a/apps/expo/metro.config.js b/apps/expo/metro.config.js new file mode 100644 index 0000000..2bad241 --- /dev/null +++ b/apps/expo/metro.config.js @@ -0,0 +1,26 @@ +// Learn more: https://docs.expo.dev/guides/monorepos/ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { getDefaultConfig } = require('expo/metro-config'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require('path'); + +const projectRoot = __dirname; +const workspaceRoot = path.resolve(projectRoot, '../..'); + +// Create the default Metro config +const config = getDefaultConfig(projectRoot); + +// Add the additional `cjs` extension to the resolver +config.resolver.sourceExts.push('cjs'); + +// 1. Watch all files within the monorepo +config.watchFolders = [workspaceRoot]; +// 2. Let Metro know where to resolve packages and in what order +config.resolver.nodeModulesPaths = [ + path.resolve(projectRoot, 'node_modules'), + path.resolve(workspaceRoot, 'node_modules'), +]; +// 3. Force Metro to resolve (sub)dependencies only from the `nodeModulesPaths` +config.resolver.disableHierarchicalLookup = false; + +module.exports = config; diff --git a/apps/expo/package.json b/apps/expo/package.json new file mode 100644 index 0000000..058f484 --- /dev/null +++ b/apps/expo/package.json @@ -0,0 +1,64 @@ +{ + "name": "@acme/expo", + "version": "0.1.0", + "main": "index.ts", + "scripts": { + "start": "expo start", + "dev": "expo start", + "clean": "rm -rf .expo .turbo node_modules", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web", + "lint": "eslint . --ext ts,tsx" + }, + "dependencies": { + "@acme/api": "*", + "@acme/helpers": "*", + "@acme/tailwind-config": "*", + "@acme/types": "*", + "@acme/validators": "*", + "@clerk/clerk-expo": "^0.17.7", + "@expo/webpack-config": "^19.0.1", + "@react-native-async-storage/async-storage": "1.18.2", + "@react-navigation/drawer": "^6.6.6", + "@shopify/flash-list": "^1.4.3", + "@tanstack/react-query": "^4.16.1", + "@trpc/client": "^10.1.0", + "@trpc/react-query": "^10.1.0", + "@trpc/server": "^10.1.0", + "expo": "^49.0.0", + "expo-auth-session": "^5.0.2", + "expo-background-fetch": "~11.3.0", + "expo-constants": "~14.4.2", + "expo-linking": "~5.0.2", + "expo-random": "^13.2.0", + "expo-router": "^2.0.14", + "expo-secure-store": "^12.3.1", + "expo-status-bar": "^1.6.0", + "expo-task-manager": "~11.3.0", + "expo-web-browser": "^12.3.2", + "nativewind": "^2.0.11", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-native": "0.72.6", + "react-native-async-storage": "^0.0.1", + "react-native-gesture-handler": "~2.12.0", + "react-native-reanimated": "~3.3.0", + "react-native-safe-area-context": "4.6.3", + "react-native-screens": "~3.22.1", + "react-native-web": "~0.19.10", + "uuidv5": "^1.0.0" + }, + "devDependencies": { + "@babel/core": "^7.19.3", + "@babel/preset-env": "^7.19.3", + "@babel/runtime": "^7.19.0", + "@types/react": "^18.0.38", + "@types/react-native": "~0.70.6", + "eslint": "^8.28.0", + "postcss": "^8.4.19", + "tailwindcss": "^3.2.4", + "typescript": "^4.9.3" + }, + "private": true +} diff --git a/apps/expo/src/_app.tsx b/apps/expo/src/_app.tsx new file mode 100644 index 0000000..3540ce1 --- /dev/null +++ b/apps/expo/src/_app.tsx @@ -0,0 +1,104 @@ +import type { NavigationProp } from '@react-navigation/native' +import { TrainingScreen } from './components/Train' +import { StatusBar } from 'expo-status-bar' +import React from 'react' +import { SafeAreaProvider } from 'react-native-safe-area-context' +import { TRPCProvider } from './utils/trpc' + +import { HomeScreen } from './screens/home' +import SignOutScreen from './screens/signout' +import { SignInSignUpScreen } from './screens/auth' +import { ClerkProvider, SignedIn, SignedOut } from '@clerk/clerk-expo' +import { tokenCache } from './utils/cache' +import Constants from 'expo-constants' +import { NavigationContainer } from '@react-navigation/native' +import { createNativeStackNavigator } from '@react-navigation/native-stack' +import { createDrawerNavigator } from '@react-navigation/drawer' +import SettingsScreen from './screens/Settings' + +export type ScreenNames = [ + 'Home', + 'Iris', + 'SpeedTest', + 'Train', + 'SignOut', + 'Settings' +] +export type StackParamList = Record +export type StackNavigation = NavigationProp + +const Stack = createNativeStackNavigator() +const Drawer = createDrawerNavigator() + +const HomeStack = () => { + return ( + + + + + ) +} + +const DrawerNavigator = () => { + return ( + + + + + + ) +} + +export const App = () => { + return ( + + + + + + + + + + + + + + + ) +} diff --git a/apps/expo/src/components/BoxFlasher.tsx b/apps/expo/src/components/BoxFlasher.tsx new file mode 100644 index 0000000..bdb210c --- /dev/null +++ b/apps/expo/src/components/BoxFlasher.tsx @@ -0,0 +1,283 @@ +import { + View, + Text, + StyleSheet, +} from 'react-native' +import { useInterval } from '../hooks/useInterval' +import { trpc } from '../utils/trpc' +import type { User } from '@acme/types' +import useBoxStore from '../stores/useBoxStore' +import { useEffect, useMemo, useRef, useState } from 'react' +import React from 'react' +import useUserStore from '../stores/userStore' +import { formatDate } from '@acme/helpers' +import Instructions from './instructions/Boxes' + +const Loading = () => { + const [frame, setFrame] = useState(0) + + const getText = () => { + switch (frame % 4) { + case 0: + return 'Loading' + case 1: + return 'Loading.' + case 2: + return 'Loading..' + case 3: + return 'Loading...' + } + } + + useInterval(() => { + setFrame(frame + 1) + }, 250) + + return ( + + + {getText()} + + + ) +} + +type BoxProps = { + words: string[] | undefined + id: number +} +const Box = (props: BoxProps) => { + const { words, id } = props + const store = useBoxStore() + const [visible, setVisible] = useState(store.current === id) + + const reRender = () => setVisible(id === store.current) + + const style = StyleSheet.create({ + text: { + fontSize: 40, + color: visible ? 'black' : 'white', + }, + baseContainer: { + padding: 2, + height: 200, + width: 400, + maxWidth: 400, + maxHeight: 200, + borderRadius: 10, + backgroundColor: 'white', + felxDirectoin: 'column', + }, + row: { + width: '100%', + flex: 1, + flexDirection: 'row', + }, + innerContainer: { + position: 'absolute', + top: 0, + right: 0, + }, + innerContainer2: { + position: 'absolute', + top: 0, + left: 0, + }, + innerContainer3: { + position: 'absolute', + bottom: 0, + right: 0, + }, + innerContainer4: { + position: 'absolute', + bottom: 0, + left: 0, + }, + }) + + useEffect(() => reRender(), [store.current]) + + if (!words) return <> + return ( + + + + {words[0]} + + + {words[1]} + + + + + {words[2]} + + + {words[3]} + + + + ) +} + +type BoxFlasherProps = { + user: User + type: 2 | 3 + signal: VoidFunction +} + +type BoxContainerProps = BoxFlasherProps + & { + words: string[] | undefined + } +const BoxContainer = (props: BoxContainerProps) => { + const { type, words, user, signal } = props + const store = useBoxStore() + const userStore = useUserStore() + + const { mutate } = trpc.user.set.useMutation() + const { mutate: collectData } = trpc.collect.boxFlasherSession.useMutation() + + const count = useRef(0) + const [group, setGroup] = useState(0) + const [loading, setLoading] = useState(true) + const boxData = useMemo(() => { + if (!words) return null + const displayedWords = Array() + for (let i = 0; i < type; i++) { + const start = (count.current) + i + displayedWords.push(words.slice(start, start + 4)) + } + return displayedWords + }, [group]) + + const boxes = useMemo(() => { + if (!boxData) return null + const grid = Array() + for (let i = 1; i <= type; i++) { + grid.push( + + + + ) + } + return grid + }, [store]) + + const teardown = () => { + if (!userStore.user) return + if (userStore.user.isStudySubject) { + collectData({ + type: (() => { + switch (type) { + case 2: + return 'two' + case 3: + return 'three' + default: + return 'two' + } + })(), + userId: userStore.user.id, + speed: userStore.user.currentWpm, + }) + } + switch (type) { + case 2: + mutate({ lastCubeByTwo: formatDate(new Date()) }) + if (!userStore.user) return + userStore.setUser({ + ...userStore.user, + lastCubeByTwo: formatDate(new Date()), + }) + signal() + break + case 3: + mutate({ lastCubeByThree: formatDate(new Date()) }) + if (!userStore.user) return + userStore.setUser({ + ...userStore.user, + lastCubeByThree: formatDate(new Date()), + }) + signal() + break + } + signal() + } + + useInterval(() => { + if ((user.currentWpm / 4) <= count.current) teardown() + if (!words) return + else setLoading(false) + if (store.current < type) { + store.increment() + } + else { + store.reset() + setGroup(group + 1) + count.current += 4 + } + }, 60_000 / (user.currentWpm / 4)) + + useEffect(() => { + if (!words) return + userStore.setUser(user) + }, [words]) + + return ( + loading + ? () + : ( + {boxes} + ) + ) + +} + +const Exercise = (props: BoxFlasherProps) => { + const { data: words } = trpc.excercise.getRandomWords.useQuery({ + language: props.user.language, + number: Math.floor(props.user.currentWpm / 4) * 4, + max: 7 + }) + return ( + + + + ) +} + + +export const BoxFlasher = (props: BoxFlasherProps) => { + const [instructions, setInstructions] = useState(true) + + return ( + instructions + ? setInstructions(false)} /> + : + ) +} diff --git a/apps/expo/src/components/Grid.tsx b/apps/expo/src/components/Grid.tsx new file mode 100644 index 0000000..f8513ed --- /dev/null +++ b/apps/expo/src/components/Grid.tsx @@ -0,0 +1,56 @@ +import { useEffect, useState } from 'react' +import { + StyleSheet, + View +} from 'react-native' + +type InnerProps = { + row: number + items: JSX.Element[] +} +const Row = (props: InnerProps) => { + const { + row, + items + } = props + + const style = StyleSheet.create({ + row: { + flexDirection: 'row', + } + }) + + return ( + + + ) + +} + +type GridProps = { + columns: number + rows: number + items: JSX.Element[] +} +export const Grid = (props: GridProps) => { + const { + columns, + rows, + items + } = props + + const style = StyleSheet.create({ + container: { + flex: columns, + marginHorizontal: "auto" + } + }) + + return ( + + {items} + + ) + +} + diff --git a/apps/expo/src/components/SignInWithOAuth.tsx b/apps/expo/src/components/SignInWithOAuth.tsx new file mode 100644 index 0000000..40ef155 --- /dev/null +++ b/apps/expo/src/components/SignInWithOAuth.tsx @@ -0,0 +1,264 @@ +import { useOAuth } from '@clerk/clerk-expo' +import React from 'react' +import { + View, + Text, + TextInput, + StyleSheet, + type StyleProp, + type ViewStyle, + type AnimatableNumericValue, + TouchableOpacity, + TouchableWithoutFeedback, + Keyboard +} from 'react-native' +import { useWarmUpBrowser } from '../hooks/useWarmUpBrowser' +import { useSignIn } from '@clerk/clerk-expo' +import { Formik } from 'formik' +import { AntDesign, FontAwesome5 } from '@expo/vector-icons' + +const SignInWithOAuth = () => { + useWarmUpBrowser() + + const { startOAuthFlow: discordFlow } = useOAuth({ strategy: 'oauth_discord' }) + const { startOAuthFlow: githubFlow } = useOAuth({ strategy: 'oauth_github' }) + const { signIn, setActive, isLoaded } = useSignIn(); + + const styles = StyleSheet.create({ + header: { + fontSize: 50, + color: 'black', + }, + baseContainer: { + flex: 1, + justifyContent: 'center', + itemsAlign: 'center', + height: '100%', + }, + centerContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'white', + maxHeight: '75%' as unknown as AnimatableNumericValue, + borderRadius: '25%' as unknown as AnimatableNumericValue, + }, + feildText: { + marginTop: 10, + color: 'black', + fontSize: 30, + }, + oAuthContainer: { + flexDirection: 'row', + justifyContent: 'center', + itemsAlign: 'center', + alignItems: 'center', + marginTop: 20, + marginHorizontal: 10, + }, + oAuthButtonContainer: { + flex: 1, + flexDirection: 'row', + height: 100, + width: '50%', + justifyContent: 'center', + itemsAlign: 'center', + }, + oAuthButton: { + height: 100, + width: '50%', + }, + entryFeild: { + minHeight: '10%' as unknown as AnimatableNumericValue, + minWidth: '80%' as unknown as AnimatableNumericValue, + borderRadius: '25%' as unknown as AnimatableNumericValue, + fontSize: 20, + padding: 10, + borderColor: 'black', + borderWidth: 1, + }, + signInButton: { + marginTop: 10, + minHeight: '10%' as unknown as AnimatableNumericValue, + minWidth: '70%' as unknown as AnimatableNumericValue, + borderRadius: '25%' as unknown as AnimatableNumericValue, + borderColor: 'black', + borderWidth: 1, + backgroundColor: '#4c1d95', + justifyContent: 'center', + alignItems: 'center', + }, + sighInText: { + color: 'white', + fontSize: 50, + }, + line: { + marginTop: 10, + height: 1, + width: '80%', + backgroundColor: 'black', + marginHorizontal: 10, + }, + lineText: { + color: 'black', + fontSize: 20, + }, + lineContainer: { + flexDirection: 'row', + alignItems: 'center', + marginTop: 10, + marginHorizontal: 10, + }, + }) + + const DismissKeyboard = ({ children }: any) => ( + Keyboard.dismiss()} + > + {children} + + ) + + const handleSignInWithDiscordPress = React.useCallback(async () => { + try { + const { createdSessionId, signIn, signUp, setActive } = + await discordFlow() + if (createdSessionId) { + setActive?.({ session: createdSessionId }) + } else { + // Modify this code to use signIn or signUp to set this missing requirements you set in your dashboard. + throw new Error( + 'There are unmet requirements, modifiy this else to handle them', + ) + } + } catch (err) { + console.log(JSON.stringify(err, null, 2)) + console.log('error signing in', err) + } + }, []) + + const handleSignInWithGitHubPress = React.useCallback(async () => { + try { + const { createdSessionId, signIn, signUp, setActive } = await githubFlow() + if (createdSessionId) { + setActive?.({ session: createdSessionId }) + } else { + throw new Error('There are unmet requirements, modifiy this else to handle them') + } + } catch (err) { + console.log(JSON.stringify(err, null, 2)) + console.log('error signing in', err) + } + }, []) + + const onSignInPress = async (email: string, password: string) => { + if (!isLoaded) { + return; + } + + try { + const completeSignIn = await signIn.create({ + identifier: email, + password, + }); + // This is an important step, + // This indicates the user is signed in + await setActive({ session: completeSignIn.createdSessionId }); + } catch (err: any) { + alert('Unable to sign In \n' + (err.message ?? '')) + } + }; + + return ( + + }> + { + onSignInPress(values.email, values.password) + }} + > + {(formikProps) => ( + }> + + + Sign in + + + + + Email address + + + + + + Password + + + + } + onPress={() => onSignInPress( + formikProps.values.email, + formikProps.values.password + )} + > + + Continue + + + }> + } /> + + Or + + } /> + + }> + } + > + } + > + + + + } + > + } + > + + + + + + + )} + + + + ) +} + +export default SignInWithOAuth diff --git a/apps/expo/src/components/SignUpWithOAuth.tsx b/apps/expo/src/components/SignUpWithOAuth.tsx new file mode 100644 index 0000000..7860419 --- /dev/null +++ b/apps/expo/src/components/SignUpWithOAuth.tsx @@ -0,0 +1,280 @@ +import { useOAuth, useSignUp } from '@clerk/clerk-expo' +import React from 'react' +import { + View, + Text, + TextInput, + StyleSheet, + type StyleProp, + type ViewStyle, + type AnimatableNumericValue, + TouchableOpacity, + TouchableWithoutFeedback, + Keyboard +} from 'react-native' +import { useWarmUpBrowser } from '../hooks/useWarmUpBrowser' +import { Formik } from 'formik' +import { AntDesign, FontAwesome5 } from '@expo/vector-icons' + +const SignUpWithOAuth = () => { + useWarmUpBrowser() + + const { startOAuthFlow: discordFlow } = useOAuth({ strategy: 'oauth_discord' }) + const { startOAuthFlow: githubFlow } = useOAuth({ strategy: 'oauth_github' }) + const { signUp, setActive, isLoaded } = useSignUp(); + + const styles = StyleSheet.create({ + header: { + fontSize: 50, + color: 'black', + }, + baseContainer: { + flex: 1, + justifyContent: 'center', + itemsAlign: 'center', + height: '100%', + }, + centerContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'white', + maxHeight: '85%' as unknown as AnimatableNumericValue, + borderRadius: '25%' as unknown as AnimatableNumericValue, + }, + feildText: { + marginTop: 10, + color: 'black', + fontSize: 30, + }, + oAuthContainer: { + flexDirection: 'row', + justifyContent: 'center', + itemsAlign: 'center', + alignItems: 'center', + marginTop: 20, + marginHorizontal: 10, + }, + oAuthButtonContainer: { + flex: 1, + flexDirection: 'row', + height: 100, + width: '50%', + justifyContent: 'center', + itemsAlign: 'center', + }, + oAuthButton: { + height: 100, + width: '50%', + }, + entryFeild: { + minHeight: '10%' as unknown as AnimatableNumericValue, + minWidth: '80%' as unknown as AnimatableNumericValue, + borderRadius: '25%' as unknown as AnimatableNumericValue, + fontSize: 20, + padding: 10, + borderColor: 'black', + borderWidth: 1, + }, + signInButton: { + marginTop: 10, + minHeight: '10%' as unknown as AnimatableNumericValue, + minWidth: '70%' as unknown as AnimatableNumericValue, + borderRadius: '25%' as unknown as AnimatableNumericValue, + borderColor: 'black', + borderWidth: 1, + backgroundColor: '#4c1d95', + justifyContent: 'center', + alignItems: 'center', + }, + sighInText: { + color: 'white', + fontSize: 50, + }, + line: { + marginTop: 10, + height: 1, + width: '80%', + backgroundColor: 'black', + marginHorizontal: 10, + }, + lineText: { + color: 'black', + fontSize: 20, + }, + lineContainer: { + flexDirection: 'row', + alignItems: 'center', + marginTop: 10, + marginHorizontal: 10, + }, + }) + + const DismissKeyboard = ({ children }: any) => ( + Keyboard.dismiss()} + > + {children} + + ) + + const handleSignInWithDiscordPress = React.useCallback(async () => { + try { + const { createdSessionId, signIn, signUp, setActive } = + await discordFlow() + if (createdSessionId) { + setActive?.({ session: createdSessionId }) + } else { + // Modify this code to use signIn or signUp to set this missing requirements you set in your dashboard. + throw new Error( + 'There are unmet requirements, modifiy this else to handle them', + ) + } + } catch (err) { + console.log(JSON.stringify(err, null, 2)) + console.log('error signing in', err) + } + }, []) + + const handleSignInWithGitHubPress = React.useCallback(async () => { + try { + const { createdSessionId, signIn, signUp, setActive } = await githubFlow() + if (createdSessionId) { + setActive?.({ session: createdSessionId }) + } else { + throw new Error('There are unmet requirements, modifiy this else to handle them') + } + } catch (err) { + console.log(JSON.stringify(err, null, 2)) + console.log('error signing in', err) + } + }, []) + + const onSignInPress = async (email: string, password: string) => { + if (!isLoaded) { + return; + } + + try { + const completeSignUp = await signUp.create({ + emailAddress: email, + password, + }); + await setActive({ session: completeSignUp.createdSessionId }).then((result) => { + console.log(result) + }) + .catch((err) => { + console.log(err) + }) + } catch (err: any) { + alert('Unable to sign up \n' + (err.message ?? '')) + } + }; + + return ( + + }> + { + if (values.password !== values.confirmPassword) { + alert('Passwords do not match') + return + } + onSignInPress(values.email, values.password) + }} + > + {(formikProps) => ( + }> + + + Sign up + + + + + Email address + + + + + + Password + + + + + + Confirm Password + + + + } + onPress={() => onSignInPress( + formikProps.values.email, + formikProps.values.password + )} + > + + Continue + + + }> + } /> + + Or + + } /> + + }> + } + > + } + > + + + + } + > + } + > + + + + + + + )} + + + + ) +} + +export default SignUpWithOAuth diff --git a/apps/expo/src/components/Train.tsx b/apps/expo/src/components/Train.tsx new file mode 100644 index 0000000..b1ce75a --- /dev/null +++ b/apps/expo/src/components/Train.tsx @@ -0,0 +1,242 @@ +import { Button, SafeAreaView, Text, TouchableOpacity, View } from 'react-native'; +import { trpc } from '../utils/trpc'; +import type { + Exercise, + User, +} from '@acme/types' +import { useState } from 'react'; +import { SchulteTable } from './exercises/SchulteTable'; +import { EvenNumbers } from './exercises/EvenNumber'; +import { WordPairs } from './exercises/WordPairs'; +import { LetterMatcher } from './exercises/Letters'; +import { WordFlasher } from './exercises/WordFlasher'; +import { GreenDot } from './exercises/GreenDot'; +import { BoxFlasher } from './BoxFlasher'; +import { NumberMatcher } from './exercises/NumberMatcher'; +import { useNavigation } from '@react-navigation/native' +import { TestScreen } from './speedtest' +import { type StackNavigation } from '../_app'; +import useUserStore from '../stores/userStore'; +import { getAvailableExercises, getNextExercise } from '@acme/helpers'; + +const TempCompnenet = ( + { text, signal, user }: { text: string, signal: VoidFunction, user: User | undefined } +) => { + return ( + + + { + !!user + ? `Welcome ${user.firstName ?? 'User'}` + : 'Loading...' + } + + + {text} + +