vanityURLs is a simple solution to deploy a budget-friendly Url Shortener. It runs at scale in your Cloudflare subscription with continuous integration.
This repository contains the source code for the vanityURLs.link website, built using the Hugo static site generator.
To preview the site locally, ensure you have Hugo installed and run:
hugo server --buildDraftsThen, visit http://localhost:1313 in your browser.
We maintain separate guides for specific workflows:
- 🛠️ Development Guide: Local environment setup, coding patterns, and testing
- 🚀 Hosting & Deployment: Production infrastructure and deployment pipelines
- 📊 Analytics & Metrics: Tracking configuration and data privacy
i18n
- Bilingual content:
page.en.md/page.fr.mdside-by-side - UI strings in
i18n/en.yamlandi18n/fr.yaml(45+ keys with pluralization) - Localized dates via
date_format_longi18n key - Language-neutral data file paths (layouts prepend
/en/or/fr/viarelLangURL) - Language switcher preserves current page when translation exists
Documentation
- Multi-level sidebar driven by
data/{en,fr}/docs_nav.yaml— paths are language-neutral - Table of contents, breadcrumbs, Edit-on-GitHub, prev/next, mobile
<select>dropdown
Blog
- Featured post via
featured: truefront matter (one per language) - Reading progress bar, social share (X, LinkedIn, copy-link), related posts, tags, RSS
UX / Accessibility
- Dark mode with no-flash-on-load
- Copy-to-clipboard on every
<pre> - ⌘K search via Pagefind
- Skip-to-content link, arrow-key sidebar nav, anchor hover
SEO / Performance
- hreflang, Open Graph, JSON-LD (SoftwareApplication, TechArticle, BreadcrumbList)
- Favicon + apple-touch-icon from
/logo.svg - Language-scoped PWA manifest
- Fingerprinted + minified CSS with SRI
Shortcodes
{{< callout type="warning" title="Breaking change" >}}
This option was removed in v2.
{{< /callout >}}
{{< code file="config/deploy.yml" lang="yaml" >}}
service: my-app
{{< /code >}}
{{< details title="Why not Kubernetes?" >}}
Kubernetes is overkill for most teams.
{{< /details >}}
{{< cards cols="3" >}}
{{< card title="Installation" icon="download" href="/docs/installation/" >}}
Get up and running in minutes.
{{< /card >}}
{{< /cards >}}
{{< filetree/container >}}
{{< filetree/folder name="config" >}}
{{< filetree/file name="deploy.yml" annotation="// edit this" >}}
{{< /filetree/folder >}}
{{< /filetree/container >}}Contributions are welcome! We recognize all types based on the all-contributors specification. Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Benoît H. Dicaire 💻 📖 🛡️ |
Brian J. Adams 🖋 🤔 📖 📓 |
Félix Léger 💻 🤔 📓 📣 |
- dnsConfiguration – Automated DNS configuration with StackOverflow's DNSControl and Git
vanityURLs is Copyright 2023 Benoît H. Dicaire and licensed under the MIT licence.
