Artifacts Gallery Guilds Search Wiki Login Register

Welcome, Guest. Please login or register. - Thinking of joining?
June 03, 2026 - @534.28 (what is this?)
Activity rating: Four Stars Posts & Arts: 70/1k.beats Random | Recent Posts | Guild Recents
News: It's only life! :dog: Guild Events: Happy Pride Month Fibre Artists!

+  MelonLand Forum
|-+  Life & The Web
| |-+  ✁ ∙ Web Crafting
| | |-+  Guestbook providers?


« previous next »
Pages: 1 [2] Print Embed
Author Topic: Guestbook providers?  (Read 428 times)
Dan Q
Hero Member ⚓︎
*****
View Profile WWWArt


I have no idea what I am doing
⛺︎ My Room
RSS: RSS

Guild Memberships:
« Reply #15 on: May 29, 2026 @792.82 » Embed

Personally I'd love it as some sort of iframe or whatev, so I can just snag a code and paste it). I'd love to have it as a lil boxy thing on my page, where I could make it as big or small as I'd like and if there isn't enough space in the box to see all messages etc they can just scroll within the box.

Making it iframe-friendly is easy, but yeah: I'm going one step further. By making it load as a web component you get kickass benefits, like being able to have your site's CSS apply all the way down. Load a font in your site; use it in your guestbook: you don't need to load it again in the iframe. It also allows JavaScript to transcend the boundary, which means I can expose events that you can tap into.

So if (when I get around to making pagination work) I add an event that triggers when the user clicks a pagination button, you could add some JS that played a sound effect to coincide with that event. You can't pull that off with an iframe because iframes and their parents can't (easily, really) talk to one another with JavaScript. The magic of a web component version!

So yeah, my thinking is that there'll be like three ways to use it:

Option 1: just link to it

Just like atabook, you'll be able to e.g.:


Code
<a href="https://my-guestbook.guestbooksite.example.com/">Sign my guestbook!</a>


That works everywhere, but it does mean going to a separate page. Though you'll be able to tweak the HTML and write custom CSS on it, at least.

Option 2: embed it as a web component

This is where it gets fancy:


Code
<!-- this bit goes in the <head> -->
<script type="module" src="https://my-guestbook.guestbooksite.example.com/embed.js"></script>

<!-- this bit goes wherever you like: --->
<embedded-guestbook></embedded-guestbook>

This requires JS, of course. But there's a third option that doesn't:

Option 3: embed it as a web component, with fallbacks

There will be a few different ways to do this, but the most-thorough/bulletproof would look a bit like this:


Code
<!-- this bit goes in the <head> -->
<script type="module" src="https://my-guestbook.guestbooksite.example.com/embed.js"></script>

<!-- this bit goes wherever you like: --->
<embedded-guestbook>
  <iframe src="https://my-guestbook.guestbooksite.example.com/" width="800" height="600" style="border: 0; width: 100%" loading="lazy">
    <a href="https://my-guestbook.guestbooksite.example.com/">Sign my guestbook!</a>
  </iframe>
</embedded-guestbook>

