Compare commits

...

10 Commits

Author SHA1 Message Date
Abner Coimbre
e77d0d940b Move chat guidelines to the top 2026-03-31 12:39:11 -07:00
Abner Coimbre
2645be5e1c Add chat guidelines 2026-03-31 12:37:27 -07:00
Abner Coimbre
979618ee3e Delay 2026 timeline a bit 2026-03-04 10:55:12 -08:00
Abner Coimbre
2bfc633fd4 Update timeline from Jan to Feb 2026-02-16 22:25:20 -08:00
Abner Coimbre
edc16a0474 Add Mariano to Contact page 2026-02-16 22:25:04 -08:00
Abner Coimbre
df98f34dbd chat: Add Reconnecting... section 2026-01-28 12:07:57 -08:00
Abner Coimbre
e9caff1732 Minor tweak to meta description 2026-01-22 13:26:44 -08:00
Abner Coimbre
6d4ee87008 Update meta description 2026-01-22 13:19:13 -08:00
Abner Coimbre
0ccae94c4c Meetup hosts: new section on chat invites 2026-01-14 12:37:41 -08:00
Abner Coimbre
af46d85417 Add README 2026-01-11 17:20:31 -08:00
11 changed files with 140 additions and 13 deletions

20
README.md Normal file
View File

@@ -0,0 +1,20 @@
## 🚀 Getting Started
### ⚙️ Prerequisites
To run the website locally, follow these steps:
- Install [Hugo Extended v0.140+](https://github.com/gohugoio/hugo/releases/tag/v0.140.0) on your $PATH
- Navigate to project root folder
- Run `hugo server`
- Visit `localhost:1313` on your browser
That's it! Any changes you make will be hot reloaded.
## WARNING:
For maximum compatibility we recommend sticking with Hugo `v0.140.0` (**Extended** edition, linked above.) We haven't tested other versions.
## 💻 Automatic Deployment
Anything we `git push` will be published to [guide.handmadecities.com](https://guide.handmadecities.com) automatically. PROCEED WITH CAUTION!

View File

@@ -9,6 +9,16 @@ We've tried many services: we dabbled on IRC, worked [closely](https://archive.i
It is our home from now on.
## Chat Guidelines
We're in a high-trust environment where users are known humans, so our guidelines are straightforward:
1. **Baseline decorum.** Engineering requires rigorous criticism, but [there's a line](https://abner.page/post/linus-is-a-father-figure-now/) you can't cross.
2. **Keep off-topic in #off-topic.** Anything unrelated to our industry should be in `#off-topic` for easy muting. Religion or politics are discouraged and moderated (expect bias from leadership.)
3. **AI hype profiteers are banned.** You know *exactly* what we're talking about. Discuss artificial intelligence with sobriety.
## Joining Revolt
Our Revolt [instance](https://revolt.handmadecities.com) requires users to register an account:
@@ -23,7 +33,7 @@ In order to receive one, the user [submits an application](https://handmadecitie
The application is submitted to `support@handmadecities.com`. The founder or his volunteer staff typically reviews it within three business days.
{{< alert context="primary" text="Meetup hosts also have the ability to send invites. Whoever attends a meetup may request one from the host." />}}
{{< alert context="primary" text="Meetup hosts also [have the ability](/docs/meetups/hosts/#chat-invites) to send invites. Whoever attends a meetup may request one from the host." />}}
After approval, users can register with any username. This offers some degree of privacy when interacting with the community at large.
@@ -38,7 +48,7 @@ One should follow the proper order of operations.
## Going Mobile
Revolt's mobile app doesn't support custom domains yet. Instead, we must install our Revolt instance as a Progressive Web App (PWA).
Revolt's native app doesn't support custom domains yet. Instead, we should install Revolt as a Progressive Web App (PWA).
Please visit [revolt.handmadecities.com](https://revolt.handmadecities.com) on the phone's native browser (e.g. Safari on iOS), then look for an **Add to Homescreen** option (or similar):
@@ -77,7 +87,7 @@ Alternatively an *existing* Verified Human may vouch for someone they've met in
Revolt is known as Discord Lite because of some missing features. The quirks or limitations are as follows:
1. **Can't point Revolt app to custom domain.** This is discussed under [Going Mobile](/docs/chat/#going-mobile).
2. **Missing bells & whistles**. Theres no message pinning. No threads. Strange restrictions apply with emoji reactions.
2. **Missing bells & whistles**. Can't pin messages. Can't start threads.
3. **Lack of end-to-end encryption.** Discord has this issue too. Handmade Cities policy is to safeguard private DMs and never inspect their contents.
These are all minor irritations to us, not deal breakers.

View File

@@ -22,6 +22,23 @@ As the host it's your burden to call out uncaring programmers in a civil manner,
Handmade Cities offers free mentoring to all potential hosts. We realize organizing a meetup is a nerve-wracking ordeal and our ultimate goal is getting you comfortable with this. The more social butterflies among us programmers the better!
## Chat Invites
Meetup hosts have the power to invite community members to our [chat server](/docs/chat). Here are the steps:
1. [Download](https://git.handmadecities.com/meetups/meetupinvite2000/releases) the latest **Meetup Invite 2000** from HMC Gitea
2. Make sure `config.toml` lives next to the binary (if you lost this file [notify us](/docs/support/contact) right away)
3. Run `./meetupinvite2000 chat [email]` where `[email]` is the email address of the community member
You'll then be asked the following question by the command-line tool:
- `"Can you vouch for the human identity of [email]?"`
If you answer no the program stops and exits. Otherwise you'll be asked the final question:
- `"Have you met this person in meatspace?"`
If you answer yes, the invite gets generated and the member is granted a **Verified Human** badge. If you answer no, the invite is generated anyway but this new user does NOT receive the **Verified Human** badge.
[Learn more](/docs/chat/#verified-human-badge) about badges.
## Sponsor-Free Events
We are 100% indie and [very vocal](https://handmadecities.com/about) about having zero sponsors. If we discover your in-person event is financially backed by some entity, **the ban is immediate** and publicly disclosed to the community.

View File

@@ -3,26 +3,44 @@ title: "Contact Us"
weight: 20
---
As we [don't have](/docs/timeline/2026/#mass-delete-social-media) social media, the most efficient way to reach out is by sending an email.
As we [don't have](/docs/timeline/2026/#mass-delete-social-media) social media, the most efficient way to reach out is by sending us emails.
## Our Founder
## Founder
Our founder is [Abner Coimbre](https://abner.page) and may be contacted at `abner@handmadecities.com`.
Our founder is [Abner Coimbre](https://handmadecities.com/about). As the community organizer he's unfortunately the busiest member (send a reminder after three business days if there's no response.)
Allow up to three business days to receive a response. As community organizer his Inbox is perpetually cluttered: send a reminder after three business days if there's no response.
- `abner@handmadecities.com`.
It might take multiple poking attempts to get his attention.
---
## Editor
Zac Nowicki is editor and maintainer of Handmade Cities. He's also tech lead for [Kagi Search](https://kagi.com)—opinions here do not represent his employer.
Zac Nowicki is editor for Handmade Cities: he reviews and edits all our writing. If we have egregious typos or false statements please reach out to him.
Find him at `zac@handmadecities.com`.
Zac is also the tech lead for [Kagi Search](https://kagi.com)—opinions here do not represent his employer.
- `zac@handmadecities.com`
---
## Server Admin
Mariano Uvalle [started contributing](https://handmadecities.com/news/updates-to-our-revolt-instance) improvements to the chat server. He's implementing [Abner's agenda](https://lobste.rs/s/vrczh6/discord_launches_teen_by_default#c_ko6xqn) to fork Revolt and make the experience rival that of Discord. We may empower him with more server access in the future.
Chat-related bugs or feature requests should be sent here.
- `mariano@handmadecities.com`
---
## Support Staff
In order to ease the burden on Abner you may email support staff at `support@handmadecities.com`. Trusted community members have access to this Inbox and your chances of getting a faster reply goes up.
To ease the burden on Abner you might email support staff instead. Trusted community members have access to this Inbox and your chances of getting a faster reply goes up.
- `support@handmadecities.com`
---
## Meetup Hosts
Meetup hosts have [their own](https://handmadecities.com/meetups) dedicated pages with corresponding email addresses. Note that we don't control office hours, so response times may vary.
Meetup hosts have [their own](https://handmadecities.com/meetups) dedicated pages with corresponding email addresses. Note that we don't control office hours so response times may vary.

View File

@@ -7,7 +7,7 @@ Handmade Cities (HMC) calls this year a period of *quiet growth*: making sure of
## Mass-Delete Social Media
Our founder's [made it clear](https://abner.page/post/exit-the-feed/) competent programmers must leave for-profit social media. In January 2026 the following accounts will be deleted:
Our founder's [made it clear](https://abner.page/post/exit-the-feed/) competent programmers must leave for-profit social media. By the Spring of 2026 the following accounts will be deleted:
- Discord Servers ([read more](https://handmadecities.com/news/revolt-against-discord))
- YouTube Channels
- Twitch Channels

View File

@@ -0,0 +1,62 @@
<head>
<meta charset="utf-8" />
<title>{{- .Site.Title }}</title>
{{- if not hugo.IsProduction }}
<meta name="robots" content="noindex">
{{- end }}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Your Quick Guide to the Handmade Cities Community." />
<meta name="keywords" content="Documentation, Hugo, Hugo Theme, Bootstrap" />
<meta name="author" content="Zac Nowicki - Editor" />
<meta name="email" content="zac@handmadecities.com" />
<meta name="website" content="https://guide.handmadecities.com" />
<meta name="Version" content="v0.5.0" />
<!-- favicon -->
{{ block "head/favicon" . }}{{ partialCached "head/favicon.html" . }}{{ end }}
<!-- Google Fonts -->
{{- partial "google-fonts" . }}
<!-- Custom CSS -->
{{- $options := dict "enableSourceMap" true }}
{{- if hugo.IsProduction}}
{{- $options := dict "enableSourceMap" false "outputStyle" "compressed" }}
{{- end }}
{{- $style := resources.Get "/scss/style.scss" }}
{{- $style = $style | resources.ExecuteAsTemplate "/scss/style.scss" . | css.Sass $options }}
{{- if hugo.IsProduction }}
{{- $style = $style | minify | fingerprint "sha384" }}
{{- end -}}
<link rel="stylesheet" href="{{ $style.RelPermalink }}" {{ if hugo.IsProduction }}integrity="{{ $style.Data.Integrity }}"{{ end -}}/>
<!-- Bootstrap JS -->
{{ $js := resources.Get "js/bootstrap.js" }}
{{ $params := dict }}
{{ $sourceMap := cond hugo.IsProduction "" "inline" }}
{{ $opts := dict "sourceMap" $sourceMap "minify" hugo.IsProduction "target" "es2018" "params" $params }}
{{ $js = $js | js.Build $opts }}
{{ if hugo.IsProduction }}
{{ $js = $js | fingerprint "sha384" }}
{{ end }}
<script src="{{ $js.RelPermalink }}" {{ if hugo.IsProduction }}integrity="{{ $js.Data.Integrity }}"{{ end -}} defer></script>
<!-- Image Compare Viewer -->
{{ if ($.Scratch.Get "image_compare_enabled") }}
{{ $imagecompare := resources.Get "js/image-compare-viewer.min.js" }}
{{- if not hugo.IsServer }}
{{- $js := (slice $imagecompare) | resources.Concat "/js/image-compare.js" | minify | fingerprint "sha384" }}
<script type="text/javascript" src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}"></script>
{{- else }}
{{- $js := (slice $imagecompare) | resources.Concat "/js/image-compare.js" }}
<script type="text/javascript" src="{{ $js.Permalink }}" {{ if hugo.IsProduction }}integrity="{{ $js.Data.Integrity }}"{{ end }}></script>
{{- end }}
{{- end }}
<!-- Plausible Analytics Config -->
{{- if not hugo.IsServer }}
{{ if and (.Site.Params.plausible.scriptURL) (.Site.Params.plausible.dataDomain) -}}
{{- partialCached "head/plausible" . }}
{{- end -}}
{{- end -}}
<!-- Google Analytics v4 Config -->
{{- if not hugo.IsServer }}
{{- if .Site.Config.Services.GoogleAnalytics.ID }}
{{- template "_internal/google_analytics.html" . -}}
{{- end -}}
{{- end -}}
</head>

BIN
themes/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB