Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions templates/markup/assets/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added templates/markup/assets/screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
45 changes: 45 additions & 0 deletions templates/markup/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { Output, randomPassword, randomString, Services } from "~templates-utils";
import { Input } from "./meta";

export function generate(input: Input): Output {
const services: Services = [];
const databasePassword = randomPassword();
const cookiePassword = randomString(32);

services.push({
type: "postgres",
data: {
serviceName: `${input.appServiceName}-db`,
password: databasePassword,
},
});

services.push({
type: "app",
data: {
serviceName: input.appServiceName,
source: {
type: "image",
image: input.appServiceImage,
},
env: [
`DATABASE_URL=postgresql://postgres:${databasePassword}@$(PROJECT_NAME)_${input.appServiceName}-db:5432/$(PROJECT_NAME)`,
`WORKOS_CLIENT_ID=${input.workosClientId}`,
`WORKOS_API_KEY=${input.workosApiKey}`,
`WORKOS_COOKIE_PASSWORD=${cookiePassword}`,
`NEXT_PUBLIC_WORKOS_REDIRECT_URI=${input.workosRedirectUri}`,
`NEXT_PUBLIC_SITE_URL=https://$(EASYPANEL_DOMAIN)`,
`NEXT_PUBLIC_DB_PROVIDER=postgres`,
`NODE_ENV=production`,
].join("\n"),
domains: [
{
host: "$(EASYPANEL_DOMAIN)",
port: 3000,
},
],
},
});

return { services };
}
99 changes: 99 additions & 0 deletions templates/markup/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Markup
description:
A fast, keyboard-first markdown workspace with live preview, graph view,
whiteboards, mind maps, spotlight search, and cloud sync. Self-hosted with
PostgreSQL and WorkOS auth.
instructions:
After deployment, configure WorkOS AuthKit at workos.com — create an app, add
your domain, and set the redirect URI to https://<your-domain>/callback/. Set
WORKOS_CLIENT_ID, WORKOS_API_KEY, WORKOS_COOKIE_PASSWORD (min 32 chars),
NEXT_PUBLIC_WORKOS_REDIRECT_URI, and NEXT_PUBLIC_SITE_URL before starting.
changeLog:
- date: "2026-05-25"
description: Initial release (v1.1.3)
links:
- label: Website
url: https://home.markup.freddiephilpot.dev
- label: GitHub
url: https://github.com/pphilfre/markup
- label: Documentation
url: https://github.com/pphilfre/markup#readme
contributors:
- name: Ahson Shaikh
url: https://github.com/Ahson-Shaikh
schema:
type: object
required:
- appServiceName
- appServiceImage
- workosClientId
- workosApiKey
- workosRedirectUri
properties:
appServiceName:
type: string
title: App Service Name
default: markup
appServiceImage:
type: string
title: App Service Image
default: ghcr.io/pphilfre/markup:main
workosClientId:
type: string
title: WorkOS Client ID
description:
From your WorkOS dashboard — Applications → your app → Client ID.
workosApiKey:
type: string
title: WorkOS API Key
description: From your WorkOS dashboard — API Keys.
workosCookiePassword:
type: string
title: WorkOS Cookie Password
description:
Random secret string (minimum 32 characters) used to encrypt the session
cookie.
workosRedirectUri:
type: string
title: WorkOS Redirect URI
description:
Must match the redirect URI configured in WorkOS. Example —
https://your-domain.com/callback/.
benefits:
- title: Keyboard-First Editing
description:
Designed for speed — navigate, search, and write entirely from the
keyboard with spotlight search and shortcuts.
- title: Rich Markdown Rendering
description:
Live preview with GitHub Flavored Markdown, math (KaTeX), syntax
highlighting, and Mermaid diagrams.
- title: Multiple Workspace Modes
description:
Switch between editor, split-view, graph, whiteboard, and mind-map modes
for different thinking styles.
- title: Cloud Sync with Auth
description:
PostgreSQL-backed cloud sync per authenticated user via WorkOS AuthKit —
notes and tabs stay in sync.
features:
- title: Spotlight Search
description:
Search files, folders, features, and text lines from a single
keyboard-driven command palette.
- title: Graph View
description:
Visualize backlinks and note connections in an interactive force-directed
graph.
- title: Note Sharing
description:
Share notes publicly or privately with a read-only rendered view.
- title: Folder Organization
description:
Organize notes with folders, colors, pinning, tags, and custom note icons.
tags:
- markdown
- editor
- notes
- productivity
- nextjs