HN.zip

Show HN: Bento - An entire PowerPoint in one HTML file (edit+view+data+collab)

Over the past few months, our team has been building more and more slidedecks using web frontend technologies with coding harnesses like Claude Code, but a common complaint is to make even small edits we need to edit the code either manually or via the harness.To avoid this loop, I ended up creating Bento, a single HTML file with everything you need in a slide tool including animations and shared editing. There's no install or cloud login, everything works offline. The default deck is around 560 KB and it doesn't need to fetch anything once you got it.Open it in a browser and then you can edit, present, print and save. Share it via email or via Airdrop and all they need is a browser to edit, present and also do live collab on the slides. Drop it in to Claude or ChatGPT to transform existing pptx files into Bento slides. There is no cloud involved, only an encrypted blind relay to allow for shared editing. The relay doesn't see any of the data.Check it out at https://bento.page/slides/ which takes you straight to the editor.Go to https://bento.page/guestbook/ to try out the live guestbook to experience share editing / collab.There is also a gallery with some sample decks on the website - https://bento.page/All the code is MIT licensed and you can find it here - https://github.com/nyblnet/bento . I used reveal.js with several other libraries (including some homegrown ones), and Claude Code.

487 points by starfallg - 102 comments

102 Comments

starfallg [3 hidden]5 mins ago
Hi, I'm the creator of Bento. Just wanted to share a bit more about how I created it beyond what's in Github.

The file contains more or less two sections. There is a plain block of JSON near the top of the file which is the slide data. You can read, grep, or point a harness at it. The app itself is in a base64 blob that loads through a small shim which deflates in the browser with DecompressionStream, which keeps the package small and so that we don't need to fetch any external files at runtime. File System Access API is used for JSON writeback into the same file, which falls back to a plian download and all updates are ECDSA signed.

I started with reveal.js which served as a base, and incorporated GSAP/Flip to handle the animation. Then I added charting with echarts, but due to a number of issues with size and how the worked, I ended up re-implementing both.

What I'm most pleased about is how seamless the CRDT works. The blind relay is a small file that runs on Cloudflare Durable Objects, and all it sees are the encrypted data from the clients. Collab is off until we turn it on in the app (by starting a session by sharing by invite file), and then some sets of keys are generated. Access is handled by user key, and you can have read-only users, and also revoke live collab access by user as well.

allisdust [3 hidden]5 mins ago
I would call this a slide show not powerpoint mostly because making it work with the satanic office formats is a path to hell.

Hopefully simpler formats like this will become the norm and the old ones can die.

starfallg [3 hidden]5 mins ago
You are right, but I guess a lot of people recognise PowerPoint as a brand. Maybe I can bill this as better-than-powerpoint!
saghm [3 hidden]5 mins ago
FactorialPoint, your slideshows improve even faster than an exponential!
starfallg [3 hidden]5 mins ago
Hehe, if we go in the other direction we can call it basepoint.
stackghost [3 hidden]5 mins ago
The term "powerpoint" has been genericized in the common vernacular to mean any electronic slide show, like kleenex for tissues and sellotape/scotch tape for transparent adhesive tape.

It might not have reached legal generic status but just about any working professional will understand what you mean if you refer to "making a powerpoint deck" even if you don't use the actual Microslop product.

mbreese [3 hidden]5 mins ago
This was my biggest question. Thanks for preemptively answering (and being proud!).

When I was playing with this, I immediately thought of TiddlyWikis, which I've always been fond of, but they never took for me. However, an easily editable presentation -- that's a use case I can understand.

I couldn't see how there was a CDRT when I'm just working with a single file. I was trying to figure out where the server was. So -- this is just on for everyone? Are you concerned that your Cloudflare account will be hammered with this?

rpdillon [3 hidden]5 mins ago
My project for the past few years is called AppDeck, collection of self-contained HTML files that know how to save themselves back to the AppDeck server, which is just WebDAV. AI has been enormously helpful in building out a suite of apps that can do this. So far I have a diagram editor that can produce SVGs, a multi-document editor that backs everything with markdown, but supports Kandan boards, documents, logs, and calendars. I also have a work flowy clone that I've really been enjoying organizing ideas with at work. There's a gallery app that inlines all of the images and can display them full screen in a light box and with a timed slideshow that also supports captions and encryption.

All of it just runs out of a folder on disk and can either be deployed locally or on a server behind a login. I intend to open source it, but I'm not quite proud enough yet of some of the implementation aspects to do so. Hope to do it this summer though!

starfallg [3 hidden]5 mins ago
You can play around in the guestbook. I'm in it right now and you can see me editing things.

Cloudflare Durable Objects are pretty cheap and I'm using it like a very basic pub/sub with each deck having it's own DO. I did some calculations and it should be well within my spend limits.

francozanardi [3 hidden]5 mins ago
Something super small that I've noticed in the guestbook: since there're a lot of people connected, I noticed that every time I received an update, I lost the focus of my text element, so it was a little bit difficult to write something.

It may be annoying if two users are working at the same time in the same project.

Again, very cool project! :)

inanutshellus [3 hidden]5 mins ago
The concept that's MAGICAL in Reveal.js is vertical slides.

e.g. https://revealjs.com/#/2/1 <-- from here you can go up or down, then go right to continue the presentation.

You just make one slide deck with lightweight high-abstraction slides and depending on the audience you just... hit the down arrow. bam. now you're inside the tech slides. no nerdy tech guys? sweet, don't hit down on slide 3. Instead you're with the marketing guys, so hit down on slide 5.

Anyway - looks like you got rid of that in order to mimic Powerpoint, but... don't forget it's there. it's my favorite part of using Reveal.js!

starfallg [3 hidden]5 mins ago
That's a great point. I went down the state slide route in order to handle a similar type of use-case, but I'll look into this and see if we can incorporate that somehow. It seems like a really elegant way to implement some state slide use cases. And thanks for the heads-up on this!
ronyeh [3 hidden]5 mins ago
Nice idea. What happens if you upgrade to v2 and my slide decks are on v1?

Can I click upgrade and get the JSON slide deck data exported into a v2 shell?

starfallg [3 hidden]5 mins ago
Yeah, upgrades are pretty seamless so far as the JSON format for the slide data is pretty forgiving. You can also export and reimport the data. It's in the split pill next to Save.
Shorel [3 hidden]5 mins ago
I really loved when this was a feature of the Opera browser, before they went chromium.
praveer13 [3 hidden]5 mins ago
This is amazing. I also think this will become more common. I feel there is a lot of software that can just be served locally via html/typescript/react etc and even have local state. There's just not been an economic incentive till now.

I am personally using kimi k3 to create a mobile friendly set of games, starting from math like linear algebra to quantum physics - neurodivergent friendly, completely local state, served from github pages - to get someone interested in the field. This needs an economic incentive to exist without LLMs, because of so much different expertise needed, and time.

if anyone's interested in the games let me know - i plan to play it myself, improve it, remove bugs etc before publishing on HN.

WillAdams [3 hidden]5 mins ago
Yeah, I was just discussing with a co-worker the concept of a hybrid document where editing controls and the content all exist in a single HTML file (prior implementations include various wikis such as: https://feather.wiki/ ) --- makes one wonder what an SVG or spreadsheet implementation might look like.
starfallg [3 hidden]5 mins ago
Thanks! If you need anybody to test and feedback, I'll give it a go.
georgeburdell [3 hidden]5 mins ago
Hey just wanted to say I think this fills an extremely common niche in the corporate world. There are a couple of teams at my company who switched to some variant of fancy html/javascript and away from either cloud or desktop copies of off-the-shelf presentation or visualization software because they were tired of bugs not being fixed or custom features not getting added

Internal IT fiefdoms everywhere should be very afraid

notpushkin [3 hidden]5 mins ago
> Go to https://bento.page/guestbook/ to try out the live guestbook to experience share editing / collab.

My M1 Mac froze in the end (had to hard-reboot), but that was so much fun! I guess there’s a reason Figma uses WASM and a custom renderer, though I guess your implementation should work fine for most cases (i.e. not when all of HN are trying to edit everything simultaneously :^)

Two notes:

1. It would be nice if another person changing something unrelated to what I’m doing didn’t reset the focus for me.

2. WAY too llm-y copy both on the landing page and the example deck. Your HN submission text is way easier and more pleasant to read.

And huge kudos for releasing this as FOSS!

starfallg [3 hidden]5 mins ago
Thanks! I had to reset the guestbook because it's being spammed. It's on epoch 4 now, hopefully people will be better behaved moving forward!

1. Yes, that's a good point that somebody else raised also. It went pass testing as I was only testing with 1 or 2 other people at once. Will fix this tonight.

2. Yeah, agreed and fair point. But I don't write well and I don't have time between day job and being a dad. Will try to fix this gradually.

notpushkin [3 hidden]5 mins ago
1. I’ve added the ⌘V remark on the first slide (it was the only way I could add anything in the previous epoch at all!). Hope it helps others have fun in the meanwhile.

2. Absolutely fair point, and it’s okay – the demo speaks for itself :-) Although if you wrote that submission text yourself, you do write pretty well! But obviously no pressure here.

mguerville [3 hidden]5 mins ago
As someone who makes a living in PowerPoint but loves tech and FOSS, congrats. I'm not sure I fully follow how collaborating works, you may want to write an explainer that assumes nearly zero engineering knowledge. Looking forward to the docx and xlsx version, I'll follow on gh to stay up to date
calebm [3 hidden]5 mins ago
Awesome. I've been trying to promote this kind of Single-File Web Apps as a concept - feel free to add this to the proposed Wikipedia page: https://en.wikipedia.org/wiki/Draft:Single_File_Web_Apps
yreg [3 hidden]5 mins ago
The draft doesn't read as a Wikipedia article – e.g. addressing the reader as 'you'.

I don't think WP is the right place for this. It is supposed to be a tertiary source, not a place to promote concepts you want to see established.

littlecranky67 [3 hidden]5 mins ago
mdwiki [0] would probably qualify. Disclaimer, I created+released it in 2013. I always jokingly called it the first true single-page application - as it was a single, offline-capable .html file with all images, icons, styles etc. inlined in the same .html file.

[0]: https://mdwiki.info

billyp-rva [3 hidden]5 mins ago
Ilograph diagrams can be exported to standalone HTML files (like this example: [0]). Coincidentally, they also have slides (kind of) and clock in at around 560KB.

[0] https://www.ilograph.com/demo/intelligentDocumentProcessing....

Jonovono [3 hidden]5 mins ago
https://hyperclay.com/ could be on there I think
RodgerTheGreat [3 hidden]5 mins ago
starfallg [3 hidden]5 mins ago
Thanks for sharing this! Let me take a look. I was only aware of TiddlyWiki when I first started on Bento.
d4rkp4ttern [3 hidden]5 mins ago
Love it. Like some others here, I've been making html presentations with code-agents and they come out really nice. Other alternatives for that suit different purposes are these:

- slidev markdown-based slides, I often have a code-agent make these. https://github.com/slidevjs/slidev

- typst slides are great looking too, especially with math etc. Again easy for agents to do

One minor nit: Based on the title, I thought this was literally a tool that had something to do with PowerPoint, but "PowerPoint" is used here as a synonym for "Presentation", which is ironic/unfortunate given how many dislike PowerPoint.

fh67 [3 hidden]5 mins ago
I'm thinking of installing a blank bento for users as a pwa (using browser install site as app), script the author name etc and then make the file read only so they are forced to save as, for users to use as a standalone powerpoint tool.

Maybe you can implement this into the project, a blank default read only (except author details) that installs as a pwa.

seu [3 hidden]5 mins ago
This looks like a great idea, thanks for sharing it!
aag [3 hidden]5 mins ago
What an ambitious and impressive project! I'm going to try it.

One note: The home page says "Nothing phones home," but the Bento files I've examined include a cloudflareinsights.com beacon.

starfallg [3 hidden]5 mins ago
Thanks for raising that. It might be in the standard cloudflare/actors SDK I used for Cloudflare Durable Objects. I'll try to disable this behavour and if we couldn't, we'll rip out DO and replace it with something that doesn't phone home. Apologies I wasn't thorough enough here.
starfallg [3 hidden]5 mins ago
Just an update to this phone home issue. I haven't found anything showing that this should be normal behaviour. I'm thinking this may be due to cloudflare challenges due to the traffic spike. In addition to the DO, the whole website sits behind a Cloudflare proxy.

Will keep chipping away at this and update as I learn more.

pembrook [3 hidden]5 mins ago
By ambitious and impressive do you mean for Claude?

Because while cool this is clearly heavily vibe coded.

aag [3 hidden]5 mins ago
I'm don't care. If it's good, it's good.
pembrook [3 hidden]5 mins ago
Agreed, but the days of software projects being ambitious or impressive are over.
rob [3 hidden]5 mins ago
Because they didn't write all the code by hand? Seems like an odd measurement for determining if a project is ambitious or impressive. Clearly this one is based on the replies here.
syhol [3 hidden]5 mins ago
Looks very good and I'm excited to try it out properly. It's a shame about the name considering a lot of self-hosters will be using BentoPDF. But thats one of two hard things in Computer Science.
starfallg [3 hidden]5 mins ago
Aw man! Well it is very different to what BentoPDF is doing. I'm sure nobody would get confused!
dptrsa [3 hidden]5 mins ago
I've been reading HN much longer than I've had an account, and I have never once left a comment or interacted with any post. Had to break the seal to say great job with this. Really fantastic out of the box, and timely thinking. I'll be using this for sure.
starfallg [3 hidden]5 mins ago
Thanks! It's also my first submission to HN after reading and commenting on here for the last 7 years!
trentor [3 hidden]5 mins ago
I like it. I used Claude and Qwen to build single file HTML decks in the last few months. The nicest thing with HTML decks is that you can not only ship the decks but integrate your prototype/demos in the same file integrated into the flow of your deck. Would love to see a feature like that.
starfallg [3 hidden]5 mins ago
Thanks. That would be a cool feature, and definitely possible. Currently it's already got a feature where you can export and import it's data JSON. We just need to find a way to squeeze a whole frontend in.
dushan01 [3 hidden]5 mins ago
I really like it, you are a genius
mklarmann [3 hidden]5 mins ago
I recently did something similar with just asking claude to create me a presentation with GSAP animations. With a some nice features to embed apps, switch the language while presenting, etc. - it works like a charm: https://eos-lci.gitlab.io/eos-lci-presentations/klimabuendni... (all open source)
TeeWEE [3 hidden]5 mins ago
Was using Reveal.js which worked well because it can use any HTML or any plugin.

Bento works with a predefined schema, so you cant use any HTML library (Such as Mermaid.js) if you need it in your presentation.

But then again, often you dont need it.

Just created a presentation with Bento... I do think Reveal.js gives you more raw power. But I like bentos single html page design, and you can easily edit it manually. You cant do that with Reveal.js

starfallg [3 hidden]5 mins ago
Yup, I'm trying to see if we can add arbitrary JS. I think it may be possible, but would take a bit longer to test out different approaches. However I guess the main target audience for this is coders that interact with non-coders when doing presentations, and I think currently this approach is sufficient.
jmuguy [3 hidden]5 mins ago
This might just be a Firefox thing but the animations are really struggling on my system here - very slow and choppy.
ozhero [3 hidden]5 mins ago
This is excellent work!

Thanks for sharing and deserves a lot of Github stars!

momojo [3 hidden]5 mins ago
This blew my socks off. Theres something so satisfying about knowing everything I need is in a single file. I know the caveat is *1. Have a modern browser*, but this is my go to format when trying out random ideas. I even have a macro called `try` that sends me directly to a new folder called `scratch/YYYYMMDD_<try_bento>`.

Great work! I hope to see more and more apps like this in the spirit of "Toss it all into context"

