← back to NationalPaperHangers
views/public/home.ejs
118 lines
<%- include('../partials/head', { title }) %>
<%- include('../partials/header') %>
<section class="hero">
<div class="hero-inner">
<p class="kicker">Verified · Insured · Scheduled</p>
<h1 class="display">The luxury wallcovering<br>installer hub.</h1>
<p class="lede">Hand-painted papers, silk, grasscloth, murals — installed by verified specialists across every market in the country. Search, vet, and book directly into the installer's calendar.</p>
<form action="/find" method="get" class="hero-search" role="search">
<input type="text" name="q" placeholder="City, ZIP, brand, or specialty" aria-label="Search">
<select name="segment" aria-label="Segment">
<option value="">All segments</option>
<option value="luxury_residential">Luxury residential</option>
<option value="hospitality">Hospitality</option>
<option value="retail">Retail</option>
<option value="museum">Museum / cultural</option>
<option value="yacht">Yacht / aviation</option>
</select>
<button type="submit" class="btn btn-primary">Find an installer</button>
</form>
<p class="hero-trust">Already specifying a project? <a href="/find?segment=luxury_residential">Browse signature studios →</a></p>
</div>
</section>
<section class="trust-strip">
<div class="trust-inner">
<div><strong><%= stats.total_listings %>+</strong><span>installer studios listed</span></div>
<div><strong><%= stats.state_count %></strong><span>states covered</span></div>
<div><strong><%= stats.accredited_count %></strong><span>WIA-accredited members</span></div>
<div><strong>Concierge</strong><span>For architects, designers, hospitality</span></div>
</div>
</section>
<section class="featured">
<div class="section-head">
<h2 class="section-title">Featured studios</h2>
<a href="/find" class="section-link">Browse all installers →</a>
</div>
<div class="installer-grid">
<% featured.forEach(function(i){ %>
<a class="installer-card" href="/installer/<%= i.slug %>">
<% var _pdImg = pickSegmentImage(i); %>
<div class="card-image">
<% if (_pdImg) { %>
<img loading="lazy" decoding="async" src="<%= _pdImg.file %>" alt="<%= i.business_name %> — wallcovering installer in <%= [i.city,i.state].filter(Boolean).join(', ') %>">
<% } else { %>
<span class="card-image-placeholder"><%= (i.business_name || '').slice(0,2).toUpperCase() %></span>
<% } %>
</div>
<div class="card-body">
<h3 class="card-title"><%= i.business_name %></h3>
<p class="card-meta"><%= i.city %>, <%= i.state %></p>
<p class="card-headline"><%= i.headline %></p>
<ul class="card-tags">
<% (i.materials || []).slice(0,3).forEach(function(m){ %>
<li class="tag"><%= m.replace(/_/g,' ') %></li>
<% }); %>
</ul>
<% if (i.verified) { %><span class="verified-badge">Verified</span><% } %>
</div>
</a>
<% }); %>
</div>
</section>
<section class="how-it-works">
<div class="section-head">
<h2 class="section-title">How it works</h2>
</div>
<ol class="how-grid">
<li>
<span class="step">01</span>
<h3>Search by location, specialty, or brand</h3>
<p>Filter for hand-painted papers, silk, grasscloth, mural, or specific manufacturers like Fromental, Maya Romanoff, or de Gournay.</p>
</li>
<li>
<span class="step">02</span>
<h3>Vet the studio</h3>
<p>Every active installer profile shows portfolio, insurance status, accreditations, brand experience, response SLA, and travel radius.</p>
</li>
<li>
<span class="step">03</span>
<h3>Book the calendar</h3>
<p>Pick an open slot directly from the installer's live calendar — consultations, site visits, and installs scheduled in one place.</p>
</li>
</ol>
</section>
<section class="for-installers-cta">
<div class="cta-inner">
<h2 class="display-sm">Run a wallcovering studio?</h2>
<p>Get listed in the directory the trade actually uses, and turn your calendar into your booking system. From $39/month.</p>
<a href="/for-installers" class="btn btn-primary">List your business</a>
</div>
</section>
<%
var _orgBase = (typeof publicUrl !== 'undefined' && publicUrl) ? publicUrl.replace(/\/+$/, '') : 'https://www.nationalpaperhangers.com';
%>
<script type="application/ld+json"><%- JSON.stringify({
'@context':'https://schema.org','@type':'Organization',
name: 'National Paper Hangers',
url: _orgBase,
sameAs: [],
description: 'A directory of verified luxury wallcovering installers across the United States. NPH operates as a referral and lead-coordination service; the installation contract is between the consumer and the installer.'
}) %></script>
<script type="application/ld+json"><%- JSON.stringify({
'@context':'https://schema.org','@type':'WebSite',
name: 'National Paper Hangers',
url: _orgBase,
potentialAction: {
'@type':'SearchAction',
target: _orgBase + '/find?q={search_term_string}',
'query-input':'required name=search_term_string'
}
}) %></script>
<%- include('../partials/footer') %>