π Live Demo: Coming Soon!
Scribo is a modern, AI-powered smart notes application built with the MERN stack. It combines powerful rich-text editing, intelligent AI assistance, and secure cloud storage to deliver an exceptional note-taking experience for students, professionals, and anyone who values organized thinking.
Key highlights include:
- Advanced Rich-Text Editor powered by TipTap with full formatting capabilities
- AI-Powered Features for content enhancement, summarization, and smart suggestions
- Secure Authentication with JWT, Google OAuth, and email verification
- Cloud File Storage with Cloudinary integration for images and attachments
- Smart Organization with tags, colors, pinning, and archiving
- Export Capabilities to PDF and Markdown formats
- Recycle Bin with automatic cleanup for deleted notes recovery
- Dark Mode Support with smooth theme transitions
- Responsive Design optimized for all devices
- Comprehensive Testing with 105 test cases and SonarQube integration
- Full Formatting Support - Bold, italic, underline, strikethrough
- Text Styling - Headings, colors, highlights, alignment
- Lists & Structure - Bullet points, numbered lists, blockquotes
- Media Embedding - Images, links with preview
- Code Blocks - Syntax highlighting for developers
- Undo/Redo - Complete history management
- Keyboard Shortcuts - Power user productivity
- Content Enhancement - Improve writing quality and clarity
- Smart Summarization - Extract key points automatically
- Tone Analysis - Professional, casual, or academic suggestions
- Grammar & Style - Intelligent writing assistance
- Auto-Completion - Context-aware suggestions
- Content Organization - AI-suggested tags and categories
- Color Coding - 9 vibrant colors for visual organization
- Tag System - Categorize and filter notes efficiently
- Pin Important Notes - Keep critical notes at the top
- Archive System - Clean workspace without losing data
- Search Functionality - Find notes instantly
- Recycle Bin - 30-day recovery window with auto-cleanup
- JWT-Based Authentication - Secure token-based sessions
- Google OAuth Integration - One-click social login
- Email Verification - Secure account activation
- Password Reset - Email-based secure recovery
- Rate Limiting - Protection against brute force attacks
- Helmet.js Security - HTTP headers protection
- CORS Configuration - Controlled cross-origin requests
- Input Validation - Comprehensive data sanitization
- Cloudinary Storage - Optimized image hosting
- Automatic Optimization - Image compression and resizing
- CDN Delivery - Fast global content delivery
- Secure Upload - Authenticated file operations
- Profile Pictures - Avatar management system
- PDF Export - Professional document generation
- Markdown Export - Developer-friendly format
- Bulk Export - Multiple notes at once
- Email Sharing - Send notes via email
- Print Support - Optimized for printing
- Responsive Design - Mobile-first approach
- Dark/Light Themes - Eye-friendly viewing options
- Smooth Animations - Framer Motion powered
- Toast Notifications - Non-intrusive user feedback
- Loading States - Skeleton screens and spinners
- Accessibility - WCAG 2.1 compliant
- Radix UI Components - High-quality, accessible primitives
- React 19.1.1 β Modern UI library with concurrent features
- TypeScript 5.8.3 β Type-safe JavaScript development
- Vite 7.1.7 β Lightning-fast build tool and dev server
- React Router 7.9.3 β Declarative routing for React
- Zustand 5.0.8 β Lightweight state management
- React Hook Form 7.63.0 β Performant form validation
- Zod 4.1.11 β TypeScript-first schema validation
- Tailwind CSS 4.1.13 β Utility-first CSS framework
- Radix UI β Accessible component primitives
- Alert Dialog, Dialog, Dropdown Menu, Label, Radio Group, Slot, Switch, Tabs
- Framer Motion 12.23.22 β Production-ready animations
- Lucide React 0.544.0 β Beautiful icon library
- Class Variance Authority β Component variant management
- clsx & tailwind-merge β Intelligent class merging
- next-themes 0.4.6 β Theme management
- Sonner 2.0.7 β Toast notification system
- TipTap 3.6.2 β Headless editor framework
- Starter Kit - Essential editing features
- Extensions - Color, Highlight, Image, Link, Placeholder, Text Style
- @tiptap/react β React integration
- Node.js 22.x β JavaScript runtime
- Express 5.1.0 β Fast, minimalist web framework
- MongoDB 6.20.0 β NoSQL database
- Mongoose 8.18.1 β MongoDB object modeling
- JWT (jsonwebtoken 9.0.2) β Token-based authentication
- Passport 0.7.0 β Authentication middleware
- Passport Google OAuth 2.0 β Google sign-in
- bcryptjs 3.0.2 β Password hashing
- Helmet 8.1.0 β Security headers
- CORS 2.8.5 β Cross-origin resource sharing
- Express Rate Limit 8.1.0 β Rate limiting middleware
- Cloudinary 1.41.3 β Cloud image/video management
- Multer 2.0.2 β File upload middleware
- Multer Cloudinary Storage β Cloudinary storage engine
- Mailgun.js 12.1.1 β Email delivery service
- Nodemailer 7.0.10 β Email sending module
- Axios 1.12.2 / 1.13.2 β HTTP client
- date-fns 4.1.0 β Modern date utility
- marked 16.4.0 β Markdown parser
- pdf-lib 1.17.1 β PDF generation and manipulation
- html-pdf 3.0.1 β HTML to PDF converter
- form-data 4.0.4 β Form data encoding
- Pino 9.11.0 β High-performance logging
- Pino HTTP 10.5.0 β HTTP request logging
- Pino Pretty 13.1.1 β Log formatter
- Vitest 3.2.4 β Fast unit test framework (Frontend)
- @vitest/ui β Test UI interface
- @vitest/coverage-v8 β Code coverage
- Testing Library β React testing utilities
- @testing-library/react 16.3.0
- @testing-library/jest-dom 6.9.1
- @testing-library/user-event 14.6.1
- Mocha 11.7.4 β Test framework (Backend)
- Chai 4.5.0 β Assertion library
- Sinon 21.0.0 β Test spies, stubs, and mocks
- Supertest 7.1.4 β HTTP assertion library
- NYC 17.1.0 β Code coverage tool
- MSW 2.11.3 β API mocking library
- MongoDB Memory Server 10.2.1 β In-memory MongoDB
- SonarQube β Code quality and security analysis
- ESLint 9.36.0 β JavaScript linter
- TypeScript ESLint 8.44.0 β TypeScript linting
- sonarqube-scanner 4.2.5 β SonarQube integration
- Nodemon 3.1.10 β Auto-restart development server
- cross-env 10.1.0 β Cross-platform env variables
- dotenv 17.2.2 β Environment variable management
- HTML5 β Semantic markup
- CSS3 β Modern styling
- JavaScript ES2020+ β Modern JavaScript features
- GitHub Actions β Automated CI/CD pipeline
- Render β Backend hosting platform
- Vercel β Frontend hosting platform
- Sentry β Error tracking and monitoring
- SonarCloud β Cloud-based code analysis
- Docker Ready β Containerization support
Our CI/CD pipeline ensures code quality, security, and reliable deployments:
| Check | Tool | Description |
|---|---|---|
| Code Quality | SonarCloud | Security scanning and code smells |
| Linting | ESLint | Code style and best practices |
| Type Safety | TypeScript | Static type checking |
| Build | Vite | Production build verification |
| Testing | Mocha/Vitest | 105+ automated tests |
| Coverage | NYC/V8 | Code coverage reporting |
| Security | npm audit | Dependency vulnerability scan |
| Branch | Action | Platform |
|---|---|---|
main |
Production Deploy | Render + Vercel |
develop |
Quality Checks Only | - |
| Pull Requests | Preview + Quality Checks | Vercel Preview |
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
Install Dependencies (Backend + Frontend) β
β β
Run Linting & Type Checks β
β β
Execute Tests with Coverage β
β β
Build Production Bundle β
β β
SonarCloud Analysis β
β β
Security Audit β
β π Deploy Backend β Render β
β π Deploy Frontend β Vercel β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
This project is configured for deployment on Render (backend) and Vercel (frontend).
- Backend on Render: Connect GitHub repo β Set Root Directory:
backendβ Add environment variables β Deploy - Frontend on Vercel: Connect GitHub repo β Set Root Directory:
frontendβ AddVITE_API_URLβ Deploy
- Node.js 18+ installed
- MongoDB 6+ installed and running
- npm or yarn package manager
- Cloudinary account (for file storage)
- Mailgun account (for email services)
- Google OAuth credentials (optional, for social login)
- Clone the repository
git clone https://github.com/huzaifa-fullstack/scribo-notes-ai.git
cd scribo-notes-ai- Install Backend Dependencies
cd backend
npm install- Install Frontend Dependencies
cd ../frontend
npm install- Backend Environment Setup
Create .env file in the backend directory:
# Server Configuration
PORT=5000
NODE_ENV=development
# Database
MONGODB_URI=mongodb://localhost:27017/scribo-notes-db
# JWT Authentication
JWT_SECRET=your_super_secret_jwt_key_here
JWT_EXPIRE=7d
# 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
# Cloudinary
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
# Email Service (Mailgun)
MAILGUN_API_KEY=your_mailgun_api_key
MAILGUN_DOMAIN=your_mailgun_domain
MAILGUN_FROM_EMAIL=noreply@yourdomain.com
MAILGUN_FROM_NAME=Scribo Notes
# Frontend URL (for CORS)
FRONTEND_URL=http://localhost:5173
CLIENT_URL=http://localhost:5173
# AI Features (HuggingFace)
HUGGINGFACE_API_KEY=hf_your_api_key_here
# Error Tracking (Optional)
SENTRY_DSN=your_sentry_dsn_here
# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100- Frontend Environment Setup
Create .env file in the frontend directory:
VITE_API_URL=http://localhost:5000/api
VITE_SENTRY_DSN=your_sentry_dsn_here- Database Setup
Initialize MongoDB database:
cd backend
npm run init-db- Start Development Servers
Backend:
cd backend
npm run devFrontend:
cd frontend
npm run dev- Open your browser
Frontend: http://localhost:5173
Backend API: http://localhost:5000
- Build for Production
Backend:
cd backend
npm startFrontend:
cd frontend
npm run build
npm run preview- JWT Tokens with secure signing and expiration
- Password Hashing with bcrypt (10 salt rounds)
- OAuth 2.0 integration for Google sign-in
- Email Verification for account activation
- Session Management with automatic token refresh
- Helmet.js β Security headers protection
- CORS β Controlled cross-origin requests
- Rate Limiting β Brute force protection
- Input Validation β Comprehensive sanitization
- SQL Injection Protection β MongoDB parameterized queries
- XSS Protection β Content sanitization
- Encrypted Communication β HTTPS in production
- Secure File Upload β Authenticated Cloudinary uploads
- GDPR Compliant β User data privacy rights
- Automatic Cleanup β Recycle bin 30-day deletion
- Secure Password Reset β Time-limited tokens
- Graceful Error Recovery β User-friendly messages
- Comprehensive Logging β Pino structured logging
- No Sensitive Data Leakage β Sanitized error responses
- Database Error Handling β Mongoose validation
- Unit Tests β Component and utility testing
- Integration Tests β Feature workflow testing
- Coverage: 105 tests with ~60% code coverage
Test Categories:
- Authentication flows
- Note CRUD operations
- Rich-text editor functionality
- Form validation
- Store management
- API integration
- API Endpoint Tests β Request/response validation
- Authentication Tests β JWT and OAuth flows
- Database Tests β CRUD operations with in-memory MongoDB
- Integration Tests β End-to-end feature testing
- Coverage: Comprehensive test suite with NYC
Test Categories:
- User authentication and authorization
- Note management endpoints
- File upload and processing
- Email service integration
- Error handling and validation
- Middleware functionality
- SonarQube Analysis β Code quality metrics
- ESLint β Code style consistency
- TypeScript β Type safety verification
- Code Reviews β Manual quality checks
POST /api/auth/register - User registration
POST /api/auth/login - User login
POST /api/auth/verify-email - Email verification
POST /api/auth/forgot-password - Request password reset
POST /api/auth/reset-password - Reset password
GET /api/auth/google - Google OAuth login
GET /api/auth/google/callback - Google OAuth callback
GET /api/auth/me - Get current user
POST /api/auth/logout - User logout
GET /api/notes - Get all user notes
GET /api/notes/:id - Get single note
POST /api/notes - Create new note
PUT /api/notes/:id - Update note
DELETE /api/notes/:id - Delete note (to recycle bin)
POST /api/notes/:id/pin - Toggle pin status
POST /api/notes/:id/archive - Toggle archive status
POST /api/notes/:id/restore - Restore from recycle bin
DELETE /api/notes/:id/permanent - Permanent delete
GET /api/notes/recycle-bin - Get deleted notes
POST /api/export/pdf - Export note to PDF
POST /api/export/markdown - Export note to Markdown
POST /api/export/bulk - Bulk export notes
GET /api/profile - Get user profile
PUT /api/profile - Update user profile
POST /api/profile/avatar - Upload profile picture
DELETE /api/profile/avatar - Remove profile picture
POST /api/ai/enhance - Enhance content
POST /api/ai/summarize - Summarize content
POST /api/ai/suggest-tags - Get tag suggestions
POST /api/ai/grammar-check - Check grammar
Contributions are welcome! Please feel free to submit a Pull Request.
- 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
- TypeScript for frontend type safety
- ESLint for code quality
- Prettier for code formatting (if configured)
- Conventional Commits for clear history
- Unit Tests for new features
- Documentation for complex logic
- Write tests for new features
- Maintain test coverage above 60%
- Ensure all tests pass before PR
- Add integration tests for workflows
This project is licensed under the MIT License - see the LICENSE file for details.
Muhammad Huzaifa Karim
GitHub Profile
- TipTap for the excellent rich-text editor framework
- Radix UI for accessible component primitives
- Cloudinary for scalable cloud storage
- Mailgun for reliable email delivery
- MongoDB for flexible database solution
- Vercel for deployment platform
- SonarQube for code quality analysis
For questions, feedback, or support:
- GitHub Issues - Report bugs or request features
- Email - karimhuzaifa590@gmail.com
If you found this project helpful, please consider:
- β Starring the repository
- π Reporting bugs
- π‘ Suggesting new features
- π’ Sharing with others
- π€ Contributing to the codebase
Β© 2025 Muhammad Huzaifa Karim