starfallg [3 hidden]5 mins ago
Thanks, you're right, that is the achilles heel. Most of the functionality actually is in the browser. We're just running fancy scripting on it.
thecombjelly [3 hidden]5 mins ago
Very cool project! It looks nice and the technical aspect of how sharing/CRDT is implemented is a really great idea! I would definitely be interested in the ability to change the relay; ideally to something self-hosted.
starfallg [3 hidden]5 mins ago
Thanks! That's a really good point. I used Cloudflare DO as it was elegant and convenient, but no reason why we can't run a small daemon to handle the same. I'll work on this later in the week.
ethin [3 hidden]5 mins ago
This is so cool! When I initially saw the title I was wondering how this is different from SlideJS or similar, but this is really cool and now I'm wondering if this could (at least in theory) be integrated into something like Pandoc as an output option?
starfallg [3 hidden]5 mins ago
Thanks! I'm not familiar with pandoc but I think you can get some data out of the Bento JSON but is not going to be very rich. May be easier to render it to PDF (which works well in Chrome) first.
ethin [3 hidden]5 mins ago
Maybe? I'm not too familiar with Pandoc's internals so I couldn't say. (I do know it supports templates so maybe you could pull it off like that?) Although I'm wondering if you could just have the JSON as input and then you use pandoc as the transformer and it generates the full HTML file? An interesting idea for sure.
luanmuniz [3 hidden]5 mins ago
This is awesome! I do love this software is one file thing. A breath of fresh air on these you-rent-everything-owns-nothing days
starfallg [3 hidden]5 mins ago
Thanks! I guess there are some drawback to this approach, large companies especially would be completely adverse to it. But it's cool and I'm hoping people would find it useful!
BIGFOOT_EXISTS [3 hidden]5 mins ago
Absolutely love seeing products like this. Starred, saved link, will definitely use soon.
starfallg [3 hidden]5 mins ago
Thanks, people asked about monetization but seriously Github stars is really all it's about.
skybrian [3 hidden]5 mins ago
This is very neat!

For people clicking on a link to some slides that someone shared, it seems like starting out in viewing mode with a prominent edit button might be better than starting out in edit mode?

starfallg [3 hidden]5 mins ago
Thanks for the feedback, that's a really good idea! I'll try to roll it out shortly!
skybrian [3 hidden]5 mins ago
Some unexpected behavior: I reloaded the page, double-tapped on the first slide to go back to it, then hit slideshow. Instead of starting out on the slide like I chose, it went to a slide further in othe presentation. I think it’s a bit too persistent about resuming where you left off?

Also, swiping left to get back to the first slide puts me back in the editor (I went too far), and then hitting slideshow puts me back where I started so I have to swipe left again.

starfallg [3 hidden]5 mins ago
The slide resume behaviour is definitely a bug, I'll take a stab at it shortly.

The swipe left on first slide is a feature though, its to help mobile users get back to the editor easily.

skybrian [3 hidden]5 mins ago
Also, viewing slides on a tablet, I don’t see a way to open speaker notes since I can’t “press the S key.” These instructions should probably be different if you’re not on desktop.

Maybe display speaker notes by default if the screen is in portrait mode?

starfallg [3 hidden]5 mins ago
The slideshow button is a split pill, you can open it there where there is this tiny up arrow that opens up a drop down menu. But on tablet it probably doesn't do what you want it to as it was built for multi-screen use on the desktop.

I'll have a think on this tonight and I'm sure we can do a tablet speaker notes mode.

vonnieda [3 hidden]5 mins ago
This is really clever and is taking a direction I hope to see more software taking! Totally self contained is awesome. Well done!
starfallg [3 hidden]5 mins ago
Thanks! I hope it's good and practical enough to be actual useful (and used regularly by pepole).
shaism [3 hidden]5 mins ago
Awesome. Perfect for editing with agents and sharing with coworkers.

- Even works well on mobile.

- Embedding images and videos also works flawlessly.

starfallg [3 hidden]5 mins ago
I'm a bit worried on the UX on mobile, so I did some testing to get at least the basic working! Video also worked better than expected, I love how the video background in the Orbital deck turned out! Thanks for the feedback!
francozanardi [3 hidden]5 mins ago
Love that it's just one HTML file, really easy way to share software. Great work!
sciencesama [3 hidden]5 mins ago
if you extract ppt it is a xml file !! fyi !
hilti [3 hidden]5 mins ago
Great project. But please check the name:

https://en.wikipedia.org/wiki/Bento_(database)

miduil [3 hidden]5 mins ago
Bento is perfect reasonable name for an all in one solution - no?

https://en.wikipedia.org/wiki/Bento

