Static marketing website for Bowman Barnworks, a Calera, Oklahoma construction and home-improvement company. Built with Vite + React + TypeScript + Tailwind CSS and deployed to GitHub Pages at https://bowmanbarnworks.com.
Contact form behavior: the project inquiry form does not save submissions to a database. It opens a pre-addressed email to
bartbowman@gmail.comwith the visitor’s form details and shows an on-page confirmation that the draft is ready to review and send. To capture submissions directly, swaphandleInquirySubmitinclient/src/pages/Home.tsxfor a form provider (Formspree, Web3Forms, a serverless function, etc.). Do not put API credentials in this repository.
| Path | Purpose |
|---|---|
client/index.html |
HTML shell — page <title>, meta description, favicon, social tags. |
client/src/pages/Home.tsx |
The entire page: content, gallery data, FAQ data, form logic, CTAs. |
client/src/index.css |
Fonts (Google Fonts), color tokens, typography utilities, textures, motion. |
client/src/main.tsx / App.tsx |
React entry point. |
client/public/images/ |
All site images, served at /images/<filename>. |
client/public/CNAME |
Custom domain for GitHub Pages (bowmanbarnworks.com). |
.github/workflows/deploy.yml |
Builds and publishes to GitHub Pages on every push to main. |
docs/ |
Administrator guide and image manifest. |
Requires Node.js 20+ (CI uses 22).
npm install
npm run dev # start the dev server, open the printed URL
npm run build # type-check + production build into dist/
npm run preview # serve the production build locally
Deployment is automatic. On every push to main, the workflow in
.github/workflows/deploy.yml runs npm ci && npm run build and publishes dist/ to
GitHub Pages.
One-time repository setup:
main (or run the workflow manually from the Actions tab). The first
run creates the github-pages environment and publishes the site.client/public/CNAME already contains bowmanbarnworks.com, so the build ships a
CNAME file and GitHub Pages picks it up automatically. At your DNS provider, add:
| Type | Host | Value |
|---|---|---|
| A | @ |
185.199.108.153 |
| A | @ |
185.199.109.153 |
| A | @ |
185.199.110.153 |
| A | @ |
185.199.111.153 |
| CNAME | www |
dwdalton80.github.io. |
(GitHub’s apex-domain IPs — confirm against the current list in GitHub’s Pages docs.) After DNS propagates, enable Enforce HTTPS in Settings → Pages.
If you ever serve from the project URL https://dwdalton80.github.io/bowman-barnworks/
instead of the custom domain, add a repository variable BASE_PATH =
/bowman-barnworks/ (Settings → Secrets and variables → Actions → Variables). The build
reads it via vite.config.ts. Note that image paths written as /images/... string
literals in Home.tsx would also need a base prefix in that mode; the custom-domain
setup (base /) needs no code changes.
Almost everything is in client/src/pages/Home.tsx:
projects array near the top.services array.bartbowman@gmail.com.Colors, fonts, and textures live in client/src/index.css. Images go in
client/public/images/ — see docs/ASSET-MANIFEST.md.
Run npm run build before committing to catch type errors.
This site was first prototyped with Manus. This repository is the standalone, self-hosted rebuild: Manus runtime plugins, the unused Express server, the component library, and client-side routing were removed, leaving the single-page site and a plain static build.