Here's a complete README.md plan for your web-based PowerPoint editor built with Next.js, titled:
SlideForge is a modern web app that lets users upload
.pptxfiles, 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.
- ✅ Upload
.pptxfiles - 🧠 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
| 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 |
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
git clone https://github.com/your-username/slideforge.git
cd slideforgenpm install
# or
yarnnpm run dev- Use
<input type="file">orreact-dropzone - Accept only
.pptx - Convert file to
ArrayBuffer
-
Use
JSZipto unzip.pptx -
Read
ppt/slides/slide*.xmlfiles -
Use
DOMParserto extract:- Slide titles
- Bullet points
- Text boxes
-
Convert to a JSON format:
[
{ title: "Welcome", bullets: ["Intro", "Agenda"], notes: "" },
...
]- Each slide rendered using React
- Use
inputorcontentEditablefields - Add buttons: “Add Slide”, “Delete”, “Reorder”
- Optional rich text editor via
Slate.jsorLexical
- Take modified JSON
- Use
PptxGenJSto recompile - Allow user to download
.pptxfile
"dependencies": {
"next": "^15.x",
"react": "^18.x",
"react-dom": "^18.x",
"pptxgenjs": "^3.x",
"jszip": "^3.x",
"tailwindcss": "^3.x",
"zustand": "^4.x"
}- 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
Each slide object should follow this format:
{
title: "Slide Title",
bullets: ["Point 1", "Point 2"],
notes: "Speaker notes",
layout: "title-bullets",
}+----------------------------+
| Slide Sidebar |
| [Slide 1] |
| [Slide 2] |
| [ + Add Slide ] |
+----------------------------+ +------------------------+
| Title: [__________] |
| Bullet: [__________] |
| [ Save ] [ Export ] |
+------------------------+
- Google Slides
- Pitch.com
- OnlyOffice
- PptxGenJS Playground
MIT
Would you like me to generate the starter code (upload.tsx, editor.tsx, parser code, etc.) next?