aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBradley Taunt <brad@serpapi.com>2024-01-17 13:09:26 -0500
committerBradley Taunt <brad@serpapi.com>2024-01-17 13:09:26 -0500
commite19f5e293b93835387dd7173a511e687187e972a (patch)
tree0d3a767df1926610bb42af1e66bf01385f0d6e0b
Initial commit on self hosted cgit platform
-rw-r--r--LICENSE21
-rw-r--r--Makefile13
-rw-r--r--README.md8
-rwxr-xr-xbarf105
-rw-r--r--build/2024-01-10-introducing-jsfree/index.html58
-rw-r--r--build/atom.xml34
-rw-r--r--build/browsers/index.html70
-rw-r--r--build/code-forges/index.html67
-rw-r--r--build/email/index.html59
-rw-r--r--build/forums/index.html47
-rw-r--r--build/games/index.html47
-rw-r--r--build/index.html66
-rw-r--r--build/pages.tsv9
-rw-r--r--build/posts.tsv1
-rw-r--r--build/public/images/jsfree-logo.jpgbin0 -> 22050 bytes
-rw-r--r--build/search-engines/index.html55
-rw-r--r--build/social-media/index.html47
-rw-r--r--build/video/index.html47
-rw-r--r--build/web-hosting/index.html47
-rw-r--r--footer.html24
-rw-r--r--header.html17
-rw-r--r--index.md28
-rw-r--r--pages/browsers.md34
-rw-r--r--pages/code-forges.md28
-rw-r--r--pages/email.md23
-rw-r--r--pages/forums.md8
-rw-r--r--pages/games.md8
-rw-r--r--pages/search-engines.md18
-rw-r--r--pages/social-media.md8
-rw-r--r--pages/video.md8
-rw-r--r--pages/web-hosting.md8
-rw-r--r--posts/2024-01-10-introducing-jsfree.md27
-rw-r--r--public/images/jsfree-logo.jpgbin0 -> 22050 bytes
33 files changed, 1040 insertions, 0 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8faca57
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Bradley Taunt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b16a580
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,13 @@
+build:
+ sh ./barf
+ rsync -r public/ build/public
+
+clean:
+ rm -rf build/*
+
+watch:
+ while true; do \
+ ls -d .git/* * posts/* pages/* header.html | entr -cd make ;\
+ done
+
+.PHONY: build clean watch
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..59e1970
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+# jsfree.org
+
+The main website and project for jsfree.org
+
+[jsfree.org](https://jsfree.org)
+
+* Submit changes, patches or suggestions [here](https://sr.ht/~bt/jsfree.org/lists)
+* or [email me directly](mailto:brad@bt.ht) if you prefer
diff --git a/barf b/barf
new file mode 100755
index 0000000..81bbcd2
--- /dev/null
+++ b/barf
@@ -0,0 +1,105 @@
+#!/bin/sh
+set -eu
+MARKDOWN=smu
+IFS=' '
+
+# Create tab separated file with filename, title, creation date, last update
+index_tsv() {
+ for f in "$1"/*.md
+ do
+ title=$(sed -n '/^# /{s/# //p; q}' "$f")
+ printf '%s\t%s\t%s\t%s\n' "$f" "${title:="No Title"}"
+ done
+}
+
+index_html() {
+ # Print header
+ title=$(sed -n '/^# /{s/# //p; q}' index.md)
+ sed "s/{{TITLE}}/$title/" header.html
+
+ # Intro text
+ $MARKDOWN index.md
+
+ echo "<ul>"
+
+ # Posts
+ while read -r f title created; do
+ link=$(echo "$f" | sed -E 's|.*/(.*).md|\1/|')
+ created=$(echo $(head -3 "$f" | tail -1))
+ echo "<li>$created &middot; <a href=\"$link\">$title</a></li>"
+ done < "$1" | sort -r
+
+ echo "</ul>"
+
+ # Print footer after post list
+ cat footer.html
+}
+
+atom_xml() {
+ uri=$(sed -rn '/atom.xml/ s/.*href="([^"]*)".*/\1/ p' header.html)
+ domain=$(echo "$uri" | sed 's/atom.xml//g' | sed 's|/[^/]*$||')
+ first_commit_date=$(git log --pretty='format:%ai' . | cut -d ' ' -f1 | tail -1)
+
+ cat <<EOF
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <title>$(sed -n '/^# /{s/# //p; q}' index.md)</title>
+ <link href="$domain/atom.xml" rel="self" />
+ <updated>$(date +%FT%TZ)</updated>
+ <author>
+ <name>$(git config user.name)</name>
+ </author>
+ <id>$domain,$first_commit_date:default-atom-feed/</id>
+EOF
+
+ while read -r f title created; do
+
+ content=$($MARKDOWN "$f" | sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g')
+ post_link=$(echo "$f" | sed -E 's|posts/(.*).md|\1|')
+ basic_date=$(echo $(head -3 "$f" | tail -1))
+ published_date=$(date -d $basic_date -u +%Y-%m-%dT10:%M:%SZ)
+
+ cat <<EOF
+ <entry>
+ <title>$title</title>
+ <content type="html">$content</content>
+ <link href="$domain/$post_link"/>
+ <id>$domain/$post_link</id>
+ <updated>$published_date</updated>
+ <published>$published_date</published>
+ </entry>
+EOF
+ done < "$1"
+
+ echo '</feed>'
+}
+
+write_page() {
+ filename=$1
+ directory=$(echo $(basename "$filename" .md))
+ $(mkdir -p build/$directory)
+ target=$(echo "$filename" | sed -r 's|\w+/(.*).md|build/\1/index.html|')
+ created=$(echo $(head -3 "$filename" | tail -1))
+ title=$2
+
+ $MARKDOWN "$filename" | \
+ cat header.html - |\
+ sed "s|{{TITLE}}|$title|" \
+ > "$target" && cat footer.html >> "$target"
+}
+
+rm -rf build && mkdir build
+
+# Blog posts
+index_tsv posts | sort -rt " " -k 3 > build/posts.tsv
+index_html build/posts.tsv > build/index.html
+atom_xml build/posts.tsv > build/atom.xml
+while read -r f title created; do
+ write_page "$f" "$title" "$created"
+done < build/posts.tsv
+
+# Pages
+index_tsv pages > build/pages.tsv
+while read -r f title created; do
+ write_page "$f" "$title" "$created"
+done < build/pages.tsv
diff --git a/build/2024-01-10-introducing-jsfree/index.html b/build/2024-01-10-introducing-jsfree/index.html
new file mode 100644
index 0000000..c2ca34c
--- /dev/null
+++ b/build/2024-01-10-introducing-jsfree/index.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Introducing jsfree.org</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Introducing jsfree.org</h1>
+<p>2024-01-10</p>
+<p>Hello and welcome to jsfree.org!</p>
+<h2>The What</h2>
+<p>This site is a growing, community-driven collection of web services that work 100% without JavaScript. So if you're running older, unspported hardware or prefer to run a browser with JavaScript disabled, the services listed on this site will all work seamlessly! Pretty neat, eh?</p>
+<p>(My name is <a href="https://bt.ht">Brad</a> BTW - but the community is more important than the catalyst!)</p>
+<h2>The Why</h2>
+<p>The core concept behind this project is not to hate on JavaScript. JavaScript isn't evil or going to cause the internet to explode. This was merely created to help showcase web applications that work without such overheads. Some users just prefer to go JavaScript-free, similar to those who have no issue running it. I think it's fair to respect personal choice.</p>
+<p>So, if you feel offended by the concept of others not liking JavaScript, maybe go for a nice walk and think deeply about why something so unimportant would bother you so much. There are much better things to spend your time and energy on. Relax!</p>
+<h2>Get Involved</h2>
+<p>I'm far from an expert in the field of "all-things JavaScript-free". Consider helping me out and making this site even better!</p>
+<ul>
+<li><a href="https://lists.sr.ht/~bt/jsfree.org">Submit</a> service/category suggestions or improvements to the main website.</li>
+<li>Create your own JavaScript-free web service / application. (Then submit it!)</li>
+<li>Spread the word, so the world knows they can go JavaScript-free.</li>
+</ul>
+<p>That's all I really have to say. If you're interested in any JavaScript-free related news in the future, consider following the main <a href="/atom.xml">RSS feed</a>. Cheers!</p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/atom.xml b/build/atom.xml
new file mode 100644
index 0000000..089d25c
--- /dev/null
+++ b/build/atom.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <title>jsfree.org</title>
+ <link href="https://jsfree.org/atom.xml" rel="self" />
+ <updated>2024-01-15T19:24:09Z</updated>
+ <author>
+ <name>Bradley Taunt</name>
+ </author>
+ <id>https://jsfree.org,2024-01-10:default-atom-feed/</id>
+ <entry>
+ <title>Introducing jsfree.org</title>
+ <content type="html">&lt;h1&gt;Introducing jsfree.org&lt;/h1&gt;
+&lt;p&gt;2024-01-10&lt;/p&gt;
+&lt;p&gt;Hello and welcome to jsfree.org!&lt;/p&gt;
+&lt;h2&gt;The What&lt;/h2&gt;
+&lt;p&gt;This site is a growing, community-driven collection of web services that work 100% without JavaScript. So if you&#39;re running older, unspported hardware or prefer to run a browser with JavaScript disabled, the services listed on this site will all work seamlessly! Pretty neat, eh?&lt;/p&gt;
+&lt;p&gt;(My name is &lt;a href=&quot;https://bt.ht&quot;&gt;Brad&lt;/a&gt; BTW - but the community is more important than the catalyst!)&lt;/p&gt;
+&lt;h2&gt;The Why&lt;/h2&gt;
+&lt;p&gt;The core concept behind this project is not to hate on JavaScript. JavaScript isn&#39;t evil or going to cause the internet to explode. This was merely created to help showcase web applications that work without such overheads. Some users just prefer to go JavaScript-free, similar to those who have no issue running it. I think it&#39;s fair to respect personal choice.&lt;/p&gt;
+&lt;p&gt;So, if you feel offended by the concept of others not liking JavaScript, maybe go for a nice walk and think deeply about why something so unimportant would bother you so much. There are much better things to spend your time and energy on. Relax!&lt;/p&gt;
+&lt;h2&gt;Get Involved&lt;/h2&gt;
+&lt;p&gt;I&#39;m far from an expert in the field of &quot;all-things JavaScript-free&quot;. Consider helping me out and making this site even better!&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&quot;https://lists.sr.ht/~bt/jsfree.org&quot;&gt;Submit&lt;/a&gt; service/category suggestions or improvements to the main website.&lt;/li&gt;
+&lt;li&gt;Create your own JavaScript-free web service / application. (Then submit it!)&lt;/li&gt;
+&lt;li&gt;Spread the word, so the world knows they can go JavaScript-free.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;That&#39;s all I really have to say. If you&#39;re interested in any JavaScript-free related news in the future, consider following the main &lt;a href=&quot;/atom.xml&quot;&gt;RSS feed&lt;/a&gt;. Cheers!&lt;/p&gt;</content>
+ <link href="https://jsfree.org/2024-01-10-introducing-jsfree"/>
+ <id>https://jsfree.org/2024-01-10-introducing-jsfree</id>
+ <updated>2024-01-10T10:00:00Z</updated>
+ <published>2024-01-10T10:00:00Z</published>
+ </entry>
+</feed>
diff --git a/build/browsers/index.html b/build/browsers/index.html
new file mode 100644
index 0000000..0a563fb
--- /dev/null
+++ b/build/browsers/index.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Browsers</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Browsers</h1>
+<p>This page is a collection of web browsers that have JavaScript disabled by default or are missing support entirely.</p>
+<p><dl>
+ <dt><a href="https://dillo-browser.github.io/">Dillo</a></dt>
+ <dd>
+ Dillo is a fast and small graphical web browser with the following features:
+ <ul>
+ <li>Multi-platform, running on Linux, BSD, MacOS and even Atari.</li>
+ <li>Written in C and C++ with few dependencies.</li>
+ <li>Implements its own real-time rendering engine.</li>
+ <li>Low memory usage and fast rendering, even with large pages.</li>
+ <li>Uses the fast and bloat-free <a href="https://www.fltk.org/">FLTK</a> GUI library.</li>
+ <li>Support for HTTP, HTTPS, FTP and local files.</li>
+ <li>And more...</li>
+ </ul>
+ </dd>
+</dl></p>
+<p><dl>
+ <dt><a href="https://www.netsurf-browser.org/">NetSurf</a></dt>
+ <dd>Small as a mouse, fast as a cheetah and available for free. NetSurf is a multi-platform web browser for RISC OS, UNIX-like platforms (including Linux), Mac OS X, and more.</dd>
+</dl></p>
+<p><dl>
+ <dt><a href="https://github.com/ocoufal/mothra">Mothra</a></dt>
+ <dd>A lightweight web browser for Plan 9.</dd>
+</dl></p>
+<p><dl>
+ <dt><a href="http://lab-fgb.com/abaco/">Abaco</a></dt>
+ <dd>Abaco is a multi-page graphical web browser for Plan 9 intended to retrieve and display web pages while trying to be as congruent as possible with system. It is a multi-threaded and modest-sized program.</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/code-forges/index.html b/build/code-forges/index.html
new file mode 100644
index 0000000..43fb06a
--- /dev/null
+++ b/build/code-forges/index.html
@@ -0,0 +1,67 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Code Forges</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Code Forges</h1>
+<p>This page is a collection of code forges/hosting providers that work without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://sourcehut.org">Sourcehut</a></dt>
+ <dd>
+ Sourcehut is a suite of open source tools is the software development. Core features include:
+ <ul>
+ <li>Absolutely no tracking or advertising</li>
+ <li>All features work without JavaScript</li>
+ <li>Many features work without an <em>account</em></li>
+ <li>
+ The <a href="https://forgeperf.org" rel="noopener">fastest &amp; lightest</a> software forge
+ </li>
+ <li>
+ <a href="https://sr.ht/~sircmpwn/sourcehut" rel="noopener">
+ 100% free and open source software
+ </a>
+ </li>
+ <li>
+ <a href="/foss-contributions/" rel="noopener">
+ Supports hundreds of free software projects
+ </a>
+ </li>
+ </ul>
+ </dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/email/index.html b/build/email/index.html
new file mode 100644
index 0000000..5ec90b1
--- /dev/null
+++ b/build/email/index.html
@@ -0,0 +1,59 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Email</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Email</h1>
+<p>This page is a collection of email services that work without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://www.migadu.com/">Migadu</a></dt>
+ <dd>Consolidate all your email addresses and domains at a flat price. Take back your email liberty and give unlimited email addresses to all your projects, clients and family members.</dd>
+</dl></p>
+<p><dl>
+ <dt><a href="https://git.sr.ht/~emersion/alps">Alps</a></dt>
+ <dd>A simple and extensible webmail.</dd>
+</dl></p>
+<p><dl>
+ <dt><a href="https://www.squirrelmail.org">SqurrielMail</a></dt>
+ <dd>SquirrelMail is a standards-based webmail package written in PHP.</dd>
+</dl></p>
+<p><dl>
+ <dt><a href="https://feedmail.org">FeedMail</a></dt>
+ <dd>FeedMail sends you updates from your favourite websites directly to your inbox.</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/forums/index.html b/build/forums/index.html
new file mode 100644
index 0000000..0079739
--- /dev/null
+++ b/build/forums/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Forums</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Forums</h1>
+<p>This page is a collection of forum software that works without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://forum.agreper.com/">Agreper</a></dt>
+ <dd>Minimal, no-JS forum software.</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/games/index.html b/build/games/index.html
new file mode 100644
index 0000000..3694c8a
--- /dev/null
+++ b/build/games/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Games</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Games</h1>
+<p>This page is a collection of web-based games that run without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://propjockey.github.io/css-sweeper/">CSS Sweeper</a></dt>
+ <dd>MineSweeper implemented in CSS + HTML using the Space Toggle trick (no JavaScript!)</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/index.html b/build/index.html
new file mode 100644
index 0000000..9af0d5f
--- /dev/null
+++ b/build/index.html
@@ -0,0 +1,66 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>jsfree.org</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>jsfree.org</h1>
+<p><strong>A community-curated collection of <abbr title="Web-based applications, not websites">web services</abbr> that work without JavaScript.</strong></p>
+<hr />
+<p>If you're looking for the reasoning behind this project, read <a href="/2024-01-10-introducing-jsfree/">Introducing jsfree.org</a></p>
+<h2>Core objectives</h2>
+<ul>
+<li>Avoid e-waste by supporting old, outdated hardware.</li>
+<li>Support browsers that lack the ability to run JavaScript.</li>
+<li>Increase web accessibility.</li>
+<li>Focus on performance and software efficiency.</li>
+<li>Promote a safer, faster experience on the web.</li>
+<li>Be excellent to each other and have fun!</li>
+</ul>
+<h2>How you can help</h2>
+<p>Things you can do to contribute to the project (in order of importance):</p>
+<ul>
+<li><a href="https://sr.ht/~bt/jsfree.org/lists">Submit</a> service/category suggestions or improvements to the main website.</li>
+<li>Create your own JavaScript-free web service / application. (Then submit it!)</li>
+<li>Spread the word, so the world knows they can go JavaScript-free.</li>
+</ul>
+<h2>News</h2>
+<p>You can keep up-to-date by following the <a href="/atom.xml">Atom feed</a>.</p>
+<ul>
+<li>2024-01-10 &middot; <a href="2024-01-10-introducing-jsfree/">Introducing jsfree.org</a></li>
+</ul>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/pages.tsv b/build/pages.tsv
new file mode 100644
index 0000000..688f724
--- /dev/null
+++ b/build/pages.tsv
@@ -0,0 +1,9 @@
+pages/browsers.md Browsers
+pages/code-forges.md Code Forges
+pages/email.md Email
+pages/forums.md Forums
+pages/games.md Games
+pages/search-engines.md Search Engines
+pages/social-media.md Social Media
+pages/video.md Video
+pages/web-hosting.md Web Hosting
diff --git a/build/posts.tsv b/build/posts.tsv
new file mode 100644
index 0000000..9dd1080
--- /dev/null
+++ b/build/posts.tsv
@@ -0,0 +1 @@
+posts/2024-01-10-introducing-jsfree.md Introducing jsfree.org
diff --git a/build/public/images/jsfree-logo.jpg b/build/public/images/jsfree-logo.jpg
new file mode 100644
index 0000000..c9e7e78
--- /dev/null
+++ b/build/public/images/jsfree-logo.jpg
Binary files differ
diff --git a/build/search-engines/index.html b/build/search-engines/index.html
new file mode 100644
index 0000000..a285768
--- /dev/null
+++ b/build/search-engines/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Search Engines</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Search Engines</h1>
+<p>This page is a collection of search engines that work without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://html.duckduckgo.com/html">DuckDuckGo (HTML version)</a></dt>
+ <dd>Javascript-free, HTML version of DuckDuckGo.</dd>
+</dl></p>
+<p><dl>
+ <dt><a href="https://frogfind.com/">FrogFind</a></dt>
+ <dd>The search engine for vintage computers!</dd>
+</dl></p>
+<p><dl>
+ <dt><a href="https://github.com/searxng/searxng">SearXNG</a></dt>
+ <dd>Privacy-respecting, hackable metasearch engine.</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/social-media/index.html b/build/social-media/index.html
new file mode 100644
index 0000000..2a693ad
--- /dev/null
+++ b/build/social-media/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Social Media</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Social Media</h1>
+<p>This page is a collection of social media services that work without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://brutaldon.org">Brutaldon</a></dt>
+ <dd>A Javascript-free client for Mastodon.</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/video/index.html b/build/video/index.html
new file mode 100644
index 0000000..b8d7439
--- /dev/null
+++ b/build/video/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Video</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Video</h1>
+<p>This page is a collection of video platforms that work without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://invidious.io/">Invidious</a></dt>
+ <dd>Invidious is an open source alternative front-end to YouTube.</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/build/web-hosting/index.html b/build/web-hosting/index.html
new file mode 100644
index 0000000..e726b01
--- /dev/null
+++ b/build/web-hosting/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>Web Hosting</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
+<h1>Web Hosting</h1>
+<p>This page is a collection of web hosting providers that work without JavaScript.</p>
+<p><dl>
+ <dt><a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a></dt>
+ <dd>The masters of only pay for what you use hosting since 2002.</dd>
+</dl></p>
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/footer.html b/footer.html
new file mode 100644
index 0000000..8fd596e
--- /dev/null
+++ b/footer.html
@@ -0,0 +1,24 @@
+<footer role="contentinfo">
+ <br>
+ <hr>
+ <p>&rarr; <a href="https://sr.ht/~bt/jsfree.org/">Help edit or improve this project</a>.</p>
+ <hr>
+ <h2 id="menu">Menu Navigation</h2>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/browsers">Browsers</a></li>
+ <li><a href="/code-forges">Code Forges</a></li>
+ <li><a href="/email">Email</a></li>
+ <li><a href="/forums">Forums</a></li>
+ <li><a href="/games">Games</a></li>
+ <li><a href="/search-engines">Search Engines</a></li>
+ <li><a href="/social-media">Social Media</a></li>
+ <li><a href="/video">Video</a></li>
+ <li><a href="/web-hosting">Web Hosting</a></li>
+ </ul>
+ <small>
+ Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
+ Hosted on <a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a>. <br>
+ The <a href="https://git.sr.ht/~bt/jsfree.org">code for this site</a> is <a href="https://git.sr.ht/~bt/jsfree.org/tree/master/item/LICENSE">MIT</a>.
+ </small>
+</footer> \ No newline at end of file
diff --git a/header.html b/header.html
new file mode 100644
index 0000000..197f71e
--- /dev/null
+++ b/header.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="data:,">
+ <title>{{TITLE}}</title>
+ <link href="https://jsfree.org/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
+ <style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}img{max-width:100%;}pre{overflow:auto;}abbr{background:yellow;color:blue;cursor:help;}nav a.menu{float:right;}.logo{display:block;max-width:60px;}</style>
+</head>
+
+<nav>
+ <a class="menu" href="#menu">Menu &darr;</a>
+ <a href="/"><img class="logo" src="/public/images/jsfree-logo.jpg" alt="jsfree logo"></a>
+</nav>
+
+<main>
diff --git a/index.md b/index.md
new file mode 100644
index 0000000..0724360
--- /dev/null
+++ b/index.md
@@ -0,0 +1,28 @@
+# jsfree.org
+
+**A community-curated collection of <abbr title="Web-based applications, not websites">web services</abbr> that work without JavaScript.**
+
+---
+
+If you're looking for the reasoning behind this project, read [Introducing jsfree.org](/2024-01-10-introducing-jsfree/)
+
+## Core objectives
+
+* Avoid e-waste by supporting old, outdated hardware.
+* Support browsers that lack the ability to run JavaScript.
+* Increase web accessibility.
+* Focus on performance and software efficiency.
+* Promote a safer, faster experience on the web.
+* Be excellent to each other and have fun!
+
+## How you can help
+
+Things you can do to contribute to the project (in order of importance):
+
+* [Submit](https://sr.ht/~bt/jsfree.org/lists) service/category suggestions or improvements to the main website.
+* Create your own JavaScript-free web service / application. (Then submit it!)
+* Spread the word, so the world knows they can go JavaScript-free.
+
+## News
+
+You can keep up-to-date by following the <a href="/atom.xml">Atom feed</a>.
diff --git a/pages/browsers.md b/pages/browsers.md
new file mode 100644
index 0000000..beed278
--- /dev/null
+++ b/pages/browsers.md
@@ -0,0 +1,34 @@
+# Browsers
+
+This page is a collection of web browsers that have JavaScript disabled by default or are missing support entirely.
+
+<dl>
+ <dt><a href="https://dillo-browser.github.io/">Dillo</a></dt>
+ <dd>
+ Dillo is a fast and small graphical web browser with the following features:
+ <ul>
+ <li>Multi-platform, running on Linux, BSD, MacOS and even Atari.</li>
+ <li>Written in C and C++ with few dependencies.</li>
+ <li>Implements its own real-time rendering engine.</li>
+ <li>Low memory usage and fast rendering, even with large pages.</li>
+ <li>Uses the fast and bloat-free <a href="https://www.fltk.org/">FLTK</a> GUI library.</li>
+ <li>Support for HTTP, HTTPS, FTP and local files.</li>
+ <li>And more...</li>
+ </ul>
+ </dd>
+</dl>
+
+<dl>
+ <dt><a href="https://www.netsurf-browser.org/">NetSurf</a></dt>
+ <dd>Small as a mouse, fast as a cheetah and available for free. NetSurf is a multi-platform web browser for RISC OS, UNIX-like platforms (including Linux), Mac OS X, and more.</dd>
+</dl>
+
+<dl>
+ <dt><a href="https://github.com/ocoufal/mothra">Mothra</a></dt>
+ <dd>A lightweight web browser for Plan 9.</dd>
+</dl>
+
+<dl>
+ <dt><a href="http://lab-fgb.com/abaco/">Abaco</a></dt>
+ <dd>Abaco is a multi-page graphical web browser for Plan 9 intended to retrieve and display web pages while trying to be as congruent as possible with system. It is a multi-threaded and modest-sized program.</dd>
+</dl>
diff --git a/pages/code-forges.md b/pages/code-forges.md
new file mode 100644
index 0000000..5720f42
--- /dev/null
+++ b/pages/code-forges.md
@@ -0,0 +1,28 @@
+# Code Forges
+
+This page is a collection of code forges/hosting providers that work without JavaScript.
+
+<dl>
+ <dt><a href="https://sourcehut.org">Sourcehut</a></dt>
+ <dd>
+ Sourcehut is a suite of open source tools is the software development. Core features include:
+ <ul>
+ <li>Absolutely no tracking or advertising</li>
+ <li>All features work without JavaScript</li>
+ <li>Many features work without an <em>account</em></li>
+ <li>
+ The <a href="https://forgeperf.org" rel="noopener">fastest &amp; lightest</a> software forge
+ </li>
+ <li>
+ <a href="https://sr.ht/~sircmpwn/sourcehut" rel="noopener">
+ 100% free and open source software
+ </a>
+ </li>
+ <li>
+ <a href="/foss-contributions/" rel="noopener">
+ Supports hundreds of free software projects
+ </a>
+ </li>
+ </ul>
+ </dd>
+</dl>
diff --git a/pages/email.md b/pages/email.md
new file mode 100644
index 0000000..8662c1d
--- /dev/null
+++ b/pages/email.md
@@ -0,0 +1,23 @@
+# Email
+
+This page is a collection of email services that work without JavaScript.
+
+<dl>
+ <dt><a href="https://www.migadu.com/">Migadu</a></dt>
+ <dd>Consolidate all your email addresses and domains at a flat price. Take back your email liberty and give unlimited email addresses to all your projects, clients and family members.</dd>
+</dl>
+
+<dl>
+ <dt><a href="https://git.sr.ht/~emersion/alps">Alps</a></dt>
+ <dd>A simple and extensible webmail.</dd>
+</dl>
+
+<dl>
+ <dt><a href="https://www.squirrelmail.org">SqurrielMail</a></dt>
+ <dd>SquirrelMail is a standards-based webmail package written in PHP.</dd>
+</dl>
+
+<dl>
+ <dt><a href="https://feedmail.org">FeedMail</a></dt>
+ <dd>FeedMail sends you updates from your favourite websites directly to your inbox.</dd>
+</dl>
diff --git a/pages/forums.md b/pages/forums.md
new file mode 100644
index 0000000..c5a118e
--- /dev/null
+++ b/pages/forums.md
@@ -0,0 +1,8 @@
+# Forums
+
+This page is a collection of forum software that works without JavaScript.
+
+<dl>
+ <dt><a href="https://forum.agreper.com/">Agreper</a></dt>
+ <dd>Minimal, no-JS forum software.</dd>
+</dl> \ No newline at end of file
diff --git a/pages/games.md b/pages/games.md
new file mode 100644
index 0000000..238fdff
--- /dev/null
+++ b/pages/games.md
@@ -0,0 +1,8 @@
+# Games
+
+This page is a collection of web-based games that run without JavaScript.
+
+<dl>
+ <dt><a href="https://propjockey.github.io/css-sweeper/">CSS Sweeper</a></dt>
+ <dd>MineSweeper implemented in CSS + HTML using the Space Toggle trick (no JavaScript!)</dd>
+</dl>
diff --git a/pages/search-engines.md b/pages/search-engines.md
new file mode 100644
index 0000000..2472334
--- /dev/null
+++ b/pages/search-engines.md
@@ -0,0 +1,18 @@
+# Search Engines
+
+This page is a collection of search engines that work without JavaScript.
+
+<dl>
+ <dt><a href="https://html.duckduckgo.com/html">DuckDuckGo (HTML version)</a></dt>
+ <dd>Javascript-free, HTML version of DuckDuckGo.</dd>
+</dl>
+
+<dl>
+ <dt><a href="https://frogfind.com/">FrogFind</a></dt>
+ <dd>The search engine for vintage computers!</dd>
+</dl>
+
+<dl>
+ <dt><a href="https://github.com/searxng/searxng">SearXNG</a></dt>
+ <dd>Privacy-respecting, hackable metasearch engine.</dd>
+</dl> \ No newline at end of file
diff --git a/pages/social-media.md b/pages/social-media.md
new file mode 100644
index 0000000..e806e05
--- /dev/null
+++ b/pages/social-media.md
@@ -0,0 +1,8 @@
+# Social Media
+
+This page is a collection of social media services that work without JavaScript.
+
+<dl>
+ <dt><a href="https://brutaldon.org">Brutaldon</a></dt>
+ <dd>A Javascript-free client for Mastodon.</dd>
+</dl> \ No newline at end of file
diff --git a/pages/video.md b/pages/video.md
new file mode 100644
index 0000000..df7db3d
--- /dev/null
+++ b/pages/video.md
@@ -0,0 +1,8 @@
+# Video
+
+This page is a collection of video platforms that work without JavaScript.
+
+<dl>
+ <dt><a href="https://invidious.io/">Invidious</a></dt>
+ <dd>Invidious is an open source alternative front-end to YouTube.</dd>
+</dl> \ No newline at end of file
diff --git a/pages/web-hosting.md b/pages/web-hosting.md
new file mode 100644
index 0000000..c329772
--- /dev/null
+++ b/pages/web-hosting.md
@@ -0,0 +1,8 @@
+# Web Hosting
+
+This page is a collection of web hosting providers that work without JavaScript.
+
+<dl>
+ <dt><a href="https://nearlyfreespeech.net">NearlyFreeSpeech.net</a></dt>
+ <dd>The masters of only pay for what you use hosting since 2002.</dd>
+</dl>
diff --git a/posts/2024-01-10-introducing-jsfree.md b/posts/2024-01-10-introducing-jsfree.md
new file mode 100644
index 0000000..788048e
--- /dev/null
+++ b/posts/2024-01-10-introducing-jsfree.md
@@ -0,0 +1,27 @@
+# Introducing jsfree.org
+
+2024-01-10
+
+Hello and welcome to jsfree.org!
+
+## The What
+
+This site is a growing, community-driven collection of web services that work 100% without JavaScript. So if you're running older, unspported hardware or prefer to run a browser with JavaScript disabled, the services listed on this site will all work seamlessly! Pretty neat, eh?
+
+(My name is [Brad](https://bt.ht) BTW - but the community is more important than the catalyst!)
+
+## The Why
+
+The core concept behind this project is not to hate on JavaScript. JavaScript isn't evil or going to cause the internet to explode. This was merely created to help showcase web applications that work without such overheads. Some users just prefer to go JavaScript-free, similar to those who have no issue running it. I think it's fair to respect personal choice.
+
+So, if you feel offended by the concept of others not liking JavaScript, maybe go for a nice walk and think deeply about why something so unimportant would bother you so much. There are much better things to spend your time and energy on. Relax!
+
+## Get Involved
+
+I'm far from an expert in the field of "all-things JavaScript-free". Consider helping me out and making this site even better!
+
+* [Submit](https://lists.sr.ht/~bt/jsfree.org) service/category suggestions or improvements to the main website.
+* Create your own JavaScript-free web service / application. (Then submit it!)
+* Spread the word, so the world knows they can go JavaScript-free.
+
+That's all I really have to say. If you're interested in any JavaScript-free related news in the future, consider following the main [RSS feed](/atom.xml). Cheers!
diff --git a/public/images/jsfree-logo.jpg b/public/images/jsfree-logo.jpg
new file mode 100644
index 0000000..c9e7e78
--- /dev/null
+++ b/public/images/jsfree-logo.jpg
Binary files differ