Work clipndip
web

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.

Last updateDec 30, 2025 LicenseNOASSERTION PrimaryGo
  • Go
  • SQLite
  • Postmark
  • Lucide
  • nginx
  • systemd
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 media
Clip N' Dip Lawn Care media

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.