Elytra is an AI-powered video chatbot designed to guide and counsel students who are aspiring to study abroad. By integrating cutting-edge AI technologies and real-time video chat capabilities, Elytra offers personalized, real-time counseling, making the journey to studying abroad much smoother.
- AI-Powered Counseling: Integrated with OpenAI’s generative AI for personalized advice and responses.
- Real-Time Video Interaction: LiveKit is used to enable seamless video chat between the student and counselor.
- Secure Authentication: Integrated with NextAuth and Prisma for a robust and secure user authentication system.
- Data Storage: Using Pinecone for efficient vector-based data storage.
- Customizable UI: Tailored design using Radix-UI components and Tailwind CSS.
- Automated Communication: Email functionality powered by Nodemailer for notifications.
- Frontend: Next.js, Tailwind CSS, Radix-UI components
- Backend: Prisma ORM, Pinecone, NextAuth, LiveKit
- AI & APIs: OpenAI, Google Generative AI, Pinecone
- Utilities: Zod for input validation, Axios for API calls, Formik for forms, and Framer Motion for animations
- Dev Tools: TypeScript, Husky, ESLint, Prettier
To get this project running on your local machine, follow the instructions below.
Make sure the following software is installed:
- Node.js >= 16
- npm, yarn, pnpm, or bun
- Prisma CLI:
npm install -g prisma
-
Clone the repository:
git clone https://github.com/rishipatel9/elytra.git cd elytra
-
Install dependencies:
npm install
-
Set up environment variables:
Create a
.env
file in the root directory of the project with the following example variables:GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= NEXT_SECRET= DATABASE_URL= NEXT_PUBLIC_ADMIN_EMAIL= NEXT_PUBLIC_ADMIN_PASSWORD= NEXT_PUBLIC_JWT_SECRET= LIVEKIT_API_KEY= LIVEKIT_API_SECRET= LIVEKIT_URL= NEXT_PUBLIC_PINECONE_API_KEY= NEXT_PUBLIC_GEMINI_API_KEY= OPENAI_API_KEY= NEXT_PUBLIC_NODEMAILER_PASS= NEXT_PUBLIC_MAIL_ADD=
Replace the placeholder values with your actual credentials for services like Google OAuth, GitHub OAuth, LiveKit, Pinecone, and OpenAI.
-
Run Prisma commands to set up your database:
-
Pull the schema from the database (if you have an existing schema):
npx prisma db pull
-
Run migrations (for any changes to your schema):
npx prisma migrate dev
-
Generate the Prisma client:
npx prisma generate
-
-
Run the development server:
npm run dev
This will start the Next.js development server, which you can view at http://localhost:3000.
The following commands are available:
npm run dev
- Starts the development server with TurboPack.npm run build
- Builds the app for production, generating Prisma client and static assets.npm run start
- Starts the production server.npm run start:prisma
- Runs Prisma migrations and generates the Prisma client.npm run lint
- Lints the codebase using ESLint.npm run format
- Formats the code using Prettier.
Here are some common Prisma commands used in this project:
-
Generate Prisma Client:
npx prisma generate
-
Migrate Database:
Run this command whenever you make changes to the database schema:npx prisma migrate dev
-
Pull Database Schema:
If you need to sync your Prisma schema with an existing database, run:npx prisma db pull
-
Inspect Prisma Schema:
If you want to inspect your Prisma schema file, use the following:npx prisma studio
For deployment, we recommend using the Vercel Platform, which is optimized for Next.js apps.
-
Build the app:
npm run build
-
Deploy the app to Vercel using their CLI or through their dashboard.
For detailed instructions, visit the Next.js deployment documentation.
To learn more about the technologies used in this project, check out the following resources:
- Next.js Documentation
- Prisma Documentation
- OpenAI Documentation
- LiveKit Documentation
- Pinecone Documentation
We welcome contributions to this project! Here's how you can get involved:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Make your changes and commit them:
git commit -m 'Add new feature'
- Push the changes to your fork:
git push origin feature-name
- Create a pull request from your fork to the main repository.
This project is licensed under the MIT License - see the LICENSE file for details.