Skip to content

A study buddy web application built with the MERN Stack. Currently under development, with features like user authentication, real-time updates, and more on the roadmap.

License

Notifications You must be signed in to change notification settings

DevendraMane/Faby-Notes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Faby Notes Logo

πŸ“š Faby Notes β€” Your Study Buddy (2025)

A full-stack platform for students to upload, organize, and access study materials β€” enhanced with AI-powered smart search.

React Vite NodeJS Express MongoDB Cloudinary Dialogflow License


πŸ“– About the Project

Faby Notes is a college-oriented web platform that helps students study smarter by providing an organized system of Streams β†’ Branches β†’ Semesters.

βœ” What You Can Do

  • πŸ“€ 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

πŸš€ Features

πŸ“‚ Notes Organization

  • Stream > Branch > Semester navigation
  • Clean card UI
  • Fast routing with React Router v7

πŸ“ PDF Upload & Viewer

  • Upload via Multer + Cloudinary
  • Direct PDF preview
  • Secure access

πŸ” Authentication

  • JWT login
  • Google OAuth
  • Role-based access (Teacher / Student)

πŸ€– AI Assistant

  • Created using Dialogflow
  • Smart note search
  • Subject & topic guidance

🎨 Modern UI

  • Radix UI components
  • Lucide & React Icons
  • React Toastify notifications
  • Fully responsive

πŸ— Tech Stack

🌐 Frontend

  • 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

πŸ–₯ Backend

  • 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

πŸ“ Project Structure

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

βš™οΈ Installation & Setup

1️⃣ Clone the Repository

git clone https://github.com/DevendraMane/Faby-Notes.git
cd Faby-Notes

2️⃣ Backend Setup

cd server
bun install

# Create environment file
cp .env.example .env

Configure /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

3️⃣ Frontend Setup

cd ../client
bun install
bun run dev

# Create environment file
cp .env.example .env

Configure /server/.env:

# -----------------------------------------
# βš™οΈ Server Configuration
# -----------------------------------------
VITE_APP_URI_API=http://localhost:5000

4️⃣ Access the Application


πŸ”— API Communication

  • JWT tokens attached to headers for protected routes
  • Multer middleware for file uploads to Cloudinary
  • CORS enabled for cross-origin requests

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


⭐ Support

If you found this project helpful, please give it a ⭐ on GitHub!


πŸ’¬ Contact

Made with ❀️ by Devendra


πŸš€ Happy Coding!

```

About

A study buddy web application built with the MERN Stack. Currently under development, with features like user authentication, real-time updates, and more on the roadmap.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •