A comprehensive productivity suite that combines AI-powered document processing, schedule management, task organization, and intelligent note-taking in one unified platform.
Pen2PDF Suite is a modern web application that offers six powerful productivity tools: AI-powered text extraction and PDF conversion, intelligent timetable management with Excel/CSV import, comprehensive todo list management with subtasks, smart notes generation with a searchable library, a full-featured digital whiteboard, and an AI assistant (Bella) for intelligent help - all designed to streamline your academic and professional workflow.
- Demo - See the application in action
- Documentation - Complete setup and usage guide
- Issues - Report bugs or request features
- Contributing - Help improve the project
- ๐ Features
- โก Tech Stack
- ๐ฆ Dependencies & Packages
- ๐ Prerequisites
- ๐ ๏ธ Installation
- ๐ป Usage
- ๐ Project Structure
- ๐ฆ Submodules
- ๐ค Contributing
- ๐ License
- ๐ก๏ธ Security
- ๐ Code of Conduct
- ๐บ๏ธ Roadmap
- ๐ Acknowledgements
- ๐ค AI-Powered Text Extraction: Uses Google Gemini AI to extract text from various file formats
- ๐ Multiple File Format Support: PDF, PPT, PPTX, PNG, JPG, WebP
- โ๏ธ Real-time Markdown Editor: Edit extracted text with live markdown formatting
- ๐ Professional PDF Export: Generate high-quality PDFs with custom styling
- ๐ค Markdown Export: Download content as markdown files
- ๐ฏ Drag & Drop Interface: Intuitive file upload with drag-and-drop support
- ๐ Blank Document Mode: Start with a blank document without file upload
- ๐ Schedule Organization: Create and manage your daily, weekly schedules
- ๐ Excel/CSV Import: Import timetable data from CSV, XLSX, and XLS files
- ๐ซ Class Management: Organize subjects, teachers, rooms, and class types (Theory/Lab)
- โฐ Time Slot Management: Manage class timings and daily schedules
- ๐ Bulk Operations: Import multiple entries at once with validation
- ๐๏ธ Weekly View: Visualize your entire week's schedule in an organized format
- ๐ Task Organization: Create todo cards with organized task lists
- ๐ Subtask Support: Break down complex tasks into manageable subtasks
- ๐ Priority Pinning: Pin important subtasks for quick access
- โ Progress Tracking: Mark tasks and subtasks as completed
- ๐ Task Statistics: View completion progress and task analytics
- ๐ฏ Focus Mode: Expandable cards to focus on specific task groups
- ๐ค Smart Notes Creation: AI-powered generation of study notes from uploaded files
- ๐ Notes Library: Searchable collection of all your generated notes
- ๐ Rich Text Support: Create and edit notes with markdown formatting
- ๐ Note Regeneration: Retry note generation with improved prompts
- ๐พ Persistent Storage: Save and organize notes in a dedicated library
- ๐ฏ Blank Note Creation: Start with empty documents for manual note-taking
- ๐ฌ Multi-Model Support: Switch between LongCat, Gemini, and GitHub Models
- LongCat-Flash-Chat
- LongCat-Flash-Thinking
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- GitHub Models (new): Access GPT-4o, GPT-4, Claude, and more via GitHub Models API
- Runtime model discovery with your GitHub PAT
- Fallback to catalog when discovery unavailable
- Supports gpt-4o, gpt-4o-mini, claude-3-5-sonnet, claude-4, and more
- ๐ง Smart Context Window: AI remembers last 20 messages for coherent conversations
- ๐ Markdown & LaTeX Rendering: Beautiful formatting for code, math equations, and text
- ๐ File Upload: Upload files for context (vision-capable models only)
- Supports images: PNG, JPEG, WebP, GIF
- Blocked types: .docx, .pdf, .ppt, .pptx, .rtf (no server-side conversion yet)
- Client-side and server-side validation
- ๐ Notes Context: Load and select notes from your library as context
- ๐ Smart Search: Search through notes to find relevant context
- ๐พ Chat Persistence: Conversation history is saved and loaded automatically
- ๐ฏ CLI-Style Interface: Clean, terminal-inspired chat interface with syntax highlighting
- ๐ Dynamic Model Switching: Seamlessly switch between AI models mid-conversation
โ ๏ธ Rate Limit Handling: Graceful error handling with model switch suggestions
- ๐ฑ Responsive Design: Works seamlessly on desktop and mobile devices
- โก Fast Processing: Efficient processing and data management
- ๐จ Modern UI: Clean, intuitive interface with consistent design
- ๐ Local Storage: Secure data management with MongoDB integration
This project uses carefully selected packages across frontend and backend to deliver powerful features. Below is the complete list of dependencies organized by category.
| Package | Purpose | Category |
|---|---|---|
| axios | HTTP client for API requests | Frontend - Network |
| react | UI framework for building interactive interfaces | Frontend - Core |
| docx | Create and export .docx documents | Frontend - Document Processing |
| html2pdf.js | Generate PDFs from HTML content | Frontend - PDF Generation |
| marked | Markdown parsing and rendering | Frontend - Markdown |
| katex | LaTeX math equation rendering | Frontend - Math Rendering |
| fabric | Canvas manipulation for whiteboard | Frontend - Graphics |
| xlsx | Excel file parsing and generation | Frontend - Data Import/Export |
| papaparse | CSV parsing and processing | Frontend - CSV Processing |
| express | Backend web framework | Backend - Server |
| mongoose | MongoDB object modeling | Backend - Database |
| @google/genai | Google Gemini AI integration | Backend - AI Services |
| vite | Fast build tool and dev server | Dev - Build Tool |
| eslint | Code linting and quality checks | Dev - Code Quality |
Note: All dependencies are managed through npm. Badges display the latest available versions from the npm registry. The project uses semantic versioning (^) for flexible updates within major versions. See
package.jsonfiles for exact version constraints used in this project.
Before you begin, ensure you have the following installed:
- Node.js (v16.0.0 or higher)
- npm (v7.0.0 or higher)
- MongoDB (v4.4 or higher) - For data persistence across all features
- Google Gemini AI API Key (for AI-powered text extraction and notes generation)
- LongCat API Key (optional - for AI Assistant alternative models)
- GitHub Personal Access Token (optional - for GitHub Models: GPT-4o, Claude, etc.)
git clone https://github.com/H0NEYP0T-466/Pen2PDF.git
cd Pen2PDFnpm installcd backend
npm installEnsure MongoDB is running on your system. The application uses multiple databases:
# Start MongoDB service (varies by OS)
# macOS (with Homebrew): brew services start mongodb-community
# Ubuntu: sudo systemctl start mongod
# Windows: net start MongoDBThe application will automatically create the following databases:
todolist- For todo management datatimetable- For timetable and schedule datanotes- For notes and study materialschat- For AI assistant chat history
Create a .env file in the backend directory:
cd backend
touch .envAdd your API keys to the .env file:
# Required: Google Gemini API for text extraction and notes generation
GEMINI_API_KEY=your_google_gemini_api_key_here
# Optional: LongCat API for AI Assistant alternative models
LONGCAT_API_KEY=your_longcat_api_key_here
# Optional: GitHub Personal Access Token for GitHub Models (GPT-4o, Claude, etc.)
# Get your PAT from https://github.com/settings/tokens with model access scope
githubModelsPAT=your_github_pat_hereGitHub Models Setup (Optional): To use GitHub Models (GPT-4o, GPT-4, Claude, etc.) in the AI Assistant:
- Visit https://github.com/settings/tokens
- Create a new Personal Access Token (classic)
- The exact scope requirements may depend on your GitHub subscription
- For GitHub Models access, your account needs GitHub Copilot or GitHub Models access
- Ensure you have access to GitHub Models (included with GitHub Copilot or Student Developer Pack)
- Copy the token and add it as
githubModelsPATin your.envfile - The AI Assistant will automatically discover available models at runtime via the GitHub Models API
Note: Without a GitHub PAT, the AI Assistant will still work with LongCat and Gemini models. GitHub Models will be shown as "unavailable" in the model selector.
cd backend
node index.jsnpm run devThe application will be available at http://localhost:5173 (frontend) and the backend API at http://localhost:8000.
The Pen2PDF Suite provides six main productivity tools accessible from the landing page. Each tool is designed to handle specific aspects of your workflow:
- ๐ค Upload Files: Drag and drop or click to upload PDF, PPT, PPTX, or image files
- ๐ Reorder Files: Use the up/down arrows to arrange files in the desired order
- ๐ค Extract Text: Click "Extract All" to process files using AI text extraction
- โ๏ธ Edit Content: Use the markdown editor to refine and format the extracted text
- ๐ Export: Download as PDF or markdown file
| Format | Description | Notes |
|---|---|---|
| Portable Document Format | Supports text and image-based PDFs | |
| PPT/PPTX | PowerPoint Presentations | Extract text from slides |
| PNG/JPG/WebP | Image Files | OCR text extraction from images |
- โ Add Entries: Create individual timetable entries with subject, teacher, room, and timing details
- ๐ Import Data: Upload CSV, XLSX, or XLS files with bulk timetable data
- ๐ View Schedule: Browse your organized weekly schedule
- โ๏ธ Edit Entries: Modify existing timetable entries as needed
- ๐๏ธ Manage Data: Delete individual entries or clear entire schedule
Your import file should contain these columns:
Subject Name, Teacher Name, Class Number, Class Type, Timings, Day
- ๐ Create Cards: Add new todo cards for different projects or categories
- โ Add Subtasks: Break down cards into specific actionable subtasks
- ๐ Pin Important: Pin high-priority subtasks for easy access
- โ Track Progress: Mark subtasks as completed to monitor progress
- ๐ View Analytics: See completion statistics and progress overview
- ๐ค Upload Content: Upload files (PDF, PPTX, etc.) for note generation
- ๐ค Generate Notes: AI creates structured study notes from your content
- โ๏ธ Edit Notes: Refine generated notes using the markdown editor
- ๐พ Save to Library: Store notes in your personal notes library
- ๐ Browse Library: Access and search through your saved notes collection
- ๐ Blank Notes: Create notes from scratch without file upload
- ๐ฌ Start Chat: Open AI Assistant from the landing page
- ๐ Select Model: Choose from LongCat or Gemini models in the dropdown
- LongCat models: Fast chat and thinking modes
- Gemini models: Advanced AI with file upload support
- ๐ Upload Files (Gemini only): Click upload button to add files as context
- ๐ Add Notes Context:
- Open context panel
- Search for relevant notes
- Check notes to include them as context
- ๐ฌ Send Messages: Type your message and press Enter or click Send
- ๐ง Context-Aware Chat: AI remembers your last 20 messages for better conversations
- ๐ Rich Formatting: AI responses render with markdown, code blocks, and LaTeX math
- ๐พ Conversation History: Your chat is automatically saved and loaded on next visit
- ๐ Switch Models: Change models anytime to suit your needs
- ๐ Landing Page: Access all six tools from the main dashboard
- ๐ Easy Return: Navigate back to the main menu from any tool
- ๐ฑ Mobile Friendly: All features work seamlessly on mobile devices
Pen2PDF/
โโโ ๐ public/ # Static assets
โ โโโ favi.png # Favicon
โโโ ๐ src/ # Frontend source code
โ โโโ App.jsx # Main React application
โ โโโ App.css # Application styles
โ โโโ main.jsx # React entry point
โ โโโ index.css # Global styles
โ โโโ ๐ components/ # React components
โ โโโ ๐ LandingPage/ # Main dashboard
โ โ โโโ LandingPage.jsx
โ โ โโโ LandingPage.css
โ โโโ ๐ Notes/ # Notes generation & library
โ โ โโโ Notes.jsx
โ โ โโโ Notes.css
โ โโโ ๐ Timetable/ # Schedule management
โ โ โโโ Timetable.jsx
โ โ โโโ Timetable.css
โ โโโ ๐ TodoList/ # Task management
โ โ โโโ TodoList.jsx
โ โ โโโ TodoList.css
โ โโโ ๐ AIAssistant/ # AI chat assistant
โ โ โโโ AIAssistant.jsx
โ โ โโโ AIAssistant.css
โ โโโ ๐ WeekCounter/ # Week counter widget
โ โโโ WeekCounter.jsx
โ โโโ WeekCounter.css
โโโ ๐ backend/ # Backend server
โ โโโ ๐ controller/ # Request handlers
โ โ โโโ controller.js # Pen2PDF text extraction
โ โ โโโ dbcontroller.js # TodoList management
โ โ โโโ timetableController.js # Timetable management
โ โ โโโ notesController.js # Notes management
โ โ โโโ whiteboardController.js # Whiteboard management
โ โ โโโ chatController.js # Chat history management
โ โโโ ๐ model/ # Database models
โ โ โโโ todoData.js # Todo data schema
โ โ โโโ timetableData.js # Timetable data schema
โ โ โโโ notesData.js # Notes data schema
โ โ โโโ whiteboardData.js # Whiteboard data schema
โ โ โโโ chatData.js # Chat history schema
โ โโโ ๐ config/ # Database configuration
โ โ โโโ database.js # MongoDB connections
โ โโโ ๐ gemini/ # Gemini AI integration
โ โ โโโ gemini.js # Pen2PDF text extraction
โ โ โโโ notesgemini.js # Notes generation
โ โโโ ๐ longcat/ # LongCat AI integration
โ โ โโโ longcat.js # Chat API integration
โ โโโ index.js # Express server entry point
โ โโโ package.json # Backend dependencies
โโโ ๐ README.md # Project documentation
โโโ ๐ CHAT_CONTEXT_GUIDE.md # Chat context & formatting guide
โโโ ๐ TIMETABLE_IMPORT_GUIDE.md # Timetable import guide
โโโ ๐ sample_timetable.csv # Example timetable format
โโโ ๐ LICENSE # MIT License
โโโ ๐ CONTRIBUTING.md # Contribution guidelines
โโโ ๐ package.json # Frontend dependencies
โโโ ๐ vite.config.js # Vite configuration
โโโ ๐ eslint.config.js # ESLint configuration
โโโ ๐ index.html # HTML template
This project currently does not use any Git submodules. All dependencies are managed through npm package managers and are listed in the respective package.json files.
If you're looking to extend Pen2PDF with additional modules, please refer to our Contributing Guidelines for best practices on project architecture and integration.
We welcome contributions! Please see our Contributing Guidelines for details on:
- ๐ง Setting up the development environment
- ๐ Code style and formatting requirements
- ๐งช Testing procedures
- ๐ Submitting pull requests
- ๐ Reporting bugs
- ๐ก Requesting features
This project is licensed under the MIT License - see the LICENSE file for details.
We take security seriously. If you discover a security vulnerability, please see our Security Policy for information on how to report it responsibly.
This project follows the Contributor Covenant Code of Conduct. Please read our Code of Conduct to understand the expected behavior when participating in our community.
- ๐ Pen2PDF: AI-powered text extraction using Google Gemini from multiple file formats
- ๐ Timetable: Complete schedule management with Excel/CSV import functionality
- โ TodoList: Task management with subtasks, pinning, and progress tracking
- ๐ Notes: AI-powered notes generation and searchable notes library
- ๐จ Whiteboard: Full-featured digital whiteboard with drawing, text, images, and export
- ๐ค AI Assistant (Bella): Multi-model AI chat with file upload and notes context
- ๐จ Unified Interface: Consistent design across all productivity tools
- ๐ฑ Responsive Design: Full mobile and desktop compatibility
- ๐ Data Persistence: MongoDB integration for all features
- ๐ Cross-feature Integration: Link notes to specific timetable subjects and todo tasks
- ๐ Analytics Dashboard: Usage statistics and productivity insights across all tools
- ๐ฏ Smart Suggestions: AI-powered recommendations based on usage patterns
- ๐ Global Search: Search across all notes, todos, and timetable entries
- ๐ Calendar Integration: Sync timetable with external calendar applications
- โ๏ธ Cloud Sync: Multi-device synchronization and backup
- ๐ฅ Collaboration: Share timetables, notes, and todo lists with team members
- ๐ฑ Mobile Apps: Native iOS and Android applications
- ๐ API Integrations: Connect with popular productivity and educational tools
- ๐ Academic Features: GPA tracking, assignment deadlines, exam scheduling
- ๐ค Advanced AI: Multi-provider AI support (OpenAI, Claude, etc.)
- ๐ Progress Analytics: Detailed productivity metrics and goal tracking
- ๐จ Customization: Themes, templates, and personalized workflows
- Google Gemini AI - Powering our intelligent text extraction
- React Team - For the amazing frontend framework
- Vite - For blazing fast development experience
- html2pdf.js - For client-side PDF generation
- Marked - For markdown parsing and rendering
- Express.js - For robust backend API development
Made with โค๏ธ by H0NEYP0T-466