What that code (or, y'know, whatever it ends up being when I write it!) will do is:

- try to load as a web component, embedding directly in your page
- failing that (e.g. because JS is disabled, blocked, or doesn't work), try to embed an iframe, showing the same content but in a slightly less-cool way
- failing that (e.g. because the user's browser doesn't support iframes - some don't!), show a link to sign the guestbook

I've got a proof-of-concept of that working on Neocities. It loads as a web component, but if you disable JS then it loads an iframe, and if you access it in e.g. Lynx, then you see a link. It's magical.

The only downside of option 3 is that, even with loading="lazy", it's possible for the iframe to load before the JavaScript runs, causing it to briefly flicker into view. That can be mitigated by wrapping the iframe in noscript tags, but that reduces its flexibility: it means the iframe is only used if JS is disabled; it doesn't fall back to the iframe if JS fails.

Anyway, in due course I'll write the thing and then I'll write some documentation about the pros and cons of all the options.
Logged

https://danq.me/_q26t/badges/dan-q-88x31-lighter.gif https://danq.me/_q26t/badges/dan-q-88x31-peekaboo-scroller.gif https://beige-buttons.danq.dev/beige-buttons-88x31.gif https://embed-html.danq.dev/embed-html-88x31.gif

Artifact Swap: I met Dan Q on Melonland!Polyamorousradio polyRainbow ConnectionJoined 2025!
grubbyfox
Sr. Member ⚓︎
****
View Profile WWW


forever in 2006
⛺︎ My Room
SpaceHey: Friend Me!
iMood: grubbyfox

Artifacts:
Joined 2023!
« Reply #16 on: May 29, 2026 @810.49 » Embed

holy moly you're fast xD
Will be so cool to check this out eventually!! Will it be made so that one can customize within uh the user account page and then snag the finished code? Or will it be more that the features are _there_ but we need to code it to fit ourselves?
Logged

Loebas
Full Member ⚓︎
***
View Profile WWW


⛺︎ My Room
RSS: RSS

Guild Memberships:
Artifacts:
First 1000 Members!Joined 2023!
« Reply #17 on: May 29, 2026 @850.74 » Embed

I'm also in for a new guestbook service since atabook is doing some things that are questionable as mentioned in some above posts.

I'm most suddenly going to selfhost my guestbook in the foreseeable future. (I have a lot of space/resources on my VPS).

Anyway, my landing page needs a proper reboot for the long term, but first i'm going to transfer loebas.boykisser.nl to my VPS first. It still lives on my homelab, and i want to dedicate nextcloud to my homelab
Logged

https://images2.imgbox.com/00/de/HBfvWznu_o.png - https://images2.imgbox.com/d6/9d/J6mFRkMy_o.png(open on mondays)

https://www.chickensmoothie.com/pet/183464543&trans=1.jpg
Pet's name: barky
Adopt virtual pets at Chicken Smoothie!
Dan Q
Hero Member ⚓︎
*****
View Profile WWWArt


I have no idea what I am doing
⛺︎ My Room
RSS: RSS

Guild Memberships:
« Reply #18 on: May 30, 2026 @808.48 » Embed

Want to see where I'm at so-far? (Plus a demo of "full embed" mode, winning the fight against Neocities' aggressive Content-Security-Policy!)

Under 2 min video, no audio:




Yes, I know it's all really ugly right now. And pretty feature-poor. I've been working hardest on making sure that it can work the same whether it's linked-to, <iframe>'d-in, or embedded as a first-class citizen of your page. Also ensuring that custom HTML and CSS templates work.

Still a long way to go and my availability comes and goes, but hopefully I can get to a "usable" point soon and share it with you all for some testing/feedback!
Logged

https://danq.me/_q26t/badges/dan-q-88x31-lighter.gif https://danq.me/_q26t/badges/dan-q-88x31-peekaboo-scroller.gif https://beige-buttons.danq.dev/beige-buttons-88x31.gif https://embed-html.danq.dev/embed-html-88x31.gif

Artifact Swap: I met Dan Q on Melonland!Polyamorousradio polyRainbow ConnectionJoined 2025!
Daniele63
Casual Poster ⚓︎
*
View Profile WWWArt


⛺︎ My Room
RSS: RSS

Guild Memberships:
Artifacts:
Joined 2025!
« Reply #19 on: May 31, 2026 @63.12 » Embed

Want to see where I'm at so-far? (Plus a demo of "full embed" mode, winning the fight against Neocities' aggressive Content-Security-Policy!)
Still a long way to go and my availability comes and goes, but hopefully I can get to a "usable" point soon and share it with you all for some testing/feedback!


Super cool so far! When I first made this thread, I didn't expect someone to actually make one hah. Can't wait to see how this is going to evolve. One thing to add and I'm not sure if you're already working on it: countries (maybe with a lil flag?) and custom fields, for example, where one can input a link to their website, or for example another field to ask a question, with the option for the admin to make it mandatory or not to answer them.
Logged

https://www.haruhi.tv/img/fanclub.jpg
My personal website: daniele63.com
Dan Q
Hero Member ⚓︎
*****
View Profile WWWArt


I have no idea what I am doing
⛺︎ My Room
RSS: RSS

Guild Memberships:
« Reply #20 on: May 31, 2026 @399.35 » Embed

countries (maybe with a lil flag?)

Working on IP-to-Country lookup this morning which will make this possible. Showing a flag is a feature of the template so even if I didn't implement it, a template author could by e.g. adding something like this to their Custom HTML block:

Code
<img src="https://your.site.example.com/flags/{{{IP_Country}}}.png">

The {{{IP_Country}}} would resolve to an ISO country code, so many flag databases would "just work". But I'll have a look into making a template that already includes the relevant data: my thinking is that the default template should have too much information, so it's easy for beginners to customise by just... deleting the bits they don't want!

custom fields, for example, where one can input a link to their website, or for example another field to ask a question, with the option for the admin to make it mandatory or not to answer them

100% on the roadmap! I'm not sure how best to expose the answers to custom questions to the templating engine yet, but this is definitely a thing I'm looking at.

Thanks for the suggestions; I appreciate them!
Logged

https://danq.me/_q26t/badges/dan-q-88x31-lighter.gif https://danq.me/_q26t/badges/dan-q-88x31-peekaboo-scroller.gif https://beige-buttons.danq.dev/beige-buttons-88x31.gif https://embed-html.danq.dev/embed-html-88x31.gif

Artifact Swap: I met Dan Q on Melonland!Polyamorousradio polyRainbow ConnectionJoined 2025!
Dan Q
Hero Member ⚓︎
*****
View Profile WWWArt


I have no idea what I am doing
⛺︎ My Room
RSS: RSS

Guild Memberships:
« Reply #21 on: May 31, 2026 @471.47 » Embed

The {{{IP_Country}}} would resolve to an ISO country code, so many flag databases would "just work"

While exploring this concept, I learned something: you can convert any ISO two-letter country code e.g. DE, FR, US into the emoji of the flag of that country by the following procedure:

1. Get the character code of each letter in the (uppercase) country code, e.g. DE becomes 68, 69 (see an ASCII table for why), FR becomes 70, 82. (Another way to think about it would be to get the letter of the alphabet and add 64.)

2. Add the magic number 127397 to each of your two numbers. So DE becomes 127465 127466 and FR becomes 127467 127479.

3. Treat each as a Unicode character! DE becomes [Regional Indicator Symbol D] [Regional Indicator Symbol E] and FR becomes [Regional Indicator Symbol F] [Regional Indicator Symbol R].

4. Putting those two emoji characters side-by-side means "show the emoji for that country's flag". And if it doesn't exist (new country not in your font yet?), you see generic 'letter' emoji spelling out the two-letter code instead. It's pretty magical!

I never knew that was a thing, so it was really cool to learn! If anybody's curious, here's the Golang code I wrote to convert two-letter ISO country codes to their emoji flag representation:


Code
func countryEmojiFlag(countryCode string) string {
	cc := strings.ToUpper(strings.TrimSpace(countryCode))
	if len(cc) != 2 || cc[0] < 'A' || cc[0] > 'Z' || cc[1] < 'A' || cc[1] > 'Z' {
		return ""
	}
	return string([]rune{rune(cc[0]) + 127397, rune(cc[1]) + 127397})
}

Of course, none of this prevents an enterprising guestbook owner from using images of country flags instead! Anyway; I thought it was cool.

(Attached screenshot shows a DE [German] commenter in my test guestbook.)


* Screenshot 2026-05-31 at 11.18.09.png (210.28 kB, 1152x856 - viewed 5 times.)
Logged

https://danq.me/_q26t/badges/dan-q-88x31-lighter.gif https://danq.me/_q26t/badges/dan-q-88x31-peekaboo-scroller.gif https://beige-buttons.danq.dev/beige-buttons-88x31.gif https://embed-html.danq.dev/embed-html-88x31.gif

Artifact Swap: I met Dan Q on Melonland!Polyamorousradio polyRainbow ConnectionJoined 2025!
Dan Q
Hero Member ⚓︎
*****
View Profile WWWArt


I have no idea what I am doing
⛺︎ My Room
RSS: RSS

Guild Memberships:
« Reply #22 on: May 31, 2026 @571.30 » Embed

I learned something: you can convert any ISO two-letter country code e.g. DE, FR, US into the emoji of the flag

Learning this amused me so much that I stopped implementing a guestbook for a bit and I instead implemented an interactive web component to demonstrate how it works, and then wrote a blog post around that web component. Totally nerdsniped myself, today.
Logged

https://danq.me/_q26t/badges/dan-q-88x31-lighter.gif https://danq.me/_q26t/badges/dan-q-88x31-peekaboo-scroller.gif https://beige-buttons.danq.dev/beige-buttons-88x31.gif https://embed-html.danq.dev/embed-html-88x31.gif

Artifact Swap: I met Dan Q on Melonland!Polyamorousradio polyRainbow ConnectionJoined 2025!
andrew
Newbie ⚓︎
*
View Profile WWW


HULLO it is I, andrew, webmaster of cork corner
⛺︎ My Room

Artifacts:
Joined 2026!
« Reply #23 on: June 02, 2026 @881.06 » Embed

I am one of the people who has created their own guestbook. If you host your own site, it's not too difficult. I'm hosting on vercel on my own domain. If you find yourself in a similar situation, it is pretty easy to build the guestbook using serverless APIs and a simple databse. I chose neon database, as it uses PostgreSQL and integrates really well with vercel. Plus, it has a free tier, so you don't need to pay for storage unless you plan on having a lot of data stored.

Its a pretty fun/educational project if you wan to learn new programming skills!
Logged

https://corkcorner.space/assets/cork_link.png

Artifact Swap: pompompurin
Melooon
Hero Member ⚓︎
*****
View Profile WWWArt


So many stars!
⛺︎ My Room
SpaceHey: Friend Me!
StatusCafe: melon
iMood: Melonking
Itch.io: My Games
RSS: RSS

Guild Memberships:
Artifacts:
Flinstone VitaminAlways working hard!Known Apple shillcoolest melon on the web!Emergency feel-good teaa silly heart 4 melon :)
« Reply #24 on: June 02, 2026 @918.19 » Embed

I did e-mail them to ask if they would lift the limit for me, but they have not responded yet
They responded and they have lifted my message limit to 10,000 so there is no longer an impending crisis from my end :smile: However I still very much support DANs project!
Logged


everything lost will be recovered, when you drift into the arms of the undiscovered

Artifact Swap: Wildflowers!Hungry Mousebitsy catPeeperSquidwardRed TulipMellohiHelp, my tail is stuck!InternetPoochI seek you!I met Dan Q on Melonland!?Stinky CheeseFlowersOpalEvil fucking snailPlank
Pages: 1 [2] Print Embed 
« previous next »
 

Melonking.Net © Always and ever was! SMF 2.0.19 | SMF © 2021 | Privacy Notice | Send Feedback | Supporters ♥ Forum Guide | Rules | RSS | WAP | Mobile


MelonLand Badges and Other Melon Sites!

MelonLand Project! Visit the MelonLand Forum! Support the Forum
Visit Melonking.Net! Visit the Gif Gallery! Pixel Sea TamaNOTchi
MelonLand @000

Want to Login or Join ?

Minecraft: Online
Join: craft.melonking.net