"Slide Buddyβs here to light your way,
Through notes and questions every day.
Upload, explore, and understand,
With AIβs help, youβll take command." β¨
Slide Buddy is here to make studying simpler and enjoying! π Itβs your go-to tool for taking notes, asking questions, and reviewing slides with ease. Built with modern tools like Next.js, Tailwind CSS, and Tiptap, and and supercharged by Google Generative AI, Slide Buddy keeps everything intuitive and efficient.π‘π
- User-friendly Authentication: Secure login and signup with Clerk.
- Slide Management: Upload and store slides seamlessly with Convex.
- Interactive Learning Tools:
- View slides and take note with Tiptap's rich-text editor.
- Get AI-powered clarifications and topic summaries to aid exam preparation.
- Reliable Monitoring: Track errors and performance with Sentry.
- Responsive Design: Enjoy a consistent experience across devices, powered by Tailwind CSS.
-
Frontend Frameworks:
- Next.js: React framework for server-side rendering and static site generation.
- Tailwind CSS: Utility-first CSS framework for styling.
- shadcn/ui: Accessible and reusable UI components for consistent design.
-
Rich-Text Editing:
- Tiptap: Rich-text editor for annotations and note-taking.
-
Backend and AI:
- Convex: Backend as a service for database and API management.
- LangChain: Handles text embeddings and database queries.
- Google Generative AI: Powers text generation and intelligent clarifications.
-
Monitoring and Debugging:
- Sentry: Tracks errors and monitors performance for a seamless experience.
The project folder's main structure:
- Frontend (UI): Built with reusable components in
app/
andcomponents/
. - Backend: Managed through API routes in
convex/
. - Styling: Tailored using Tailwind CSS, integration with Shadcn/ui.
- Static Assets: Organized in the
public/
directory.
The following tree outlines the organization of files and folders of the Slide Buddy project. π
Click to view full tree!π³
β course-project-project-18-edtech git:(main) tree -I "node_modules|dist|.git|coverage"
.
βββ README.md
βββ app
βΒ Β βββ (auth)
βΒ Β βΒ Β βββ sign-in
βΒ Β βΒ Β βΒ Β βββ [[...sign-in]]
βΒ Β βΒ Β βΒ Β βββ page.jsx
βΒ Β βΒ Β βββ sign-up
βΒ Β βΒ Β βββ [[...sign-up]]
βΒ Β βΒ Β βββ page.jsx
βΒ Β βββ api
βΒ Β βΒ Β βββ slide-loader
βΒ Β βΒ Β βββ route.js
βΒ Β βββ dashboard
βΒ Β βΒ Β βββ _components
βΒ Β βΒ Β βΒ Β βββ Header.js
βΒ Β βΒ Β βΒ Β βββ SideBar.js
βΒ Β βΒ Β βΒ Β βββ UploadSlideDialog.js
βΒ Β βΒ Β βββ layout.js
βΒ Β βΒ Β βββ page.js
βΒ Β βββ favicon.ico
βΒ Β βββ fonts
βΒ Β βββ global-error.jsx
βΒ Β βββ globals.css
βΒ Β βββ layout.js
βΒ Β βββ learning-hub
βΒ Β βΒ Β βββ [slideId]
βΒ Β βΒ Β βΒ Β βββ page.js
βΒ Β βΒ Β βββ _components
βΒ Β βΒ Β βββ LearningHubHeader.js
βΒ Β βΒ Β βββ NoteEditor.js
βΒ Β βΒ Β βββ NoteExtension.js
βΒ Β βΒ Β βββ SlideViewer.js
βΒ Β βββ page.js
βΒ Β βββ provider.js
βββ components
βΒ Β βββ ui
βΒ Β βββ button.jsx
βΒ Β βββ dialog.jsx
βΒ Β βββ input.jsx
βΒ Β βββ progress.jsx
βΒ Β βββ sonner.jsx
βββ components.json
βββ configs
βΒ Β βββ AIModel.js
βββ convex
βΒ Β βββ _generated
βΒ Β βΒ Β βββ api.d.ts
βΒ Β βΒ Β βββ api.js
βΒ Β βΒ Β βββ dataModel.d.ts
βΒ Β βΒ Β βββ server.d.ts
βΒ Β βΒ Β βββ server.js
βΒ Β βββ langchain
βΒ Β βΒ Β βββ db.js
βΒ Β βββ myAction.js
βΒ Β βββ notes.js
βΒ Β βββ schema.js
βΒ Β βββ slideStorage.js
βΒ Β βββ user.js
βββ instrumentation.js
βββ jsconfig.json
βββ lib
βΒ Β βββ utils.js
βββ middleware.js
βββ next.config.mjs
βββ package-lock.json
βββ package.json
βββ postcss.config.mjs
βββ public
βΒ Β βββ figma.png
βΒ Β βββ landing-page.png
βΒ Β βββ logo.png
βΒ Β βββ pdf-file.png
βΒ Β βββ presentation.png
βββ sentry.client.config.js
βββ sentry.edge.config.js
βββ sentry.server.config.js
βββ tailwind.config.js
23 directories, 55 files
Follow these steps to set up and run the Slide Buddy project.
Make sure you have the following installed:
- Node.js (>= 16.x, recommended 18.x for best compatibility)
- Download from Node.js Official Website.
- npm (>= 8.x, comes with Node.js)
Open a terminal and run the following commands:
git clone [email protected]:nguyenngocyennga/slide-buddy.git
cd slide-buddy
Create a .env.local
file in the root directory and add the following environment variables for Convex, Clerk, Google AI Studio (Gemini) and Sentry.
CONVEX_DEPLOYMENT=
NEXT_PUBLIC_CONVEX_URL=
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in # No need to modify
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up # No need to modify
GOOGLE_API_KEY=
SENTRY_AUTH_TOKEN=
You can run the project in two ways:
Option 1: One-Liner Command
This command will install the dependencies and then run both the development server and the Convex backend in parallel all in one terminal.
npm run slide-buddy
Option 2: Step-by-Step Setup
Install the dependencies:
npm install
Start the development server:
npm run dev
In a separate terminal, start the Convex backend:
npx convex dev
The challenges students face:
Managing lecture slides, notes, and exam preparation often requires juggling multiple tools. This fragmented workflow disrupts focus, wastes time, and complicates learning. Exam prep becomes even more daunting with the manual organization of notes and question generation.
- Too Many Tools: Students constantly switch between slide viewers, note-taking apps, and AI tools. This disrupts their workflow and wastes valuable time.
- Disorganized Conversations with AI: Existing AI tools donβt tie answers to specific lecture slides or notes. Students end up with fragmented conversations and must copy-paste answers back into their notes.
- Tedious Exam Prep: Organizing notes and creating practice questions takes hours. Without automation, itβs hard to focus on understanding concepts deeply.
How Slide Buddy can help?
Slide Buddy aims to solve this problem by integrating slide viewing, rich-text note-taking, and AI-powered learning tools into a single platform. The solution simplifies study workflows, saves time, and improves comprehension.
- Time Saved: Students can save up to 3 hours per week by having all tools in one place. No more switching apps or copy-pasting between tools.
- Efficient Exam Prep: AI-generated summaries and questions cut revision time by up to 30%, letting students focus on studying, not organizing.
- Better Retention: Context-aware note-taking and AI-driven explanations help students grasp concepts faster, improving understanding by up to 40%.
- Short-Term (2 Years): With increasing reliance on digital tools, Slide Buddy supports both in-person and remote learning environments.
- Medium-Term (5 Years): As AI improves, personalized learning tools like Slide Buddy will become more essential for competitive academics.
- Long-Term (10 Years): The toolβs architecture allows for continuous upgrades, making it adaptable to future educational trends and technologies.
The architecture of Slide Buddy integrates the following key components:
1. Frontend
- Built using Next.js for server-side rendering, dynamic UI, and responsive design.
- Integrated Tiptap for rich-text note-taking and annotations.
- Styled with Tailwind CSS for a clean, consistent user interface.
2. Backend
- Managed with Convex, providing scalable server-side logic and database management.
- LangChain enables text embeddings for advanced AI processing.
- Utilizes Google Generative AI to provide intelligent clarifications and study question generation.
3. AI Features
- Context-aware question answering based on lecture notes.
- Automatic generation of practice questions and topic summaries for exam prep.
4. Error Monitoring
- Configured with Sentry to monitor performance, detect bugs, and especially instant user feedback form with screen capture and video relay to provide actionable insights.
Visual mockups and prototypes were created to guide development, not only for this iteration but also act as a platform for future features prototypes. Please view the current prototype here: Slide Buddy - Figma Prototype
Open Source Usage and Licensing
Slide Buddy is built on open-source technologies like Next.js, Tiptap, Tailwind CSS, and Convex. These tools make development faster and more reliable while ensuring compliance with established open-source licenses. While open-sourcing the project under an MIT license could support collaboration and community-driven improvements, unique featuresβlike contextual AI workflows and modular architectureβcan be considered to remain proprietary to protect the platformβs competitive edge.
Business Model
At this stage, Slide Buddy focuses on user acquisition and feedback through a freemium model. Core features, such as slide viewing, note-taking, and basic AI functionalities, are available for free, ensuring accessibility and encouraging adoption among students and educators. Premium features, like unlimited slide uploads, personalized flashcards, and advanced analytics, provide an opportunity for monetization. As the platform grows, subscription plans for individuals and institutions or enterprise licensing partnerships with schools and universities could open potential long-term revenue streams.
Slide Buddy integrates features that address gaps in the tools students commonly use:
Tool | Strengths | Gaps |
---|---|---|
Notion | Flexible workspace for note-taking, project management, and databases | No real-time annotation or lecture-specific workflows |
Mem.ai | AI-driven organization for personal notes, focuses on workflow recall | Lacks integration with slides or tools for exam preparation |
StudyPotion | Converts lecture materials into flashcards and interactive study aids | Limited note-taking capabilities and no contextual AI assistance |
NotebookLM | Summarizes and interacts with uploaded documents using AI | Not optimized for live lectures or slide-based workflows |
OneNote | Allows slide-linked notes and flexible formatting for various workflows | No built-in AI features for clarifications or automated exam prep tools |
Why Slide Buddy stands out?
Slide Buddy combines the best of these tools into one platform. Students can take notes along with slides in real-time, ask contextual questions, and generate exam materialsβall without leaving the app. Itβs designed for the modern student who needs everything at their fingertips.
Strengths | Weaknesses |
---|---|
Combines note-taking, AI assistance, and slide viewing in one platform | Limited initial resources for development |
User-friendly, tailored for students | Early-stage project with scalability challenges |
Freemium model encourages adoption | Requires ongoing AI feature improvements |
Opportunities | Threats |
Integration with LMS platforms to boost adoption | Established competitors with large user bases |
Expansion into global markets with multilingual support | Competitors may replicate key features |
Partnerships with educational content providers | User inertia toward existing tools |
Slide Buddy is an all-in-one platform and user-centric design to simplify learning workflows, with opportunities in LMS integration and global expansion, but faces challenges in scaling, competition from established tools, and the need for continuous innovation.
We owe the online community for their resources and tutorials, such as Antonio Erdeljac, Adrian Hajdin, and Rahul Sanap, for generously sharing.
Evaluation:
- Layout and Structure: The main components such as the header, sidebar, and main content area are separated.
- Color Scheme: We use a consistent color scheme with gradients and background colors that enhance the visual appeal. Mostly minimal but with the gradient-styled buttons as visual cue.
- Fonts: We use the Geologica font from Google Fonts (to enhance displaying of Vietnamese, main language of one team member :D)
- Buttons and Icons: Buttons are styled uniformly with gradient backgrounds and hover effects. Icons are used appropriately to enhance the user experience.
- Navigation: The navigation is simple and clear. The use of Clerk for authentication ensures that the user experience is smooth. Routes like /learning-hub/[slideId] make context-specific navigation easy for users (breadcrumbs).
UI Kit:
- Colors: The project uses a combination of blue, purple, and cyan gradients for buttons and backgrounds as a signature.
- Fonts: Geologica font from Google Fonts.
- Buttons: Customized the shadcn/ui button using Tailwind CSS with gradient backgrounds and hover effects.
- Icons: Used icons from shadcn/ui in the sidebar and other components to enhance the user experience.
Some of our features that could be considered:
- React Routing: Next.js App Router for routing, which enables dynamic, modular routing (e.g., /learning-hub/[slideId]) for slide-specific interactions.
- Real-time Updates: We use Convex for real-time updates, ensuring that the user sees the latest data without needing to refresh the page.
- AI Integration: We integrate Langchain for text embedding and Google Generative AI for text generation, providing advanced features for note-taking and slide analysis. Users can ask questions or request clarifications directly tied to the context of specific slides.
- Responsive Design and Advanced Animations: We use Tailwind CSS to make sure the app adapts seamlessly to different screen sizes, from desktops to mobile devices, with animations, such as hover scaling effects on buttons and cards.
- Rich-Text Note-Taking: The integration of Tiptap provides flexible text editing capabilities, such as formatting, annotations, and AI-driven conversation.
Evaluation:
- Broken URL Links: All internal navigation links, login, logout, buttons are functional.
- Form Validation: We setup to specify that form only accept pdf type. Other visual cues, animations, toasts are also implemented.
- Performance: The use of Next.js and Tailwind CSS ensures that the project is performant and responsive. However, since we integrate Sentry, there might be potential lag initially when setting up the project.
Incoming request and request processing The back-end supports various incoming requests, including:
- User authentication and management via Clerk
- Slide upload and storage via Convex
- Real-time data updates via Convex
- Pdf processing and text embedding from Langchain
- AI-powered note-taking and slide analysis via Google Generative AI
- Error monitoring via Sentry
Heavy Back-end Technology
- Convex: Used as the primary database and real-time data synchronization service. It handles user data, slide metadata, and notes.
- Langchain and Google Generative AI: Used for AI-powered note-taking and slide analysis for processesing text data and generating embeddings for efficient search and retrieval.
Processing Incoming Requests
- User Authentication: Clerk to authenticate users and manage sessions.
- Slide Upload and Storage: Convex to generate upload URLs, store slide metadata, and retrieve slide URLs.
- AI-powered Note-taking and Slide Analysis: Langchain and Google Generative AI to process text data and generate embeddings.
- Error Monitoring: Sentry to capture and log errors.
- Clerk: Integrated for user authentication and session management.
Scripts
npm run slide-buddy
: This script installs dependencies and starts both the development server and the Convex backend in parallel.
Interactions between Back-end Services
- Slide Upload and AI Analysis: The back-end fetches slide data from Convex, processes it using Langchain and Google Generative AI, and stores the results back in Convex.
- Real-time Data Updates: Convex provides real-time data synchronization, ensuring that users see the latest data without needing to refresh the page.
Performance Enhancement
- Convex: Provides efficient real-time data synchronization.
- Langchain and Google Generative AI: Provides fast and accurate text generation and embeddings.