BuildPro Contractors
Setup, customization, and launch guidance for your general contractor template.
1. Overview
BuildPro Contractors is a standalone Bootstrap 5 landing page for general contracting inquiries. It uses charcoal, ivory, and amber, a full-width photographic hero, six service cards, three independent illustrative comparisons, four project ideas, two property panels, eight sample service cities, three sample testimonials, a four-step process, an estimate inquiry, thirteen FAQs, and policy modals.
The template prepares an email draft. Nothing is automatically sent. Automatic delivery requires a backend or third-party form service. Preferred dates do not reserve availability.
It includes twelve generated local WebP photographs. No build process, database, remote fonts, CDN, analytics, payment system, CRM, or map API is required or included.
2. Files and quick start
buildpro-contractors/
├── index.html
├── README.html
├── LICENSES.txt
└── assets/
├── favicon.svg
├── css/style.css
├── js/main.js
├── images/ (12 WebP files)
├── icons/sprite.svg
└── vendor/bootstrap/
├── bootstrap.min.css
└── bootstrap.bundle.min.js- Extract the ZIP and keep index.html, README.html, LICENSES.txt, and assets together.
- Open index.html to preview. A local HTTP server is preferable for browser feature testing.
- Edit HTML for content, CSS for styling, and main.js for draft behavior.
- Replace the sample business information, then test before uploading.
Icons are inline SVG for reliable local-file display. The local sprite contains the same reusable symbols. There is no separate icon font.
3. Business content and sample details
| Detail | Current sample / edit location |
|---|---|
| Business | BuildPro Contractors in index.html, README.html, page metadata, and main.js draft greeting |
| Phone | (916) 555-0147; tel:+19165550147 throughout index.html |
| projects@buildpro.example in index.html and main.js | |
| Base | Sacramento, California; no walk-in office or street address |
| Hours | Monday–Friday 8am–5pm, Saturday 9am–1pm, Sunday closed |
| Coverage | Sacramento, West Sacramento, Elk Grove, Rancho Cordova, Citrus Heights, Roseville, Rocklin, Folsom |
Keep header, contact, footer, form, and FAQ information consistent. Replace all demonstration testimonials with authorized authentic feedback, or remove them. Do not add credentials, guarantees, ratings, or project statistics unless accurate and substantiated.
Review services and scope language for the actual business. The page does not automatically include design, engineering, permits, approvals, or specialist trades. Update the sample privacy and terms wording for the real business and its processing practices.
4. Brand, colors, typography, and spacing
Edit variables at the beginning of assets/css/style.css. Typography uses Arial, Helvetica, and system sans-serif fallbacks; no fonts are downloaded.
:root {
--charcoal: #202421;
--deep: #171a18;
--amber: #edb44d;
--ivory: #f7f5ef;
--ink: #252a26;
}The wordmark is HTML with a local SVG symbol. Edit the header/footer brand together and replace assets/favicon.svg when rebranding. Section spacing is controlled by .section and responsive media queries. Keep button foreground/background contrast in normal, hover, focus, active, and disabled states.
After CSS changes, increase the stylesheet version in index.html, for example:
<link rel="stylesheet" href="assets/css/style.css?v=2">Update the page title, meta description, and theme-color meta value when adapting the business.
5. Images and full-width hero
All twelve photographs are original generated illustrations. They are not evidence of real employees, actual customer interactions, or completed BuildPro projects.
| File in assets/images/ | Used for |
|---|---|
buildpro-hero.webp | Full-width hero |
kitchen-before.webp | Kitchen before concept |
kitchen-after.webp | Kitchen after concept and project inspiration |
bathroom-before.webp | Bathroom before concept |
bathroom-after.webp | Bathroom after concept and project inspiration |
living-before.webp | Living-space before concept |
living-after.webp | Living-space after concept and project inspiration |
covered-patio.webp | Outdoor project inspiration |
home-renovation.webp | Residential audience panel |
commercial-improvement.webp | Small-commercial audience panel |
project-planning.webp | Approach section |
buildpro-team.webp | About section |
Every photograph is 1536 × 1024 pixels. Replace with optimized WebP, preserving filename case. Keep dimensions or update each image width/height attribute and CSS crop. Write accurate descriptive alt text. The hero uses fetchpriority="high" and loads immediately; below-the-fold imagery uses lazy loading.
The hero photograph is full-browser-width. Adjust .hero-image object-position separately for desktop and mobile to keep a new subject appropriately framed. Keep the contrast overlay and check headline readability at each size. Do not use a background image with embedded text.
6. Before-and-after comparisons and projects
Kitchen, bathroom, and living-space concepts each have a native range control below the image. The range is the interaction target; dragging the photograph itself does not move the split. The three sliders begin at 50% and work independently.
- 0% shows the full before photograph; 100% shows the full after photograph.
- Drag or click/tap the range track using a mouse or touch device.
- Use Tab to focus, arrow keys to adjust, Home for 0%, or End for 100%.
- The percentage label and accessible value update with the range.
Before appears on the right and after on the left of the split. Both labels remain visible as orientation guides. Without JavaScript, the static 50% comparison remains visible.
The included comparisons are generated sample concepts. Replace both sides with matching photographs of your own projects to showcase completed work.
For replacements, use matching camera position, lens, framing, dimensions, lighting, and image crop. Keep range data-frame/data-output attributes matched to their IDs. Project cards link to the estimate form; there is no gallery lightbox or booking integration.
7. Services, audience, and city preselection
Service, comparison, project, property, and city buttons scroll to #estimate. Only nonempty data attributes update the corresponding fields. Existing name, contact details, project description, and all unrelated selections are preserved.
<a href="#estimate" data-service="kitchen"
data-audience="Residential" data-city="">
Discuss This Service
</a>| data-service | Form option |
|---|---|
| kitchen | Kitchen Remodeling |
| bathroom | Bathroom Remodeling |
| renovation | Interior Renovations |
| addition | Home Additions |
| outdoor | Outdoor Living |
| commercial | Small Commercial Improvements |
| multiple | Multiple Services |
| other | Other / Not Sure |
Audience values: Residential, Small Commercial, Rental Property, Other / Not Sure. The commercial-property action selects both Small Commercial and commercial service; the residential-property action changes only the audience. City buttons change only location. Check My Location scrolls without overwriting entries. Location is free text with datalist suggestions, not a coverage or availability check.
When adding a service or changing an option value, update every corresponding data-service attribute. Any preselection invalidates the existing email draft.
8. Form validation and email draft
Required fields: name, email, service, property type, city or ZIP, and project details. Optional fields: phone, project size, existing condition, material/design preferences, preferred discussion date, and timing flexibility.
- Native browser validation checks required fields and email syntax.
- JavaScript derives today from the visitor’s local calendar and rejects past dates.
- Prepare Estimate Inquiry creates a structured draft and mailto link. It does not send or store anything.
- The visitor reviews the draft, opens their email app, and sends it themselves.
- Copy Draft uses the clipboard when available. If unavailable, the text is selected for manual copying.
- Visitors may attach photos in their own email application.
Draft preparation preserves the form entries. Editing any field or using a preselection action hides the old draft and clears its link. Reset clears entries, draft, status, and date errors. Data is not persisted across reloads; no localStorage or cookies are used. No files, payment details, or access codes are requested.
Nothing is automatically sent. An inquiry does not confirm a price, appointment, project acceptance, or contract.
If JavaScript is disabled, draft preparation stays disabled and phone/email alternatives remain available. A configured email client is needed to handle mailto; long drafts may exceed some clients’ limits. Copy into an email service manually when needed. The example email address must be replaced before actual use.
9. Automatic delivery and integrations
Automatic submission needs a configured backend endpoint or form service. Replace the draft submit handler, validate input server-side, add appropriate abuse protection, and handle failures. Show delivery success only after a successful server response. Keep secret keys on the server, never in client JavaScript.
Update form wording, policies, and this guide to describe the actual processing. No online payments, CRM, scheduling calendar, automatic estimating, or live availability is implemented.
11. Responsive layout
The layout uses Bootstrap rows with custom breakpoints: six services display in three columns on large screens, two on medium screens, and one on small screens. Comparisons stack below 992px. Project cards adapt from four columns to two to one. The navigation collapses below 1200px; mobile fixed actions appear below 768px.
Keep imagery proportional, allow buttons to wrap, and inspect long city names, emails, headings, and translated text. Do not remove bottom padding while the fixed bar is active.
12. Dependencies and license notices
| Dependency | Version | Location |
|---|---|---|
| Bootstrap CSS / JS bundle | 5.3.8 | assets/vendor/bootstrap/ |
| Popper included in bundle | 2.11.8 | Bootstrap bundle |
| Custom JavaScript, SVG icons, system fonts | No additional runtime dependency | Local source |
See LICENSES.txt and vendor headers for dependency notices. This documentation does not grant additional template license rights; those follow the applicable purchase terms.
13. Launch checklist
- Replace fictional business contacts, hours, service areas, and marketing copy.
- Confirm all services and scope statements describe the actual business.
- Replace sample testimonials with authorized genuine feedback.
- Replace illustrative photos as appropriate. Use authentic matched project photos before claiming completed-project proof.
- Review Privacy/Terms for actual business and hosting practices.
- Update metadata, wordmark, and favicon.
- Check every preselection path and preserve unrelated inputs.
- Test preferred dates, required fields, reset, draft, copy fallback, and your real email workflow.
- Check desktop, tablet, mobile, keyboard, touch, and visible button states.
- Verify HTTPS, local assets, and directory paths after deployment.
14. Troubleshooting
| Issue | Check |
|---|---|
| Missing photos or styles | Preserve filename case and assets folder structure. Confirm uploads completed. |
| Old appearance | Increase the CSS version and refresh browser/hosting caches. |
| Menu, FAQ, or modal not working | Confirm the local Bootstrap bundle loads and IDs match targets. |
| Wrong field selected | Match data-service and data-audience values to exact options. |
| Slider does not move | Use the range below the image. Check main.js and linked IDs. |
| Comparison misalignment | Replace both photos with matching dimensions, framing, and viewpoint. |
| Email app does not open | Configure a mail client or copy the draft into webmail. |
| Copy blocked | Use the selected draft text and your device’s copy command. Clipboard availability varies. |
| Date rejected | Choose today or later and verify the device’s local date. |