Open Source · Free Forever

The Smartboard Tool
built for modern classrooms

Annotate PDFs, draw shapes, present lessons, and export — all in real time, from any device. No subscription required.

⭐ Star on GitHub 🚀 Get Started 📖 See Features
Maples Academy Smartboard Tool demo — annotating a PDF with pen and shapes in real time
25+ Drawing Tools
15+ Shape Types
100% Free & Open Source
Any Device Ready
4K PDF Quality

Everything you need

A complete classroom presentation toolkit

Maples Academy Smartboard Tool replaces physical whiteboards, clunky desktop software, and expensive smartboard subscriptions — in your browser, for free.

📄

High-Resolution PDF Viewer

Renders PDFs at 2560px equivalent resolution. Quality never degrades on resize or zoom — text stays crisp on every projector and monitor.

✏️

Freehand Drawing

Pen, calligraphy, and highlighter tools with smooth Bézier curves, coalesced pointer events, and per-stroke opacity control.

15+ Geometric Shapes

Rectangle, ellipse, triangle, diamond, star, heart, cloud, pentagon, hexagon, octagon, cross, cylinder, parallelogram, and more — each with a live ghost preview while drawing.

📈

Graph / Coordinate Plane

Insert a labelled coordinate grid with a single drag. Perfect for maths and science lessons — no third-party charting library needed.

T

Text Annotations

8 font families including handwriting and dyslexia-friendly faces. Custom font size, colour, and multi-line support.

🖼

Image Insert

Drag and drop images directly onto the slide or use the image button. Any PNG, JPEG, GIF, or WebP is accepted.

↩️

Full Undo / Redo History

Deterministic annotation history with Ctrl+Z / Ctrl+Y. Every stroke, shape, and deletion is reversible.

☁️

Cloud Sync via Supabase

All annotations are saved to Supabase in real time. Open the same document on another device and pick up exactly where you left off.

📱

Mobile Upload via QR Code

Scan the QR code from any phone to upload documents wirelessly to the active session without email or USB.

▶️

Present Mode

One click hides all UI chrome — sidebar, toolbar, page counter — leaving only the slide and your annotations. Ideal for projectors.

📥

PDF Export with Annotations

Export the entire presentation including all drawings, shapes, and text annotations as a standard PDF with one click from the top bar.

🔍

Zoom, Pan & Pinch

Mouse wheel zoom, click-drag pan, pinch-to-zoom on tablets. Double-click to reset. Ctrl+scroll for precision zoom.

Grid Overlay

Toggle a dot grid or ruled lines over the slide — helpful for aligned drawing and graph explanations.

🔴

Laser Pointer Mode

A glowing red dot tracks your cursor across the slide during presentations — no physical pointer stick needed.

⚙️

Comprehensive Settings

4-tab settings panel: Canvas, Tools, Document, and View. Rename documents, check annotation stats, configure auto-hide behaviour, and more.

Draggable UI

Your toolbar, your way

The floating drawing toolbar can be dragged anywhere on screen with the six-dot grip handle. Double-click the grip to snap it back to the default bottom-centre position.

The separate Shapes & Graph panel is its own draggable floating window — keep it open while you draw shape after shape without re-opening a dropdown.

Draggable toolbar and shapes panel in the Maples Academy Smartboard Tool

Ghost Shape Preview

See shapes before you commit them

Every shape tool shows a live dotted ghost outline as you drag — matching the exact shape that will be placed on release. A size badge shows the bounding box dimensions in real time.

Lines and arrows preview endpoint-to-endpoint. Freehand strokes render live as you draw. Nothing appears unexpectedly.

Ghost shape preview on mobile — dotted outline tracks pointer while drawing

Full tool inventory

Every tool a teacher needs

25 drawing and annotation tools, all accessible from the floating dock or the shapes panel.

Select
Pan
Pen
✒️Calligraphy
Highlighter
🧹Pixel Eraser
Object Eraser
Rectangle
Ellipse
Triangle
Rt Triangle
Diamond
Parallelogram
Pentagon
Hexagon
Octagon
Cross
Star
Heart
Cloud
Cylinder
Line
Arrow
TText
📈Graph
🖼Image

Simple workflow

From zero to presenting in 4 steps

No training needed. Open the app, load a PDF or start a blank canvas, and teach.

Sign in or run locally

Use Supabase auth for cloud sync and multi-device access, or just run pnpm dev and open localhost:3000 without a backend.

Open a PDF or start blank

Import any PDF from the dashboard or start a 16:9 blank slide presentation. PDFs render at full 4K quality automatically.

Annotate and present

Use the floating toolbar to draw, write, place shapes and text. Hit Present to hide all controls and project the clean slide.

Export as PDF

Click Export PDF in the top bar to download the full presentation with all annotations baked into a standard PDF file.

Technology

Built on a solid modern stack

▲ Next.js 15 ⚛ React 19 📘 TypeScript 5 🗄 Supabase 📄 PDF.js 4.3 📦 pdf-lib 🔑 Supabase SSR Auth 🧪 Vitest 🎨 Vanilla CSS 🔲 SVG Canvas

App structure

Routes and pages

Route Page Description
/LandingEntry point — redirects authenticated users to the dashboard.
/sign-inSign InEmail/password login. Redirects to /dashboard on success.
/dashboardDashboardBrowse, open, and manage saved documents. Shows recent activity.
/viewerSmartboard ViewerThe main workspace — PDF viewer, annotation tools, present mode, export.
/documentsDocuments LibraryFull list of saved documents with delete and open actions.
/uploadUpload HubQR code generation for pairing a mobile device to the active session.
/upload/:sessionIdMobile UploadMobile-optimised page opened by scanning the QR code.
/settingsAccount SettingsUser preferences and account management.
/api/importImport APIServer route for optional PPT/PPTX → PDF conversion.

Get started in minutes

Self-host in 3 steps

1

Clone and install

Requires Node.js 20+ and pnpm. Clone the repository and install dependencies.

git clone https://github.com/Heoster/ClassBoard-.git && cd ClassBoard- && pnpm install
2

Configure environment

Create a .env.local file with your Supabase project credentials. The app works locally without Supabase — cloud sync and auth require these values.

NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-publishable-key
3

Apply database migration and start

Apply supabase/migrations/20260912000000_classboard.sql in your Supabase SQL editor, then start the dev server.

pnpm dev

Open http://localhost:3000

Ready to teach smarter?

Free, open-source, and self-hostable. Star the repo to stay updated with new features.

⭐ Star on GitHub