5 ms·
Show HN: Tumbless, a Tumblr-like blogging platform running on Amazon S3
- matteobrusa 11y agoTumbless uses HTML5 canvas, Ajax and Amazon S3 APIs to offer a photo blogging platform without a specialized backend.
- fiatjaf 11y agoDo you know of any other approaches to managing a site directly from browser to S3? Because this is awesome. I'm not much into this thing of just uploading pictures, but I guess I would like to work into turning your Tumbless into a more full-featured static-website solution for non-devs, that works from the browser.
- ubergeek42 11y agoThe only other thing I've seen in this space is DodgerCMS. It may meet your needs as it seems to do a lot more than Tumbless already. I think I prefer the way it handles credentials too(saved in local storage iirc rather than in a "hidden" file that's technically available to everyone) https://github.com/ChrisZieba/dodgercms https://github.com/ChrisZieba/dodgercms Regardless, I think this is something that would be awesome to have. You can even throw in some AWS Lambda if you want to move some stuff out of the browser(like generating thumbnails/index pages/etc). Or just use Lambda to run a complete static site generator(like jekyll or pelican) every time the content in an S3 bucket changes. Note: I've never actually used either of these, but I did spend a fair amount of time researching this type of stuff.
- matteobrusa 11y agoTumbless uses two passwords: the admin one could benefit from the local storage approach, however I'm not sure if chrome's password saving feature would help. The second one is the one you share with your guests if you choose to make the blog private. I see no other option here. I'm not very happy either with the hidden file approach, as it might be vulnerable to brute force attack. Amazon does not specify what kind of protection they have in place. I definitely recommend hard to guess passwords.
- fiatjaf 11y agoI read a lot about DodgerCMS right now, then I discovered it did client-site rendering. Not that this is a bad thing, but it makes the job of implementing a site like this so much easier that I got angry. Now I don't know if Tumbless does everything client-side too. I guess the other way is way too hard (recompiling everything every time, finding what to recompile etc.), like I tried to do and failed with https://github.com/fiatjaf/coisas https://github.com/fiatjaf/coisas
- jedberg 11y agoYou could look into adding a few lambda functions behind API gateway for functionality that you can't get natively from HTML5. It would be about the same difficulty of installation and have the same management profile (ie. upload and basically be done with it).
- matteobrusa 11y agoI guess one cold wrap a video transcoding engine into a lambda to keep traffic costs down.
- jedberg 11y agoAmazon actually provides a transcoding service too. :)
- matteobrusa 11y agoIt's a wonderful time to create awesome side projects ;-)
- RijilV 11y agoMight I interest you in a CDN rather than serving static files out of S3 in a single region?
- yeukhon 11y agoYou can use cross-region replication. But CDN might be a cheaper solution if you have a high volume traffic. Imagine HN runs entirely on S3, then using CDN will likely be cheaper and more responsive. I haven't done the calculation though.
- toomuchtodo 11y ago> You can use cross-region replication. This is meant for backing up S3 data for DR, not for HA in the traditional sense (EDIT: it can be used for HA, but you're going to need health checks for your origin DNS record so your CDN is always pointed at an available origin). Always, always, always use a CDN in front of S3 if you're serving static content for public consumption from that bucket. Data out of S3 is more expensive than data out of a CDN (even Cloudfront), and S3 has orders of magnitude higher latency than a CDN (occasionally hundreds of milliseconds). Disclaimer: Devops who works with S3 and several CDNs day in and day out.
- dilemma 11y agoI run my website on tumblr. This is perfect for when the new owner inevitably ruins tumblr with ads.
- matteobrusa 11y agoTo help you with the migration I've built a script that export all the content (including videos) and creates an index in a format suitable by Tumbless: https://github.com/matteobrusa/TumblrToStaticExporter https://github.com/matteobrusa/TumblrToStaticExporter Caveat: it's a bit rough, but does the job.
- dilemma 11y agoWow, thank you!
- akeck 11y agoAmazon S3 transfer costs can be problematic, though. Personally, I would pair a tool like this with a CloudFront configuration. If you configure CloudFront to expire objects after 24 hours, using a A/B release model for an S3-backed site works pretty well.
- hawkice 11y agoI use the --cf-invalidate flag(s) with s3cmd -- but for something with the usage patterns of tumblr, might be better to use a * invalidation so you don't have to pay too much for them. 24 hour invalidation would be confusing for tumblr-type things. I see the article posted today but the homepage doesn't have it? Very confusing.
- akeck 11y agoMy understanding, via limited testing, (might be wrong) of CloudFront's content behavior is that new things show up pretty quickly (hour?). Changed things would be subject to the expiration time limit. So, edits of old posts won't go live until the original objects expire - unless you invalidate the cache for them.
- planetjones 11y agoHave you tested this on mobile safari? It jumped around a lot before sort of displaying ok, but then the jumping issues returned. I query it because your page makes a point of mentioning the fully responsive layout - but personally if I visited a page which displayed the behaviour on mobile like yours did, I would immediately leave and not come back.
- matteobrusa 11y agoUnfortunately I have no iPhone to test it on. I'll see if I can borrow one... On Android it renders smoothly.
- techdragon 11y agoThis is almost perfect... It just needs support for more text based content. If it's already supported then the demo needs some examples of it. Text or HTML posts ? oEmbed based links? Link in a txt file would be simple enough. I'm not sure the best way for integrating these things, but I'm mentioning them because I'm always looking for simple blog tools, and it doesn't get simpler than files in a bucket. So this approach has me excited to see how far it can extend without the need to introduce additional components like Lambda or a normal Server.
- matteobrusa 11y agoText posts are, of course, supported: just fill title and description while omitting the media. A rich text/markdown editor integration is on the roadmap, I haven't looked into it yet.