Unit Tests / test (push) Successful in 3s
## Summary Closes #18. - Add per-page titles, meta descriptions, Open Graph/Twitter tags, and canonical URLs on public `base2.html` pages - Improve semantic structure: skip link, primary nav ARIA, single `<main id="main-content">`, heading hierarchy, descriptive image alts - Publish `/robots.txt`, `/sitemap.xml`, and `/llms.txt` (linked from site head via `rel="alternate"`) - Agentic/a11y fixes: membership checkbox label associations, ZIP `name` attribute, layout stability (image aspect-ratio / min-height), footer year without `document.write` - WebMCP deferred — membership + Stripe checkout remain standard HTML/Stripe flows; no audit flag justified custom MCP surface yet ## Lighthouse / agentic notes Baseline Lighthouse runs still need Chrome Canary export on staging/prod. Structural SEO/a11y items from the ticket are implemented so follow-up audits can capture before/after scores. Expected audit wins vs prior minimal `charset`+`viewport` head: - SEO: unique titles/descriptions, crawl directives, sitemap - Agentic/a11y: landmarks, labels, CLS-oriented image sizing ## Test plan - [x] `uv run python manage.py test schasite` (34 passed) - [ ] Spot-check Home/About/Calendar/Dues/Membership/Board/Links in browser - [ ] Confirm `/robots.txt`, `/sitemap.xml`, `/llms.txt` on deployed host - [ ] Run Lighthouse SEO + Agentic browsing on key pages and note before/after pass ratio on the issue Reviewed-on: #27
164 lines
7.3 KiB
HTML
164 lines
7.3 KiB
HTML
{% extends 'schasite/base2.html' %}
|
|
{% load static %}
|
|
|
|
{% block pagetitle %}
|
|
<title>Home | Stonehedge Community Homeowners Association</title>
|
|
<style type="text/css">
|
|
.hero-section {
|
|
background: url({% static 'images/header.gif' %});
|
|
height: 60vh;
|
|
display: flex;
|
|
background-repeat:no-repeat;
|
|
background-position: center center;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
color: white;
|
|
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
|
|
}
|
|
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block meta_tags %}
|
|
<meta name="description" content="Welcome to Stonehedge Community Homeowners Association in Wheaton, IL. Pay dues, join as a member, find events, and meet the HOA board.">
|
|
{% endblock %}
|
|
{% block og_title %}Home | Stonehedge Community Homeowners Association{% endblock %}
|
|
{% block og_description %}Welcome to Stonehedge Community Homeowners Association in Wheaton, IL. Pay dues, join as a member, find events, and meet the HOA board.{% endblock %}
|
|
{% block twitter_title %}Home | Stonehedge Community Homeowners Association{% endblock %}
|
|
{% block twitter_description %}Welcome to Stonehedge Community Homeowners Association in Wheaton, IL. Pay dues, join as a member, find events, and meet the HOA board.{% endblock %}
|
|
|
|
{% block content %}
|
|
<!-- Hero Section -->
|
|
<section id="home" class="py-5 bg-success bg-opacity-10">
|
|
|
|
<div class="container py-5">
|
|
|
|
<div class="row align-items-center">
|
|
<div class="col-lg-8 mb-4 mb-lg-0">
|
|
|
|
<h1 class="display-4 fw-bold mb-3">Welcome to Stonehedge Community Homeowners Association</h1>
|
|
<p class="lead mb-4">A premier community dedicated to maintaining beautiful homes, safe neighborhoods, and a high quality of life for all residents.</p>
|
|
<a href="{% url 'about_us2' %}" class="btn btn-success btn-lg px-4">Learn More</a>
|
|
|
|
</div>
|
|
|
|
|
|
<!-- <div class="col-lg-4">
|
|
<img src="{% static 'images/header.gif' %}" alt="Stonehedge Community Homeowners Association" class="img-fluid rounded-circle shadow">
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- About Section -->
|
|
<section id="about" class="py-5">
|
|
<div class="container">
|
|
<h2 class="text-center text-success mb-5">About Our Community</h2>
|
|
<div class="row g-4">
|
|
|
|
<div class="col-md-6">
|
|
<div class="card h-100 shadow-sm">
|
|
<div class="card-body">
|
|
<h5 class="card-title"><a href="{% url 'dues2' %}">Pay Dues</a></h5>
|
|
<p class="card-text">Make sure to pay your dues</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="card h-100 shadow-sm">
|
|
<div class="card-body">
|
|
<h5 class="card-title"><a href="{% url 'membership_form2' %}">Join</a></h5>
|
|
<p class="card-text">Fill out the membership form and be added to the mailing list</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="card h-100 shadow-sm">
|
|
<div class="card-body">
|
|
<h5 class="card-title"><a href="{% url 'calendar2' %}">Events</a></h5>
|
|
<p class="card-text">Checkout out the upcoming and past events!</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="card h-100 shadow-sm">
|
|
<div class="card-body">
|
|
<h5 class="card-title"><a href="{% url 'scha_board2' %}">HOA Board</a></h5>
|
|
<p class="card-text">Meet our elected board members who volunteer their time to maintain and improve our neighborhood.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Contact Section -->
|
|
<!-- <section id="contact" class="py-5 bg-success bg-opacity-10">
|
|
<div class="container">
|
|
<h2 class="text-center text-success mb-5">Contact Us</h2>
|
|
<div class="row g-4 mb-5">
|
|
<div class="col-md-6">
|
|
<div class="card h-100 text-center shadow-sm">
|
|
<div class="card-body py-4">
|
|
<i class="bi bi-envelope-fill text-success fs-1 mb-3"></i>
|
|
<h5 class="card-title">Email Us</h5>
|
|
<p class="card-text">board@greenwoodestates.org</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="card h-100 text-center shadow-sm">
|
|
<div class="card-body py-4">
|
|
<i class="bi bi-telephone-fill text-success fs-1 mb-3"></i>
|
|
<h5 class="card-title">Call Us</h5>
|
|
<p class="card-text">(555) 123-4567</p>
|
|
<p class="card-text">Monday-Friday, 9am-5pm</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row justify-content-center">
|
|
<div class="col-lg-8">
|
|
<form class="needs-validation" novalidate>
|
|
<div class="row g-3">
|
|
<div class="col-md-6">
|
|
<label for="name" class="form-label">Name</label>
|
|
<input type="text" class="form-control" id="name" required>
|
|
<div class="invalid-feedback">
|
|
Please provide your name.
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label for="email" class="form-label">Email</label>
|
|
<input type="email" class="form-control" id="email" required>
|
|
<div class="invalid-feedback">
|
|
Please provide a valid email.
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<label for="subject" class="form-label">Subject</label>
|
|
<input type="text" class="form-control" id="subject" required>
|
|
<div class="invalid-feedback">
|
|
Please provide a subject.
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<label for="message" class="form-label">Message</label>
|
|
<textarea class="form-control" id="message" rows="4" required></textarea>
|
|
<div class="invalid-feedback">
|
|
Please enter your message.
|
|
</div>
|
|
</div>
|
|
<div class="col-12 text-center">
|
|
<button class="btn btn-success btn-lg px-4" type="submit">
|
|
<i class="bi bi-send-fill me-2"></i>Send Message
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div> -->
|
|
</section>
|
|
{% endblock %} |