6 ms·
Show HN: A text-only blog engine using Cloudflare workers and KV store
- jagadeeshposni 2y agoI have been working on something similar this morning. I want to create a simple blog to document my thoughts without having to deal much about technical stuff and maintenance and spend a few hours diving the rabbit hole of jekyll blogs. While their documentation(https://jekyllrb.com/docs/ https://jekyllrb.com/docs/) is one of the best resources to learn, I have found my job much more straightforward using one of the pre-built themes that is available on the internet. With deployment to github pages almost instantaneous, I can see myself updating the blog much more often. The blog which I am currently working on: https://jagadeeshposni.github.io https://jagadeeshposni.github.io The theme I have used: minimal mistakes
- pyeri 2y agoMinimal mistakes is a great theme. I had almost decided on minimal mistakes when I wanted to upgrade my blog from a simple two column Hyde theme. But then I wrote the template from scratch using bootstrap-5 as I felt that gave me more control and I took it as opportunity to develop my frontend skills. Here is my blog: https://prahladyeri.github.io/ https://prahladyeri.github.io/
- LtdJorge 2y agoSame happened to me with Astro. Yes, it’s much more involved initially because you have to set up the entire layout, but after that, adding content only pages is just writing Markdown. And for the layout, with the help of Tailwind and TailwindUI, it’s pretty easy for a non-designer.
- simonw 2y ago6 comments already complaining that this isn't "simple". I suggest we instead treat this post as if the title was "Show HN: a simple text blog demonstrating how to use Cloudflare workers and KV store" - that way we get to have a more interesting conversation.
- dang 2y agoThanks—we've put that (more or less) in the title above. (Submitted title was 'Show HN: Simple Text Blog")
- jonutah 2y agoSorry and thanks for fixing. I'd put more detail in the description but didn't realise it didn't show. Thanks for making the title more accurate.
- Xeoncross 2y agoI'm honestly not sure what the problem with "simple" is either. It's literally a single file with 80 lines of code. At this point the only thing easier is a linux one-liner to serve a file directory over HTTP. Like, has anyone ever used Jekyll, Hugo, Ghost, Jr, Wordpress or any other blog system? None of them are anything close to 80 lines of code.
- deleted 2y ago[deleted]
- dang 2y ago[stub for offtopicness]
- deleted 2y ago[deleted]
- Eikon 2y agoWhat's simpler about this than just uploading .html files? This seems actually very complicated for what it does.
- deafpolygon 2y agoI was going to say, just upload .txt
- simonw 2y agoJust uploading HTML files won't teach you how to use Cloudflare workers and their KV store.
- krapp 2y agoA "simple text blog" shouldn't need to use anything of the sort.
- jumping_frog 2y agoI think what would be amazing is if WhatsApp creates a mobile number based website which anyone can access if they know the mobile number. Access through whatsapp mobile app.
- bravura 2y agoThat's called a Telegram bot and you can write one yourself.
- simonw 2y agoI tried this out and found it useful for exploring Cloudflare workers. One thing I learned: KV and durable objects are not the same thing. KV is eventually consistent, durable objects is the thing where all traffic has to be routed to the same node since it's dealing with a read/write store that has read-after-write guarantees. Also Cloudflare KV provides a simple dashboard interface for adding and removing KV entries: https://gist.github.com/simonw/1e072d04960616970381a433bfca7370 https://gist.github.com/simonw/1e072d04960616970381a433bfca7...
- stavros 2y agoThis is great, thanks! It's always useful to see these "here's how to do something useful with a new technology" demos, and I've been wondering how Cloudflare's offerings work exactly, so thanks! Now we need the equivalent thing for Durable Objects! Maybe a chat room, hm.
- eggfriedrice 2y agoThis is nice, apart from a quick play when they were new I've never really looked at CF Workers and KV again. This made me go and have a look at the docs and find that it's actually looks quite useful. I didn't know they'd added Python and other languages, so that's cool in itself. I like Jon's example here, a single and fairly short file that does just enough to demo this all, nice.
- Super_Jambo 2y agoI'd have thought the SQLite database (D1) would be a more obvious fit for a blog?
- bravura 2y agoI was stoked on D1 when it was announced. But the maximum DB size is 10GB (https://developers.cloudflare.com/d1/platform/limits/ https://developers.cloudflare.com/d1/platform/limits/). Really?
- Super_Jambo 2y agoI assume the intention is you store actual data in R2 objects and just hold references to them in D1.
- freetonik 2y agoNote that you can create up to 50,000 databases.
- jonutah 2y agoGood point, I'm making my way through exploring more of CF so I'll likely try a D1 variant of this. Ta
- Super_Jambo 2y agoI have been very impressed with what you can build on it. I built this little service to add UK specific political location data to Action Network CRM. 300 lines for the actual service! code here: https://github.com/jms301/ANUpdaterUK/blob/main/src/index.js https://github.com/jms301/ANUpdaterUK/blob/main/src/index.js Sure it's only taking a webhook, reading an API, looking up a db entry and then updating via API. But just knowing it's running on someone else's infra and there's so little code to validate is very comforting. Prior to this I had a version running on a VPS and yeah I can do it. But you end up with a LOT of code / config to run the web server, the queue, the database... And any of that could be introducing bugs and security problems.
- hk1337 2y agoI like it but not that enthusiastic about JavaScript echoing html. What about having simple html templates that call back to the worker for the posts and the worker return json?
- jonutah 2y agoYeah it is gross interweaving html fragments randomly but I wanted to see if I could do it and keep it all constrained to one file. Thanks for the feedback.
- freetonik 2y agoSo, have some JavaScript on the client side just to retrieve text and put onto the page? Seems like unnecessary complexity.
- ThinkBeat 2y agoWhat is the pricing structure on this? I am sure there is a free-tier, but if we skip that and pretend we are paying for it from the beginning. How would much 100.000 hits be? I presume it would be a tiny number, A esp given the current content in the blog. so lets imagine some photos and heavier content. How difficult would it be to extend with with CF CDN?
- LtdJorge 2y agoFor workers, free is 100k hits per day and 10ms of CPU per hit. KV is 100k reads, 1k writes, 1k deletes, 1k lists and 1GB storage. The subscription is 5 USD a month, including 10M hits at 30ms each, 10M w, 1M r, 1M d, 1M l, and also 1GB. One of the examples in their page (for a fully dynamic website, which is worst case) is: Subscription $5.00 Requests $1.50 (15,000,000 requests - 10,000,000 included requests) / 1,000,000 * $0.30 CPU time $1.50 ((7 ms per request * 15,000,000) - 30,000,000 included CPU ms) / 1,000,000 * $0.02 Total $8.00
- sigio 2y agoI'll stick my static website on a $3.50 VPS then, and have no practical limits and a fixed price. Also soo much simpler.
- bigs 2y agoSounds interesting
- nbbaier 2y agoThought this was really cool, so I reimplemented[0] it in Val Town[1] using their blob storage[2]. Mine's a bit longer because of I got a little more elaborate but it was a fun exercise. [0] https://www.val.town/v/nbbaier/simpletext https://www.val.town/v/nbbaier/simpletext [1] https://www.val.town/ https://www.val.town/ [2] https://docs.val.town/std/blob/ https://docs.val.town/std/blob/
- Turboblack 2y agoit's far from simple, because you need to use several technologies at once, why not do it so that you can just copy it to the hosting and it will work right away? especially since it's a microblog
- convolution8 2y ago[dead]