Skip to content
Merged
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
14 changes: 14 additions & 0 deletions 404.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,22 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/svg+xml" href="/assets/logo.svg">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<title>Not found - 207 Studio</title>
<meta name="description" content="Page not found.">
<meta property="og:title" content="Not found - 207 Studio">
<meta property="og:description" content="Page not found.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://207studio.dev/404.html">
<meta property="og:image" content="https://207studio.dev/assets/og-207studio.png">
<meta property="og:site_name" content="207 Studio">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Not found - 207 Studio">
<meta name="twitter:description" content="Page not found.">
<meta name="twitter:image" content="https://207studio.dev/assets/og-207studio.png">
<meta name="twitter:site" content="@207_studio">
<style>
:root{--bg:#fafbf8;--ink:#102b32;--muted:#52646a;--line:#d6dedb;--lime:#d5f66b}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
Expand Down
2 changes: 1 addition & 1 deletion _products/site-data.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"base_url": "https://207studio.dev",
"last_updated": "2026-10-18",
"last_updated": "2026-10-24",
"support_email": "support@207studio.dev",
"listing": {
"title": "Products – Developer Kits and Classroom Tools | 207 Studio",
Expand Down
16 changes: 16 additions & 0 deletions about/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,23 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/svg+xml" href="/assets/logo.svg">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<title>About 207 Studio</title>
<meta name="description" content="207 Studio is an independent, teacher-led software studio in South Korea making developer kits and classroom tools.">
<link rel="canonical" href="https://207studio.dev/about/">
<meta property="og:title" content="About 207 Studio">
<meta property="og:description" content="207 Studio is an independent, teacher-led software studio in South Korea making developer kits and classroom tools.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://207studio.dev/about/">
<meta property="og:image" content="https://207studio.dev/assets/og-207studio.png">
<meta property="og:site_name" content="207 Studio">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="About 207 Studio">
<meta name="twitter:description" content="207 Studio is an independent, teacher-led software studio in South Korea making developer kits and classroom tools.">
<meta name="twitter:image" content="https://207studio.dev/assets/og-207studio.png">
<meta name="twitter:site" content="@207_studio">
<style>
:root{--bg:#fafbf8;--ink:#102b32;--muted:#52646a;--line:#d6dedb;--lime:#d5f66b}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
Expand All @@ -21,6 +35,7 @@
<body><main class="wrap">
<h1>About 207 Studio</h1>
<p>207 Studio is an independent software studio in South Korea, led by an elementary school teacher. We build practical tools for teaching, classroom presentation and assessment, and we sell the engines behind them as source-included developer kits.</p>
<p>Founded by Jang Yuil (장유일).</p>
<p>Everything we sell is a one-time purchase with full source code. There are no subscriptions. Personal tiers are for one person; Commercial tiers cover a company or organisation with annual revenue up to US$1M. Above that, we offer a separately negotiated Enterprise license.</p>
<h2>What we sell</h2>
<ul>
Expand All @@ -31,6 +46,7 @@ <h2>What we sell</h2>
<li><a href="/products/qr-cropper/">QR Answer-Sheet Cropper – Crop Every Answer Box</a>: Print a QR on each sheet, scan a mixed batch, and get every answer cell back as a clean, aligned image.</li>
<li><a href="/products/voice-command-engine/">Context-Gated Voice Commands – Offline</a>: A Rust library and CLI that infers the current situation from audio features and lets through only the voice commands that fit it.</li>
<li><a href="/products/shapefit/">ShapeFit – Hold-to-Shape for Swift &amp; Rust</a>: Turn a hand-drawn stroke into a clean line, circle, rectangle or polygon when the user pauses, for your own drawing app.</li>
<li><a href="/products/send-approval-gate-mcp/">Send Approval Gate MCP: Plan, Approve, Send, Verify</a>: An MCP server that makes an AI agent plan, present an exact hash-bound approval, send once and verify, and records every step.</li>
<li><a href="/products/exam-sheet-builder/">Exam + OMR Sheet Builder – Paper, Sheet &amp; Key</a>: Write an exam once and print a matching exam paper, OMR answer sheet, answer key, explanation sheet and cover page.</li>
<li><a href="/products/classroom-html-tools/">Offline Classroom Tools – Seating, PACER Timer</a>: Four single-file classroom tools: a seating chart with attendance, a morning board, a fitness test recorder and Wi-Fi QR cards.</li>
</ul>
Expand Down
Binary file added apple-touch-icon.png
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 assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions 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 assets/og-207studio.png
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 assets/og-pairy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 9 additions & 2 deletions blog/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#102b32">
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Crect width='40' height='40' rx='9' fill='%23102b32'/%3E%3Cpath d='M10 12h20v4L20 29h-6l10-13H10z' fill='%23d5f66b'/%3E%3C/svg%3E">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/svg+xml" href="/assets/logo.svg">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="stylesheet" href="/products/products.css">
<link rel="stylesheet" href="/blog/blog.css">
<title>Writing – notes on browser rendering and classroom tools | 207 Studio</title>
Expand All @@ -14,8 +16,13 @@
<meta property="og:description" content="Practical notes from 207 Studio on rendering documents in the browser, offline classroom tools, and the code behind them.">
<meta property="og:type" content="article">
<meta property="og:url" content="https://207studio.dev/blog/">
<meta property="og:image" content="https://207studio.dev/assets/products/pptx-player-sdk-1200.jpg">
<meta property="og:site_name" content="207 Studio">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Writing – notes on browser rendering and classroom tools | 207 Studio">
<meta name="twitter:description" content="Practical notes from 207 Studio on rendering documents in the browser, offline classroom tools, and the code behind them.">
<meta name="twitter:image" content="https://207studio.dev/assets/products/pptx-player-sdk-1200.jpg">
<meta name="twitter:site" content="@207_studio">
</head>
<body>
<header class="site-header wrap"><a class="brand" href="/"><span class="brand-mark">207</span><span>STUDIO</span></a><nav aria-label="Main navigation"><a href="/">Home</a><a href="/products/">Products</a><a href="/blog/" aria-current="page">Writing</a></nav></header>
Expand All @@ -27,6 +34,6 @@ <h1>Writing</h1>
<li><h2><a href="/blog/play-pptx-in-browser/">How to play a PPTX in the browser (without PowerPoint)</a></h2><p>Render a .pptx in the browser without a server or Office. What breaks the animations, three ways to do it, and how to test any viewer in five minutes.</p><time datetime="2026-10-20">2026-10-20</time></li>
</ul>
</main>
<footer class="site-footer wrap"><p>207 Studio (207studio.dev), South Korea. Support: <a href="mailto:support@207studio.dev">support@207studio.dev</a></p><p>Last updated 2026-10-18. © 2026 207 Studio</p></footer>
<footer class="site-footer wrap"><p>207 Studio (207studio.dev), South Korea. Support: <a href="mailto:support@207studio.dev">support@207studio.dev</a> · <a href="/about/">About</a></p><p>Last updated 2026-10-24. © 2026 207 Studio</p></footer>
</body>
</html>
14 changes: 10 additions & 4 deletions blog/play-pptx-in-browser/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#102b32">
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Crect width='40' height='40' rx='9' fill='%23102b32'/%3E%3Cpath d='M10 12h20v4L20 29h-6l10-13H10z' fill='%23d5f66b'/%3E%3C/svg%3E">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/svg+xml" href="/assets/logo.svg">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="stylesheet" href="/products/products.css">
<link rel="stylesheet" href="/blog/blog.css">
<title>Play a PPTX in the browser without PowerPoint | 207 Studio</title>
Expand All @@ -18,6 +20,10 @@
<meta name="twitter:image" content="https://207studio.dev/assets/products/pptx-player-sdk-1200.jpg">
<meta property="og:site_name" content="207 Studio">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Play a PPTX in the browser without PowerPoint | 207 Studio">
<meta name="twitter:description" content="Render a .pptx in the browser without a server or Office. What breaks the animations, three ways to do it, and how to test any viewer in five minutes.">
<meta name="twitter:image" content="https://207studio.dev/assets/products/pptx-player-sdk-1200.jpg">
<meta name="twitter:site" content="@207_studio">
</head>
<body>
<header class="site-header wrap"><a class="brand" href="/"><span class="brand-mark">207</span><span>STUDIO</span></a><nav aria-label="Main navigation"><a href="/">Home</a><a href="/products/">Products</a><a href="/blog/" aria-current="page">Writing</a></nav></header>
Expand All @@ -26,7 +32,7 @@
<article class="prose">
<h1>How to play a PPTX in the browser (without PowerPoint)</h1>
<p class="post-meta">2026-10-20 · 207 Studio</p>
<figure class="post-figure"><img src="/assets/products/pptx-player-sdk-1200.jpg" alt="PPTX Player SDK diagram: a slide stepped with click 1, click 2, then a morph transition" loading="eager"><figcaption>A deck steps the way PowerPoint plays it: click 1, click 2, then a morph transition between slides.</figcaption></figure>
<figure class="post-figure"><img src="/assets/products/pptx-player-sdk-1200.jpg" width="1200" height="675" alt="PPTX Player SDK diagram: a slide stepped with click 1, click 2, then a morph transition" loading="eager"><figcaption>A deck steps the way PowerPoint plays it: click 1, click 2, then a morph transition between slides.</figcaption></figure>
<h2>TL;DR</h2>
<ul>
<li>There are three ways to show a <code>.pptx</code> in a browser: render it client-side, convert it on your server, or embed a hosted viewer.</li>
Expand Down Expand Up @@ -96,7 +102,7 @@ <h2>FAQ</h2>
<details><summary>Which licence tier do I need?</summary><p>Developer at $14 is one developer, and you can ship the player inside your own paid or free apps as bundled code. Commercial at $129 is for a company or organisation where more than one person uses it, and adds priority email support. Both include the full source. Neither lets you share the source itself.</p></details>
</article>
</main>
<footer class="site-footer wrap"><p>207 Studio (207studio.dev), South Korea. Support: <a href="mailto:support@207studio.dev">support@207studio.dev</a></p><p>Last updated 2026-10-18. © 2026 207 Studio</p></footer>
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Article","@id":"https://207studio.dev/blog/play-pptx-in-browser/#article","headline":"How to play a PPTX in the browser (without PowerPoint)","description":"Render a .pptx in the browser without a server or Office. What breaks the animations, three ways to do it, and how to test any viewer in five minutes.","datePublished":"2026-10-20","dateModified":"2026-10-20","author":{"@type":"Organization","name":"207 Studio","url":"https://207studio.dev/"},"publisher":{"@type":"Organization","name":"207 Studio","url":"https://207studio.dev/"},"mainEntityOfPage":"https://207studio.dev/blog/play-pptx-in-browser/","keywords":"webdev, javascript, pptx","image":"https://207studio.dev/assets/products/pptx-player-sdk-1200.jpg","inLanguage":"en"},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Writing","item":"https://207studio.dev/blog/"},{"@type":"ListItem","position":2,"name":"How to play a PPTX in the browser (without PowerPoint)","item":"https://207studio.dev/blog/play-pptx-in-browser/"}]},{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can you play a PowerPoint file in a browser with its animations?","acceptedAnswer":{"@type":"Answer","text":"Yes. The engine renders each slide to HTML or SVG and steps through the click sequence. Animations survive when the engine reads the timing tree in the file, which is the part most converters skip."}},{"@type":"Question","name":"Do I need a server or Microsoft Office?","acceptedAnswer":{"@type":"Answer","text":"Not for client-side rendering. The browser reads the `.pptx` package itself, so there is no conversion service and no Office install."}},{"@type":"Question","name":"Does it work offline, or inside an iPad app?","acceptedAnswer":{"@type":"Answer","text":"Yes. The same static folder runs offline in a browser and in a `WKWebView` on iOS, iPadOS and macOS, and in Android and Electron WebViews."}},{"@type":"Question","name":"What happens when the file is broken?","acceptedAnswer":{"@type":"Answer","text":"A deck with a stray `&` in the text is repaired and plays normally. If the XML is still broken, the engine renders what it can and reports an error instead of dropping the slide silently."}},{"@type":"Question","name":"Are the free libraries enough?","acceptedAnswer":{"@type":"Answer","text":"They can be, if you are ready to maintain a fork. Check the animation and morph coverage in each README first, and test them with the five item deck above before you commit."}},{"@type":"Question","name":"Which licence tier do I need?","acceptedAnswer":{"@type":"Answer","text":"Developer at $14 is one developer, and you can ship the player inside your own paid or free apps as bundled code. Commercial at $129 is for a company or organisation where more than one person uses it, and adds priority email support. Both include the full source. Neither lets you share the source itself."}}]}]}</script>
<footer class="site-footer wrap"><p>207 Studio (207studio.dev), South Korea. Support: <a href="mailto:support@207studio.dev">support@207studio.dev</a> · <a href="/about/">About</a></p><p>Last updated 2026-10-24. © 2026 207 Studio</p></footer>
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"BlogPosting","@id":"https://207studio.dev/blog/play-pptx-in-browser/#article","headline":"How to play a PPTX in the browser (without PowerPoint)","description":"Render a .pptx in the browser without a server or Office. What breaks the animations, three ways to do it, and how to test any viewer in five minutes.","datePublished":"2026-10-20","dateModified":"2026-10-20","author":{"@type":"Organization","name":"207 Studio","url":"https://207studio.dev/"},"publisher":{"@type":"Organization","name":"207 Studio","url":"https://207studio.dev/"},"mainEntityOfPage":"https://207studio.dev/blog/play-pptx-in-browser/","keywords":"webdev, javascript, pptx","image":"https://207studio.dev/assets/products/pptx-player-sdk-1200.jpg","inLanguage":"en"},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Writing","item":"https://207studio.dev/blog/"},{"@type":"ListItem","position":2,"name":"How to play a PPTX in the browser (without PowerPoint)","item":"https://207studio.dev/blog/play-pptx-in-browser/"}]},{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can you play a PowerPoint file in a browser with its animations?","acceptedAnswer":{"@type":"Answer","text":"Yes. The engine renders each slide to HTML or SVG and steps through the click sequence. Animations survive when the engine reads the timing tree in the file, which is the part most converters skip."}},{"@type":"Question","name":"Do I need a server or Microsoft Office?","acceptedAnswer":{"@type":"Answer","text":"Not for client-side rendering. The browser reads the `.pptx` package itself, so there is no conversion service and no Office install."}},{"@type":"Question","name":"Does it work offline, or inside an iPad app?","acceptedAnswer":{"@type":"Answer","text":"Yes. The same static folder runs offline in a browser and in a `WKWebView` on iOS, iPadOS and macOS, and in Android and Electron WebViews."}},{"@type":"Question","name":"What happens when the file is broken?","acceptedAnswer":{"@type":"Answer","text":"A deck with a stray `&` in the text is repaired and plays normally. If the XML is still broken, the engine renders what it can and reports an error instead of dropping the slide silently."}},{"@type":"Question","name":"Are the free libraries enough?","acceptedAnswer":{"@type":"Answer","text":"They can be, if you are ready to maintain a fork. Check the animation and morph coverage in each README first, and test them with the five item deck above before you commit."}},{"@type":"Question","name":"Which licence tier do I need?","acceptedAnswer":{"@type":"Answer","text":"Developer at $14 is one developer, and you can ship the player inside your own paid or free apps as bundled code. Commercial at $129 is for a company or organisation where more than one person uses it, and adds priority email support. Both include the full source. Neither lets you share the source itself."}}]}]}</script>
</body>
</html>
Binary file added favicon.ico
Binary file not shown.
Loading
Loading