Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

indianic/deckforge

Open more actions menu

Repository files navigation

DeckForge

The presentation platform for teams that care about brand.

DeckForge is a self-hostable, AI-assisted presentation platform. It gives an entire organization a shared, brand-governed slide library, AI generation that respects your brand, secure trackable sharing, and a code-level (HTML/CSS) slide editor — one tool for the whole presentation lifecycle.

Slides are real HTML/CSS rendered with Handlebars against per-brand variables, so a single master slide re-skins itself to any brand automatically. No lock-in to a proprietary slide format.

DeckForge slide editor


Features

  • Master slide library — a central repository of reusable, on-brand slides. Categorize, search, lock, and publish; updates propagate to dependent decks.
  • Brand engine — logo, typefaces, and OKLCH color tokens defined once per workspace and auto-applied to every new deck.
  • Brand-aware AI generation — describe a slide in plain English and DeckForge generates editable HTML/CSS that already matches your brand. Bring your own provider (Anthropic, OpenAI-compatible, or custom endpoints).
  • Code-level editor — CodeMirror-based HTML/JSON editing with live preview, Handlebars variables, and a "save as master" workflow.
  • Secure sharing & analytics — public, time-bound, password-protected, or invite-only links; forward-only navigation, PDF-download control, and white-label sharing that hides DeckForge branding.
  • Passwordless auth — magic-link login plus optional Google OAuth. No passwords to manage.
  • Role-based collaboration — Admin / Manager / Contributor roles with per-workspace isolation.
  • Media manager — upload and manage assets via MinIO / S3-compatible storage (with a local-filesystem fallback for development).

Tech stack

Layer Technology
Framework Next.js 14 (App Router), React 18, TypeScript
Styling Tailwind CSS, OKLCH design tokens
Database PostgreSQL via Drizzle ORM
Slides Handlebars-templated HTML/CSS
Auth Magic-link (passwordless) + Google OAuth, JWT sessions
AI Anthropic SDK + pluggable custom LLM providers
Storage MinIO / S3-compatible (local filesystem fallback)
Email SendGrid or SMTP (via Nodemailer)

Getting started

Prerequisites

  • Node.js 20+ and pnpm
  • PostgreSQL 14+
  • (Optional) MinIO or any S3-compatible bucket for asset storage
  • (Optional) An LLM API key (e.g. Anthropic) — or set MOCK_LLM=true to skip real calls during development

1. Install

git clone https://github.com/indianic/deckforge.git
cd deckforge
pnpm install

2. Configure environment

Copy the example env file and fill in your values:

cp .env.example .env.local

At minimum set DATABASE_URL, NEXT_PUBLIC_APP_URL, and a 32+ character JWT_SECRET. See .env.example for the full list (email, OAuth, AI, and storage settings are optional and documented inline).

3. Set up the database

Create the database, then apply migrations:

createdb deckforge            # or use your existing Postgres instance
pnpm db:migrate               # apply schema migrations

4. Seed the first workspace & admin user

pnpm db:seed

This creates a workspace and an admin user (admin@deckforge.test by default — override with ADMIN_EMAIL / ADMIN_NAME).

5. Run

pnpm dev

The app starts at http://localhost:56001.

6. Log in

DeckForge uses passwordless magic-link auth. Generate a login link for your seeded user without needing email delivery:

pnpm bootstrap:magic-link admin@deckforge.test

Open the printed URL in your browser.


Available scripts

Script Description
pnpm dev Start the dev server on port 56001
pnpm build / pnpm start Production build / serve
pnpm lint ESLint
pnpm typecheck TypeScript type check (tsc --noEmit)
pnpm db:generate Generate a Drizzle migration from schema changes
pnpm db:migrate Apply pending migrations
pnpm db:studio Open Drizzle Studio
pnpm db:seed Seed the first workspace + admin user
pnpm bootstrap:magic-link Generate a one-time login link for a user

Project structure

app/          Next.js App Router — pages, layouts, and API routes
components/   React UI components (editor, master-slide, media, ui primitives)
lib/          Core logic — auth, db (Drizzle schema), AI providers, API client
hooks/        Reusable React hooks (auto-save, lock heartbeat)
stores/       Zustand client state
drizzle/      SQL migrations and Drizzle config
scripts/      Seeding, migration, and setup utilities
services/     Auxiliary services (e.g. markitdown document conversion)
public/       Static assets

Configuration notes

  • AI providers — configure Anthropic or any OpenAI-compatible / custom endpoint in-app under Settings → AI Providers. Set MOCK_LLM=true to develop without an API key.
  • Object storage — leave MINIO_ENDPOINT unset to use the local filesystem fallback (public/uploads/). Set MinIO/S3 credentials to use a real bucket.
  • Email — SendGrid is used when SENDGRID_API_KEY is set; otherwise it falls back to SMTP (e.g. a local Mailpit/Mailcatcher for development).

Contributing

Issues and pull requests are welcome. Please run pnpm lint and pnpm typecheck before submitting.

License

Released under the MIT License. © 2026 IndiaNIC Infotech Ltd.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.