Name | Role | GitHub | |
---|---|---|---|
Simrat | Frontend Developer, Product Owner | GitHub | |
Michelle | Frontend Developer, QA Engineer | GitHub | |
Aditya | Lead Developer | GitHub | |
Shawn | Project Manager, AI Integration | GitHub |
Our team is developing IntelliPaws which helps potential or current dog users with their dog, the app can reccomend a dog breed based on your lifestyle, provide training with exercises and it can help you learn more about your dog.
Below are the technologies used in this project with their respective documentations, licenses and usage areas.
Technology | Documentation | License | Usage |
---|---|---|---|
Next.js | Next.js Docs | MIT License | Frontend, Server-side rendering |
React.js | React.js Docs | MIT License | User Interface (Frontend) |
Prisma | Prisma Docs | Apache License, Version 2.0 | Database Management (Backend) |
TypeScript | TypeScript Docs | Apache License, Version 2.0 | Typing, Codebase Structure |
Node.js | Node.js Docs | MIT License | Runtime Environment (Backend) |
NextAuth.js | NextAuth.js Docs | MIT License | Authentication (Backend) |
Material-UI | Material-UI Docs | MIT License | User Interface Design (Frontend) |
Mantine | Mantine Docs | MIT License | User Interface Design (Frontend) |
OpenAI API | OpenAI API Docs | OpenAI API Terms | AI Model Generation (Backend) |
Prettier | Prettier Docs | MIT License | Code Formatting |
Vercel | Vercel Docs | MIT License | Deployment and Hosting |
- Clone the repository to your local machine
- Run
npm install
to install the project dependencies - Create
.env
and.env.local
files in your root directory, following the example provided in.env.example
. - Run
npm run dev
to start the local development server - Install PostgreSQL database and set it up using the instructions found at PostgreSQL official page
- Prisma Client needs to be generated with
npx prisma generate
- Seed the database using the script
importCsvToPrisma.js
located indataset
folder. - You need to get an API key from OpenAI to use the GPT-3 model in this application. Add this key to your
.env
file.
- Training: Users can access various dog training exercises and lessons, which are personalized based on their dog.
- Chatbot: Users can chat with a chatbot to get personalized advice on anything dog related.
- PlaceHolder: More features to be added in the future.
- Use of AI to help create application We used ChatGPT to help debug issues ( so many type script errors ), teach us about the technologies we were using (MUI, Mantine, Prisma, NextJS, ReactJS) and to help us with the project.
- Dataset: The data set we used had a 10/10 usaboility score, it was easy to use and it was easy to import into our database since we did not have to clean it.
- IntelliPaws ChatBot: GPT-3.5-turbo model is used to generate chat messages and respond to user queries in the application to assist users in dog related questions.
- Lesson / Exercise Generation: GPT-3.5-turbo model is used for generating personalized dog training lessons and exercises, as well as providing breed-specific recommendations.
- Dog Breed Reccomendation: GPT-3.5-turbo model is used to create a guided conversation with the user to determine the best dog breed for them.
- JSON Corrector: GPT-3.5-turbo model is used to correct the JSON format of the lesson or exercise response from the AI if, there is an error in the JSON format.
- Limitations: The ai may return incorrect JSON format, we fixed this by using a try catch block and making another prompt for the ai to correct the JSON format. The chatbot will also answer questions that are unrealted to what it is meant to talk about.
│ .env
│ .env.example
│ .env.local
│ .eslintrc.json
│ .gitignore
│ next-env.d.ts
│ next.config.js
│ package.json
│ README.md
│ tsconfig.json
│ vercel.json
│
├───assets
│ └───images
│ chatbot.png
│ dog.gif
│ dog1.png
│ dog3.gif
│ doggy4.jpg
│ dogprofile.png
│ dogwithfriends.png
│ Logo.png
│ lostDog.png
│
├───components
│ AccordionLabel.tsx
│ AddDog.tsx
│ Alert.tsx
│ AuthWrapper.tsx
│ Chat.tsx
│ DailyTip.tsx
│ DogInformation.tsx
│ Exercise.tsx
│ Footer.tsx
│ JourneyStep.tsx
│ JourneyStepper.tsx
│ MountedWrapper.tsx
│ Navbar.tsx
│ Provider.tsx
│ RickRoll.tsx
│ StyledStepper.tsx
│
├───Constants
│ DogBehaviours.ts
│ EmptyDog.ts
│ EmptyDogBreed.ts
│ EmptyLesson.ts
│ index.ts
│ InitialContext.ts
│ InitialState.ts
│
├───Context
│ Context.tsx
│ Reducer.tsx
│ State.tsx
│
├───dataset
│ dog_breeds.csv
│ importCsvToPrisma.js
│
├───defer
│ generateTraining.ts
│
├───Hooks
│ useSmall.tsx
│
├───lib
│ fetchDogBreeds.ts
│ prisma.ts
│
├───models
│ IAlert.ts
│ IChatGPTMessage.ts
│ IContext.ts
│ IDog.ts
│ IDogBreed.ts
│ IExercise.ts
│ ILesson.ts
│ index.ts
│ IState.ts
│ IUser.ts
│
├───pages
│ │ 404.tsx
│ │ dog.tsx
│ │ dogbreeds.tsx
│ │ homepage.tsx
│ │ index.tsx
│ │ oldhome.tsx
│ │ recommendation.tsx
│ │ training.tsx
│ │ user_profile.tsx
│ │ _app.tsx
│ │
│ ├───add_dog
│ │ adopted.tsx
│ │ health.tsx
│ │ index.tsx
│ │ training.tsx
│ │
│ ├───api
│ │ │ fetchdogbreeds.ts
│ │ │
│ │ ├───auth
│ │ │ [...nextauth].ts
│ │ │
│ │ ├───dog
│ │ │ │ add.ts
│ │ │ │ [ownerId].ts
│ │ │ │
│ │ │ └───lessons
│ │ │ │ [id].ts
│ │ │ │
│ │ │ └───lesson
│ │ │ [id].ts
│ │ │
│ │ ├───openai
│ │ │ │ generateChat.ts
│ │ │ │ generateExercises.ts
│ │ │ │ generateRecomendation.ts
│ │ │ │
│ │ │ └───generateLessons
│ │ │ index.ts
│ │ │ [dogId].ts
│ │ │
│ │ ├───user
│ │ │ [email].ts
│ │ │
│ │ └───vaccine
│ │ add.ts
│ │
│ ├───dog
│ │ [id].tsx
│ │
│ └───lessons
│ ├───lesson
│ │ [id].tsx
│ │
│ └───[id]
│ generate.tsx
│ index.tsx
│
├───prisma
│ │ schema.prisma
│ │
│ └───migrations
│ ├───20230511214237_dogbreedremoval
│ │ migration.sql
│ │
│ ├───20230511214415_restore
│ │ migration.sql
│ │
│ └───20230511214754_
│ migration.sql
│
├───public
│ favicon.ico
│
├───styles
│ globals.css
│ Homepage.module.css
│
└───Utils
chatUtils.ts
correctJSON.ts
exerciseUtils.ts
generateTraining.ts
lessonUtils.ts
openaiConfig.ts
reccomendationUtils.ts