Skip to content

techymatty/multitool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Multitool

A sleek, dark-themed platform with powerful tools

React Vite TailwindCSS Node.js Express MongoDB License: MIT

Defy gravity. Build faster.


✨ Features

Tool Description
📄 PDF Suite Upload, view, merge and watermark PDF files directly in the browser
⬇️ Media Downloader Paste any YouTube, Instagram, Facebook or Terabox link and download media
🤖 SEO Blog Rephraser Scrape any URL, then let AI rephrase it into an SEO-optimized blog post

🚀 Quick Start

Prerequisites

Tool Version Notes
Node.js ≥ 18.x Backend & frontend
npm ≥ 9.x Package manager
MongoDB Local or Atlas Optional — app runs without DB with degraded features
yt-dlp Latest Required for YouTube downloads — pip install yt-dlp

1. Clone & Install

# Navigate to the project
cd multitool-app

# Install server dependencies
cd server && npm install && cd ..

# Install client dependencies
cd client && npm install && cd ..

2. Configure Environment

cd server
copy .env.example .env

Edit server/.env:

PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/multitool

# Get a free key at https://aistudio.google.com/app/apikey
GEMINI_API_KEY=your_gemini_api_key_here

# Optional — for Instagram/Facebook downloads
RAPIDAPI_KEY=your_rapidapi_key_here

FRONTEND_URL=http://localhost:5173

3. Run (Two Terminals)

Terminal 1 — Backend:

cd server
npm run dev
# API running on http://localhost:5000

Terminal 2 — Frontend:

cd client
npm run dev
# App running on http://localhost:5173

🗂️ Project Structure

multitool-app/
├── server/                  # Express API
│   ├── controllers/         # Business logic
│   │   ├── pdfController.js
│   │   ├── downloaderController.js
│   │   └── seoController.js
│   ├── routes/              # Route definitions
│   │   ├── pdfRoutes.js
│   │   ├── downloaderRoutes.js
│   │   └── seoRoutes.js
│   ├── services/            # External integrations
│   │   ├── ytdlpService.js  # yt-dlp wrapper
│   │   ├── scraperService.js # cheerio + puppeteer
│   │   └── aiService.js     # Gemini / OpenAI
│   ├── models/              # Mongoose schemas
│   │   ├── DownloadHistory.js
│   │   └── BlogDraft.js
│   ├── middleware/
│   │   └── errorHandler.js
│   ├── __tests__/           # Jest unit tests
│   ├── .env.example
│   └── server.js
│
└── client/                  # React + Vite + Tailwind
    ├── src/
    │   ├── api/client.js    # Axios API client
    │   ├── components/
    │   │   ├── layout/      # Sidebar, TopBar, Layout
    │   │   └── ui/          # GlassCard, Spinner, Toast
    │   ├── context/
    │   │   └── AppContext.jsx # Global state (useReducer)
    │   ├── pages/
    │   │   ├── Dashboard.jsx
    │   │   ├── PDFSuite.jsx
    │   │   ├── MediaDownloader.jsx
    │   │   └── SEORephraser.jsx
    │   └── __tests__/       # Vitest unit tests
    ├── tailwind.config.js
    └── vite.config.js

🧪 Running Tests

Server (Jest)

cd server
npm test
# or with coverage:
npm run test:coverage

Client (Vitest)

cd client
npm test
# or with coverage:
npm run test:coverage

📡 API Reference

See server/API.md for the complete API documentation.

Quick Reference

Method Endpoint Description
POST /api/pdf/merge Merge multiple PDFs
POST /api/pdf/watermark Add watermark to PDF
POST /api/pdf/annotate Add text annotation
POST /api/download/info Get media metadata
GET /api/download/stream Stream media download
POST /api/seo/rephrase Scrape + AI rephrase
GET /api/seo/drafts List saved drafts
GET /api/health Server health check

🔑 Environment Variables

Variable Required Description
PORT No (default: 5000) Server port
MONGODB_URI No MongoDB connection string
GEMINI_API_KEY For SEO tool Google AI Studio key
OPENAI_API_KEY Alternative to Gemini OpenAI API key
RAPIDAPI_KEY For social downloads RapidAPI key
RAPIDAPI_HOST With RapidAPI key API host
FRONTEND_URL No (default: localhost:5173) CORS origin

🎨 Design System

Multitool uses a custom glass-morphism dark theme with:

  • Background: #050508 — near-black space
  • Primary: #7C3AED — electric violet
  • Accent: #06B6D4 — cyan
  • Fonts: Inter (body) + Outfit (display) + JetBrains Mono (code)
  • Animations: floating elements, glow pulses, smooth slide-ups

🚧 Known Limitations

  1. YouTube: Requires yt-dlp binary installed on the server. High-quality (4K+) downloads need ffmpeg.
  2. Instagram/Facebook/Terabox: Requires a RapidAPI subscription. Without a key, these platforms show "requires configuration."
  3. SEO Rephraser: Requires a Gemini or OpenAI API key. Without a key, the tool shows a configuration message.
  4. PDF Size: In-memory PDF processing — very large PDFs (>50MB) may slow the server.

🤝 Contributing

See CONTRIBUTING.md for guidelines.


📜 License

MIT © Multitool

About

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors