MeiuxMeiux
One house. Software, logistics, and consulting — the site you're already on.
MeiuxMeiux is the company's own home page — and yes, it's in its own portfolio. Single Go binary, SQLite, no framework, no build step, deploys via systemd behind Apache. Twenty-seven routes, full admin panel with leads + email + reviews + AI news discovery, vitrine with live capture pipeline, dark mode, passkey-grade session hardening, and a scrub gate that walks every route at test time to keep brand leaks out. Self-hosted, self-monitored, self-deployed.
- Go 1.25
- SQLite (WAL)
- html/template
- Postmark
- OpenRouter
- Lucide
- Playwright
- Apache
- systemd
- Let's Encrypt
MeiuxMeiux is the site you're already standing on — and it ships in its own portfolio because the way the site is built is a fair sample of how we build everything else. A single Go binary plus SQLite, no framework, no build pipeline, no node_modules. Twenty-seven routes responding, full admin panel, vitrine capture pipeline, AI news discovery, dark mode, rate limiting, session hardening — and a scrub gate that walks every route at test time to keep upstream brand leaks out of the rendered output.
The shape of the site
- Public face — Home, Services, About, Contact, Careers, Testimonials, Terms, Privacy, News (list + detail), Portfolio (list + per-exhibit detail). Each page is a server-rendered template; no client-side router, no hydration round-trip.
- Lead form — honeypot + 3/hour rate limit + Postmark notification, lands in the admin inbox the same way an email reply does.
- Admin panel at
/admin/— Dashboard, Leads, Inbox, Sent, Compose, News CRUD with AI-discovery flow, Reviews CRUD, Trash, Settings, Help. Constant-time credential compare, session cookiesHttpOnly + Secure + SameSite=Strict + Path=/admin, 5/15min admin login rate limit. - Vitrine pipeline — every exhibit you're browsing was captured by a Playwright + Sharp tool that screenshots the live URL at desktop + mobile, pulls inline media, pulls GitHub stats, security-screens the README, and writes a sidecar JSON the Go side imports into SQLite.
- AI news discovery — admin-only SSE-streamed flow that fetches Google News RSS, dedupes against the DB, fetches OG metadata, asks an OpenRouter model for title/summary/category/tags, saves as a draft article. Brand-neutral by config.
- Session persistence — sessions live in
the SQLite
sessionstable and survive systemd restarts; an in-memory cache hydrates at boot.
The discipline
- Scrub gate — the site was forked from a vertical-specific predecessor and scrubbed of every brand leak; a static-grep + live-route HTML scan enforces zero HARD-tier hits and runs as part of the gate ritual on every commit.
- File size budgets — Go files stay under 250 lines, CSS under 450; the renderer is split into public / admin / pagedata pieces, each one easy to hold in a head.
- No middleware chain — auth checks are
flat
if !h.SessionMgr.Validate(r)calls at the top of each admin handler, on purpose. The flat pattern is load-bearing for readability. - Hardened systemd unit —
NoNewPrivileges + PrivateTmp + ProtectSystem=full, unprivileged user, TLS 1.2+ only, HSTS + X-Frame-Options + Referrer-Policy headers.
How it deploys
Pull, rebuild on the server, restart the systemd unit, curl
/health. The whole cycle is one shell script.
No CI runner, no container registry, no orchestration. The
site you're reading was deployed by the same script that
deploys every other binary in the fleet, and the fleet
numbers on the home page are pulled from the same Galaxy
ledger that watches them all.
Straight from the source
The project's own README.
Rendered in place — every link, image, and code block carried over from the repo. The page below is what a contributor would see opening the project for the first time.
DarkLabel
A white-label lead management platform built with Go. Features a public-facing website with service information and contact form, plus a full admin panel for managing leads and email communications. Fully configuration-driven — customize business name, colors, services, and more via environment variables.
Features
Public Website
- Responsive, mobile-first design
- Service listings and business information
- Contact form with validation and honeypot spam protection
- SEO optimized (meta tags, sitemap, structured data)
- Configurable color scheme via CSS variables
Admin Panel
- Lead management with status tracking (new, contacted, closed)
- Email inbox (Postmark inbound webhook)
- Compose and send emails via Postmark
- Email forwarding configuration
- Trash/spam management for leads and emails
- Session-based authentication with rate limiting
White-Label Ready
- All branding configured via environment variables
- Dynamic service options (JSON configuration)
- Customizable color palette (primary, secondary, accent)
- No hardcoded business names, addresses, or phone numbers
Tech Stack
- Backend: Go (standard library, no frameworks)
- Database: SQLite with WAL mode
- Email: Postmark API
- Frontend: Vanilla HTML/CSS/JS, Lucide icons
- Deployment: systemd service behind nginx
Quick Start
# Copy environment config
cp .env.example .env
# Edit .env with your business details
# Build
make build
# Run locally
make run
The app will start on the configured port (default: 8123).
Configuration
Copy .env.example to .env and configure all variables:
| Variable | Default | Description |
|---|---|---|
PORT |
8123 |
Server port |
DOMAIN |
localhost |
Your domain name |
ADMIN_USER |
admin |
Admin login username |
ADMIN_PASS |
changeme |
Admin login password |
BUSINESS_NAME |
My Business |
Displayed throughout the site |
BUSINESS_PHONE |
(555) 000-0000 |
Contact phone number |
BUSINESS_EMAIL |
[email protected] |
Contact email address |
BUSINESS_ADDRESS |
Your City, ST |
Business location |
BUSINESS_TAGLINE |
Professional services you can trust |
Hero/meta tagline |
BUSINESS_HOURS |
Mon-Fri: 9am-5pm |
Displayed on contact page |
SERVICES_JSON |
[{"value":"general","label":"General Inquiry"}...] |
Contact form service options |
COLOR_PRIMARY |
#1e293b |
Primary brand color |
COLOR_SECONDARY |
#334155 |
Secondary brand color |
COLOR_ACCENT |
#3b82f6 |
Accent/highlight color |
POSTMARK_TOKEN |
(empty) | Postmark server API token |
POSTMARK_FROM |
(empty) | Postmark sender address |
REPLY_SUBJECT_TEMPLATE |
Re: Your Inquiry - %s |
Email reply subject (%s = business name) |
Services Configuration
The SERVICES_JSON variable accepts a JSON array of service options for the contact form:
[
{"value": "consulting", "label": "Consulting"},
{"value": "support", "label": "Technical Support"},
{"value": "sales", "label": "Sales Inquiry"},
{"value": "other", "label": "Other"}
]
Project Structure
.
├── cmd/main.go # Entry point, routing, middleware
├── internal/
│ ├── config/ # Environment configuration
│ ├── database/ # SQLite initialization and migrations
│ ├── handlers/
│ │ ├── admin/ # Admin panel handlers
│ │ └── public.go # Public page handlers
│ ├── mailer/ # Postmark email client
│ ├── models/ # Data structures
│ ├── ratelimit/ # IP-based rate limiting
│ ├── session/ # Session management
│ ├── templates/ # Template rendering
│ ├── testutil/ # Test helpers
│ └── validation/ # Form validation
├── static/
│ ├── css/ # Stylesheets
│ └── js/ # JavaScript
├── templates/ # HTML templates
│ ├── admin/ # Admin panel templates
│ ├── base.html # Base layout
│ └── *.html # Public pages
├── data/ # SQLite database (gitignored)
└── .env.example # Environment template
Commands
make build # Build the binary
make run # Run locally
make restart # Rebuild and restart systemd service
make logs # View service logs
make status # Check service status
Customization
Colors
Override the default slate/blue palette with any hex colors:
COLOR_PRIMARY=#1a1a2e
COLOR_SECONDARY=#16213e
COLOR_ACCENT=#e94560
These are injected as CSS custom properties and cascade throughout the site.
Templates
HTML templates are in the templates/ directory. They use Go's html/template package with template variables for all business data. No hardcoded values need changing — everything flows from the configuration.
License
MIT License. See LICENSE for details.
Build something like this
Want a tool like this for your shop?
We've shipped this kind of thing before. Twenty-minute intro call, no slides.