Skip to content

appedme/slideforge

Repository files navigation

Here's a complete README.md plan for your web-based PowerPoint editor built with Next.js, titled:


🖼️ SlideForge — Edit Your PPTX Files Online

SlideForge is a modern web app that lets users upload .pptx files, edit slide content visually in the browser, and export updated PowerPoint presentations — all powered by a clean and intuitive Next.js frontend. No plugins, no installations. Just drag, edit, and export.


🌟 Features

  • ✅ Upload .pptx files
  • 🧠 Extract slides and convert to editable JSON
  • 📝 Visual editor for titles, bullet points, and basic layout
  • 📤 Re-export edited slides back to .pptx
  • 💡 Future: Add image support, themes, and animations

🔧 Tech Stack

Layer Tech Used
Framework Next.js 15 (App Router)
Styling Tailwind CSS + ShadCN UI
File Parser JSZip, DOMParser
Slide Gen PptxGenJS
State Mgmt Zustand / Context API
Drag UI React DnD / React Grid Layout (future)
Hosting Vercel / Netlify

📁 Project Structure

slideforge/
│
├── app/                        # Next.js App Router pages
│   ├── upload/                # Upload page
│   ├── editor/                # Slide editor UI
│   └── api/                   # API routes if needed
│
├── components/                # UI components (SlideCard, Sidebar, etc.)
├── lib/                       # Utilities (pptx parser, pptx builder)
├── public/                    # Static assets
├── styles/                    # Tailwind & global CSS
├── package.json
└── README.md

🚀 Getting Started

1. Clone the Repository

git clone https://github.com/your-username/slideforge.git
cd slideforge

2. Install Dependencies

npm install
# or
yarn

3. Run Locally

npm run dev

Open http://localhost:3000


🔄 Workflow Overview

🟢 Upload .pptx

  • Use <input type="file"> or react-dropzone
  • Accept only .pptx
  • Convert file to ArrayBuffer

📦 Parse .pptx → JSON

  • Use JSZip to unzip .pptx

  • Read ppt/slides/slide*.xml files

  • Use DOMParser to extract:

    • Slide titles
    • Bullet points
    • Text boxes
  • Convert to a JSON format:

[
  { title: "Welcome", bullets: ["Intro", "Agenda"], notes: "" },
  ...
]

🖼️ Render Slide Editor

  • Each slide rendered using React
  • Use input or contentEditable fields
  • Add buttons: “Add Slide”, “Delete”, “Reorder”
  • Optional rich text editor via Slate.js or Lexical

💾 Export → .pptx

  • Take modified JSON
  • Use PptxGenJS to recompile
  • Allow user to download .pptx file

📦 Key Dependencies

"dependencies": {
  "next": "^15.x",
  "react": "^18.x",
  "react-dom": "^18.x",
  "pptxgenjs": "^3.x",
  "jszip": "^3.x",
  "tailwindcss": "^3.x",
  "zustand": "^4.x"
}

📌 TODO / Roadmap

  • Upload .pptx
  • Extract text from slides
  • Basic slide editor UI
  • Export updated .pptx
  • Image and media support
  • Rich text styling (fonts, colors)
  • Slide templates & themes
  • Multi-user real-time editing (collaboration)
  • Mobile responsiveness

📤 Export Format (JSON → PPTX)

Each slide object should follow this format:

{
  title: "Slide Title",
  bullets: ["Point 1", "Point 2"],
  notes: "Speaker notes",
  layout: "title-bullets",
}

📸 UI Preview (mockup suggestion)

+----------------------------+
|  Slide Sidebar            |
|  [Slide 1]                |
|  [Slide 2]                |
|  [ + Add Slide ]          |
+----------------------------+   +------------------------+
                               |   Title: [__________]   |
                               |   Bullet: [__________]  |
                               |   [ Save ] [ Export ]   |
                               +------------------------+

🧠 Inspiration

  • Google Slides
  • Pitch.com
  • OnlyOffice
  • PptxGenJS Playground

📜 License

MIT


Would you like me to generate the starter code (upload.tsx, editor.tsx, parser code, etc.) next?

About

AI Slideshow generator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published