A full-stack platform for students to upload, organize, and access study materials β enhanced with AI-powered smart search.
Faby Notes is a college-oriented web platform that helps students study smarter by providing an organized system of Streams β Branches β Semesters.
- π€ Upload, manage & share study notes (PDFs, Docs)
- π Navigate content with a clean 3-level structure
- π Preview PDFs inside the browser
- π€ Chat with an AI assistant (Dialogflow)
- π¨βπ« Teachers can upload, students can view
- π JWT Authentication + Google OAuth
- βοΈ Cloud-based file storage using Cloudinary
- Stream > Branch > Semester navigation
- Clean card UI
- Fast routing with React Router v7
- Upload via Multer + Cloudinary
- Direct PDF preview
- Secure access
- JWT login
- Google OAuth
- Role-based access (Teacher / Student)
- Created using Dialogflow
- Smart note search
- Subject & topic guidance
- Radix UI components
- Lucide & React Icons
- React Toastify notifications
- Fully responsive
- React 19 - UI library
- Vite - Build tool
- Axios - HTTP client
- Radix UI - Component library
- React Router DOM v7 - Routing
- React Modal - Modal dialogs
- React Toastify - Notifications
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB + Mongoose - Database & ODM
- Multer + Cloudinary - File upload & storage
- JSON Web Tokens (JWT) - Authentication
- Nodemailer - Email service
- Passport Google OAuth - Social authentication
- Dialogflow - AI Chatbot
- Zod - Data validation
Faby-Notes/
β
βββ client/ # Frontend React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Route components
β β βββ store/ # State management
β β βββ assets/ # Static files
β β βββ App.jsx # Main App component
β βββ public/ # Public assets
β βββ package.json
β
βββ server/ # Backend Express application
βββ controllers/ # Route controllers
βββ models/ # MongoDB models
βββ routes/ # API routes
βββ middleware/ # Custom middleware
βββ utils/ # Utility functions
βββ server.js # Server entry point
βββ package.json
git clone https://github.com/DevendraMane/Faby-Notes.git
cd Faby-Notescd server
bun install
# Create environment file
cp .env.example .envConfigure /server/.env:
# -----------------------------------------
# π± MongoDB Connection
# -----------------------------------------
MONGODB_URI=mongodb+srv://<username>:<password>@cluster0.mongodb.net/faby-notes
# -----------------------------------------
# βοΈ Server Configuration
# -----------------------------------------
PORT=5000
NODE_ENV=development
# -----------------------------------------
# π§ Email Configuration
# -----------------------------------------
EMAIL_USER=<your-email>
EMAIL_PASSWORD=<your-app-password>
# -----------------------------------------
# π Frontend URL
# -----------------------------------------
FRONTEND_URL=http://localhost:5173
# FRONTEND_URL=https://your-frontend.onrender.com
# -----------------------------------------
# π JWT Secret
# -----------------------------------------
JWT_SECRET_KEY=<your-jwt-secret>
# -----------------------------------------
# π Google OAuth
# -----------------------------------------
GOOGLE_CLIENT_ID=<your-google-client-id>
GOOGLE_CLIENT_SECRET=<your-google-client-secret>
GOOGLE_CALLBACK_URL=http://localhost:5000/api/auth/google/callback
# GOOGLE_CALLBACK_URL=https://your-backend.onrender.com/api/auth/google/callback
# -----------------------------------------
# βοΈ Cloudinary Configuration
# -----------------------------------------
CLOUDINARY_CLOUD_NAME=<cloud-name>
CLOUDINARY_API_KEY=<cloud-api-key>
CLOUDINARY_API_SECRET=<cloud-api-secret>
# -----------------------------------------
# π€ OpenAI API
# -----------------------------------------
OPENAI_API_KEY=<your-openai-api-key>
# -----------------------------------------
# β‘ GROQ API
# -----------------------------------------
GROQ_API_KEY=<your-groq-api-key>
# -----------------------------------------
# π£ Dialogflow
# -----------------------------------------
DIALOGFLOW_PROJECT_ID=faby-notes
# Base64 encoded Google Application Credentials (Service Account JSON)
GOOGLE_APPLICATION_CREDENTIALS_BASE64=<base64-service-account-json>Start the backend server:
nodemon server.js
cd ../client
bun install
bun run dev
# Create environment file
cp .env.example .envConfigure /server/.env:
# -----------------------------------------
# βοΈ Server Configuration
# -----------------------------------------
VITE_APP_URI_API=http://localhost:5000- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- JWT tokens attached to headers for protected routes
- Multer middleware for file uploads to Cloudinary
- CORS enabled for cross-origin requests
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you found this project helpful, please give it a β on GitHub!
Made with β€οΈ by Devendra
- π§ Email: devendradineshmane@gmail.com
- πΌ LinkedIn: DevendraMane
```
