A professional Hugo static website for Rinse Repeat Labs, a software development company specializing in mobile, web, and desktop applications.
- Modern, minimalist design with Tailwind CSS
- Dark/light mode toggle with system preference detection
- Responsive, mobile-first layout
- SEO optimized with meta tags and Open Graph support
- Formspree integration for contact forms
- Stripe integration for consultation payments
- GitHub Pages deployment via GitHub Actions
-
Hugo Extended (v0.121.0 or later)
# macOS (Homebrew) brew install hugo # Windows (Chocolatey) choco install hugo-extended # Linux (Snap) snap install hugo --channel=extended
-
Node.js (v18 or later)
# Verify installation node --version npm --version
-
Clone the repository:
git clone https://github.com/yourusername/RinseRepeatLabs.git cd RinseRepeatLabs -
Install dependencies:
npm install
-
Start the development server:
hugo server -D
-
Open http://localhost:1313 in your browser.
Edit config.toml to customize:
[params]
email = "rinserepeatlabs@gmail.com"
consultationFee = "$199"
formspreeEndpoint = "YOUR_FORMSPREE_ENDPOINT"
stripePaymentLink = "YOUR_STRIPE_PAYMENT_LINK"
[params.social]
twitter = "yourtwitterhandle"
linkedin = "yourcompanyname"
github = "yourgithubname"-
Go to Formspree.io and create a free account
-
Create a new form
-
Copy the form ID (the part after
/f/in the endpoint URL) -
Update
config.toml:formspreeEndpoint = "xyzabcde" # Your form ID
-
Log in to your Stripe Dashboard
-
Go to Products → Payment Links
-
Create a new payment link for $199
-
Copy the payment link URL
-
Update
config.toml:stripePaymentLink = "https://buy.stripe.com/your-link-id"
Add new portfolio items by creating markdown files in content/portfolio/:
---
title: "Project Name"
tagline: "Brief description of the project"
platforms: ["iOS", "Android", "Web"]
tech: ["React Native", "Node.js", "PostgreSQL"]
featured: true
weight: 1
year: "2024"
client: "Client Name"
image: "https://images.unsplash.com/photo-xxxxx"
appStoreUrl: "https://apps.apple.com/..."
playStoreUrl: "https://play.google.com/..."
testimonial:
quote: "Client testimonial here"
author: "Client Name"
role: "CEO, Company"
---
## Overview
Project description...- Home:
content/_index.md(layout inlayouts/index.html) - Services:
content/services.md - Portfolio:
content/portfolio/_index.md - About:
content/about.md - Submit Idea:
content/submit-idea.md
- Push your code to GitHub
- Go to Settings → Pages
- Set Source to "GitHub Actions"
- The site will deploy automatically on push to
main
-
In your DNS provider, add:
- A records pointing to GitHub Pages IPs:
185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 - Or a CNAME record pointing to
yourusername.github.io
- A records pointing to GitHub Pages IPs:
-
In GitHub repo settings, add your custom domain
-
Update
config.toml:baseURL = "https://rinserepeatlabs.com/"
RinseRepeatLabs/
├── .github/workflows/ # GitHub Actions deployment
├── assets/css/ # Tailwind CSS source
├── content/ # Markdown content
│ ├── portfolio/ # Portfolio items
│ └── *.md # Pages
├── layouts/ # Hugo templates
│ ├── _default/ # Default layouts
│ ├── partials/ # Reusable components
│ └── */ # Section-specific layouts
├── static/ # Static assets
├── config.toml # Hugo configuration
├── package.json # npm dependencies
├── tailwind.config.js # Tailwind configuration
└── postcss.config.js # PostCSS configuration
Edit tailwind.config.js to change the primary color palette:
theme: {
extend: {
colors: {
primary: {
500: '#0ea5e9', // Main primary color
600: '#0284c7', // Darker shade
// ... other shades
},
},
},
},The site uses Inter font by default. To change, edit:
tailwind.config.js(fontFamily)assets/css/main.css(Google Fonts import)
- Create a new markdown file in
content/ - Add front matter with layout specification
- Create corresponding layout in
layouts/ - Add to menu in
config.toml
- Ensure you have Hugo Extended (not regular Hugo)
- Run
npm installto install dependencies - Check for syntax errors in templates
- Verify
postcss.config.jsexists - Check that all files are in correct directories
- Run
npm installagain
- Verify Formspree endpoint is correct
- Check browser console for errors
- Ensure form fields have
nameattributes
This project is proprietary to Rinse Repeat Labs.
For questions or issues, contact: rinserepeatlabs@gmail.com