ajam1507 [3 hidden]5 mins ago
> Bento is a discontinued database application for Mac OS X made by the former FileMaker Inc., since renamed to Claris.
dabbz [3 hidden]5 mins ago
So OP needs to rename their slideshow tool to Claris?
rob [3 hidden]5 mins ago
It's also the name of a CMS from PBS that's been used for years:

https://docs.pbs.org/space/B3/4751362/Bento+3.0

meetingthrower [3 hidden]5 mins ago
OMG coming from bigtime consulting this is...AMAZING. Thank you!
starfallg [3 hidden]5 mins ago
Yeah, if you do a lot of slides, this is for you! The whole point of this is to make doing slides bearable!
ninjahawk1 [3 hidden]5 mins ago
I’ve honestly been kind of surprised that large companies software hasn’t been recreated for free en masse from the use of AI in a weekend. I’ve definitely seen some cases but it’s not as common as I had personally expected.
stackghost [3 hidden]5 mins ago
>There's no install or cloud login, everything works offline. The default deck is around 560 KB and it doesn't need to fetch anything once you got it.

This is the best feature.

truetraveller [3 hidden]5 mins ago
Great job! How long did this project take total? How much percent is AI generated?
starfallg [3 hidden]5 mins ago
Thanks! I started on this last week in my spare time and I used Claude, all my commit history is on Github. I did most of the coding via Claude Code, no fancy system or exotic harness.

I would love to do more by hand, but I look after a tech team inside a renewables firm, so I don't have much time between job and my preschooler.

truetraveller [3 hidden]5 mins ago
Are you kidding me? I gave it a spin, and it's solid. That's crazy, I'm impressed!
bflesch [3 hidden]5 mins ago
Looks nice, but I'd love to have a setting where all animations can be switched off.
starfallg [3 hidden]5 mins ago
Good idea! Let me roll that out. I guess you can also print to PDF.
schainks [3 hidden]5 mins ago
This is awesome!
luckydata [3 hidden]5 mins ago
this project is a monument to the HUGE failure of the Workspace team at Google to enable agent editing in a way that makes sense.

Google is really shitting the bed in all the way that matters on GenAI and being an ex employee of Cloud I am not in the least surprised about it, just really sad.

starfallg [3 hidden]5 mins ago
I like a bit of good gossip. If you're based in London, let's go out for a beer.
hathym [3 hidden]5 mins ago
impressive, bravo!
latexr [3 hidden]5 mins ago
Why does the homepage mention AI over 20 times? Why does it mention AI at all? Why is most of it absurdly long and obfuscated base 64, which looks be binary data?
starfallg [3 hidden]5 mins ago
It's really to solve a use case where there are a lot of these cool web-based presentations being created by AI, but they are all disposable things that non-technies can't work with easily.

Base64 is paired with compression to keep the size small so you can share it easily. The original version was around 1.3MB and maybe we can have a switch to output without compression. The source that generates it is all in Github.

luanmuniz [3 hidden]5 mins ago
Because whatever you like or not, AI support these days is a must. Nobody who makes PPT does everything by hand nowadays. And the project is on GitHub, you can get the full code there if you must...
fragmede [3 hidden]5 mins ago
Um, that's amazing... and it's free?
starfallg [3 hidden]5 mins ago
Thanks! It's a project I did in my spare time and it's made with a lot of MIT licensed JS libraries, so it's natural to make this MIT licensed as well. I don't know even know how anybody would start to monetise something local-first like this in this day and age.
momojo [3 hidden]5 mins ago
Did you chew on monetization at all? I'm building something similar but for bio-imaging scientists, where I've packed everything I can into a single HTML (and even some modern segmentation models like Cellpose3 and StarDist that fit under Cloudflare's 25MB free tier limit haha.

Maybe I'm thinking too far ahead but I'm hoping maybe I can cover the (future?) compute costs by charging for the heavy duty ML that would have to be run non-locally but IDK. This isn't critical yet but would love to hear your musings.

starfallg [3 hidden]5 mins ago
If you have a backend that does processing, I'm sure you can monetise it. But for Bento, the whole idea is to forgo the backend, so I didn't really think about it that much. If an enterprise version comes, I'm sure there is a way to integrate stuff like SSO that you can charge for.
GrinningFool [3 hidden]5 mins ago
Also, bento: https://github.com/chef/bento. No relation.