Clip N' Dip Lawn Care
Local lawn-care operator's site — quote requests in, leads tracked, replies sent. Whole stack is one Go binary.
Clip N' Dip Lawn Care is a Pinellas County (FL) lawn-care business; the site is the same single-Go-binary pattern that powers most of our small-operator deployments — public marketing page, mobile-first quote form with validation, and a full admin panel with lead tracking, Postmark inbound + outbound email, and session-based auth. SQLite, no frameworks, deploys as a systemd service behind nginx.
- Go
- SQLite
- Postmark
- Lucide
- nginx
- systemd
Clip N' Dip Lawn Care is a Pinellas Park-based lawn-care operator — mowing, landscaping, leaf removal, hedge trimming, the whole list. The site is the small-operator pattern we deploy a lot of: a public marketing page that converts on quote requests, an admin panel that turns those requests into a tracked pipeline, and a mailbox that doesn't depend on anyone's personal Gmail.
What ships
- Public site — mobile-first responsive layout, services rundown, service-area copy, quote-request form with server-side validation, structured-data + sitemap for SEO.
- Lead pipeline — every quote request lands in the admin panel with status tracking; the operator works the queue from any device with a session.
- Postmark inbox + outbox — inbound email webhook routes replies into the same ticket view; outbound sends from the admin compose pane through Postmark with per-recipient threading.
- Auth + rate limits — session-based admin login with rate-limiting, plus a public-form rate limit so the quote form doesn't get scraped to death.
Why a single Go binary
Local-business sites don't need React. They need to load fast on a phone, render a quote form that works, and not break when a contractor is trying to send an estimate from a job site. One Go binary, SQLite database, systemd unit, nginx reverse proxy. Deploys are pull-rebuild-restart. The whole stack fits in a head.
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.
Clip N' Dip Lawn Care
A professional lawn care business website built with Go. Features a public-facing site with service information and quote request form, plus a full admin panel for managing leads and email communications.
Features
Public Website
- Responsive design optimized for mobile
- Service listings and business information
- Quote request form with validation
- SEO optimized (meta tags, sitemap, structured data)
Admin Panel
- Lead management with status tracking
- Email inbox (Postmark inbound webhook)
- Compose and send emails via Postmark
- Email forwarding configuration
- Session-based authentication with rate limiting
Tech Stack
- Backend: Go (standard library, no frameworks)
- Database: SQLite
- Email: Postmark API
- Frontend: Vanilla HTML/CSS/JS, Lucide icons
- Deployment: systemd service behind nginx
Quick Start
# Clone the repo
git clone https://github.com/saintpetejackboy/clipndip.git
cd clipndip
# Copy environment config
cp .env.example .env
# Edit .env with your values
# Build
make build
# Run locally
make run
Configuration
Copy .env.example to .env and configure:
PORT=8123 # Server port
DOMAIN=example.com # Your domain
ADMIN_USER=admin # Admin username
ADMIN_PASS=changeme # Admin password (change this!)
BUSINESS_NAME=Your Business
BUSINESS_PHONE=(555) 123-4567
[email protected]
POSTMARK_TOKEN=your-token # Postmark server token
[email protected]
Project Structure
.
├── cmd/main.go # Entry point, handlers, admin templates
├── internal/
│ ├── config/ # Environment configuration
│ ├── database/ # SQLite initialization
│ ├── mailer/ # Postmark email client
│ ├── ratelimit/ # IP-based rate limiting
│ └── validation/ # Form validation
├── static/
│ ├── css/ # Stylesheets
│ ├── img/ # Images (WebP)
│ └── js/ # JavaScript
├── templates/ # HTML templates
├── data/ # SQLite database (gitignored)
└── docs/ # Internal documentation
Commands
make build # Build the binary
make run # Run locally
make restart # Rebuild and restart service
make logs # View service logs
make status # Check service status
Deployment
The app runs as a systemd service (clip.service) behind nginx with SSL via Let's Encrypt.
See docs/handoff.md for detailed deployment and maintenance information.
License
Proprietary - All Rights Reserved. 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.