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.
- Iris uses the t3 stack
- Zustand for state management,
- Clerk for authentication,
- Class Variance Authority for reusable styling,
- Planet Scale for our database.
- Iris also uses various chron jobs written in Go to handle various database operations that cannot be hosted on the public repository.
Iris uses the pages router provided by Next.js. The 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.
The server directory is a part of the Next.js framework and it contains all the serverless functions used by the application.
The components directory contains various reusable components used throughout the application.
The cva directory contains the class variance authority styles used throughout the application.
The hooks directory contains all custom hooks used in the application.
The stores directory contains Zustand stores.
The utils directory contains utility functions, types and Zod schemas.
- Primary Developer: Jason Boyett
- Project Manager: Dr. Vojislav Petrovic PhD
- UI Designer: Jason Boyett & Zach Lyman
The best entry point for the project is the pages directory. Index.tsx Is the home page of the web sight but the main page of the app is Nav. From there you can view the individual exercises by viewing the 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.
To run the project locally you will neet to have Node.js 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:
- 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.
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 segnificant contrebutions before you will be considered for access to the production database and clerk project.
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.
You can now run the project using either:
npm
npm run dev
or turbo
turbo dev
Both of these commands will start the project and default to port 3000.
Before attempting to submit your pull request please run the following commands
prettier --write .
turbo build lint
This will ensure that your code is formatted correctly and will build in production.