5 Commits

Author SHA1 Message Date
jasonMPM
650698fbc5 Update footer.php 2026-02-28 21:24:41 -06:00
Claude
40e3f73aaf Add contact form DB storage and hidden staff inbox
- contact.php now inserts submissions into MySQL via PDO prepared
  statements; raw values stored (htmlspecialchars moved to output only)
- www/includes/db.php: shared PDO helper with auto-migration that adds
  the is_read column to existing deployments without a full DB reset
- docker/mysql/init.sql: added is_read TINYINT column to contacts table
  for fresh deploys
- www/pages/admin-inbox.php: self-contained staff inbox at /staff-portal
  with session-based password login, per-message mark-as-read, and
  mark-all-read; unread count shown in browser tab title
- index.php: routes /staff-portal before public header/footer so the
  admin page is fully standalone
- docker-compose.yml: ADMIN_PASS env var wired to web container

Set ADMIN_PASS in .env (gitignored) before deploying.
If the DB volume already exists, the auto-migration in db.php will
add the is_read column automatically on first request.

https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
2026-03-01 03:05:18 +00:00
Claude
6b44fe8b4c Apply hero card via inline style to bypass CSS caching
CSS file changes were not rendering - likely due to Apache mod_expires
caching style.css for 1 week in the browser. Two fixes:
- Cache-bust the stylesheet link (?v=4) so the browser is forced to
  fetch a fresh copy of the CSS file
- Move the dark card and heading size fix to inline styles on the hero
  div directly in home.php, so the change lives in the PHP output and
  is not subject to any CSS caching layer

https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
2026-03-01 02:49:45 +00:00
Claude
58c37a81a2 Overhaul site content to reflect custom networking solutions focus
Remove all ISP-subscriber framing (coverage areas, residential plans,
500+ customers, backbone capacity) and replace with accurate positioning
as a custom networking and managed services company.

Key changes:
- Hero: new headline and CTA focused on custom solutions
- Stats bar: Deployments, Uptime SLA, 24/7 support, response time
- Services cards: Mesh Networking, Managed Services, Access Control, IP Cameras
- Why section: founding story (tornado relief, tent deployment, charity event)
- CTA band: contact-focused instead of address lookup form
- Services page: expanded to 5 service areas with real content cards;
  removed Residential/Business internet sections
- About page: full founding story, mission statement, 4-step approach
- Portfolio page: repurposed from Coverage Map; shows deployment types
  including the disaster relief origin story
- Nav: Coverage → Portfolio, Get Connected → Request a Quote
- Footer: updated service links and tagline
- Router: coverage route renamed to portfolio

https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
2026-03-01 02:06:23 +00:00
Claude
3e26125afa Add Dockerized LAMP stack and website skeleton for ALWISP
- Docker Compose orchestrating PHP 8.2/Apache web container and MySQL 8.0
- Dockerfile with GD, PDO, MySQLi extensions and security hardening
- Apache vhost with mod_rewrite, deflate, expires, and security headers
- PHP config with OPcache enabled and display_errors off
- MySQL init schema (contacts, coverage_zones tables)
- Front-controller PHP router (index.php → pages/)
- Responsive homepage: hero, stats bar, services cards, why section, coverage CTA
- Stub pages: services, coverage, about, contact (with working form skeleton), 404
- CSS design system using brand palette from logo (navy #0d1b3e → teal #00bcd4 + orange #f57c00 accents)
- JS: nav scroll/mobile toggle, IntersectionObserver counter animation, scroll reveal

https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
2026-02-28 21:39:21 +00:00