Aral Balkan<p>Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)</p><p><a href="https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">kitten.small-web.org/reference</span><span class="invisible">/#kitten-s-interactive-shell-repl</span></a></p><p>(I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)</p><p>¹ <a href="https://small-tech.org" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">small-tech.org</span><span class="invisible"></span></a><br>² <a href="https://sitejs.org" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">sitejs.org</span><span class="invisible"></span></a><br>³ <a href="https://gohugo.io/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">gohugo.io/</span><span class="invisible"></span></a><br>⁴ <a href="https://kitten.small-web.org" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">kitten.small-web.org</span><span class="invisible"></span></a><br>⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see <a href="https://kitten.small-web.org/reference/#sessions-and-authentication" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">kitten.small-web.org/reference</span><span class="invisible">/#sessions-and-authentication</span></a>).<br>⁶ <a href="https://codeberg.org/small-tech/jsdb" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">codeberg.org/small-tech/jsdb</span><span class="invisible"></span></a></p><p><a href="https://mastodon.ar.al/tags/Kitten" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Kitten</span></a> <a href="https://mastodon.ar.al/tags/REPL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>REPL</span></a> <a href="https://mastodon.ar.al/tags/shell" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shell</span></a> <a href="https://mastodon.ar.al/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.ar.al/tags/database" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>database</span></a> <a href="https://mastodon.ar.al/tags/JavaScriptDatabase" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScriptDatabase</span></a> <a href="https://mastodon.ar.al/tags/JSDB" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JSDB</span></a> <a href="https://mastodon.ar.al/tags/SmallTechnologyFoundation" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SmallTechnologyFoundation</span></a> <a href="https://mastodon.ar.al/tags/SiteJS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SiteJS</span></a> <a href="https://mastodon.ar.al/tags/Hugo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hugo</span></a> <a href="https://mastodon.ar.al/tags/web" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>web</span></a> <a href="https://mastodon.ar.al/tags/dev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dev</span></a> <a href="https://mastodon.ar.al/tags/NodeJS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NodeJS</span></a></p>