recent updates
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"_doc": "Arising Media stack selector — agent reference. Choose the correct stack before starting any project.",
|
||||
"_updated": "2026-05-21",
|
||||
|
||||
"stacks": {
|
||||
"static-html": {
|
||||
"name": "Static HTML",
|
||||
"reference_project": "lahrcarpetcleaning.com",
|
||||
"use_when": [
|
||||
"Site has fewer than 50 pages",
|
||||
"Content changes infrequently (monthly or less)",
|
||||
"Client hosts on cPanel shared hosting with no server-side scripting",
|
||||
"No database required"
|
||||
],
|
||||
"do_not_use_when": [
|
||||
"Site has more than 50 pages",
|
||||
"Content must be updated across many pages simultaneously",
|
||||
"Lead capture forms require server-side validation",
|
||||
"Site has location pages, service pages, or any programmatic content"
|
||||
],
|
||||
"files": ["Dockerfile", "nginx.conf", "docker-compose.yml", ".htaccess", ".cpanel.yml"],
|
||||
"sops": ["01-project-structure.md", "03-build-pipeline.md", "08-deployment-docker.md"]
|
||||
},
|
||||
|
||||
"php-router-sqlite": {
|
||||
"name": "PHP Router + SQLite",
|
||||
"reference_project": "arisingmedia.us",
|
||||
"use_when": [
|
||||
"Site has 50+ pages of any type",
|
||||
"Multiple page classes share a common template (services, locations, blog)",
|
||||
"Header/footer/nav updates must propagate instantly across all pages",
|
||||
"Content is authored in a database or Airtable and pulled at render time",
|
||||
"Site will grow — new pages added without new HTML files"
|
||||
],
|
||||
"do_not_use_when": [
|
||||
"Client requires cPanel shared hosting with no PHP-FPM (rare)",
|
||||
"Site is a pure landing page (1-3 pages)"
|
||||
],
|
||||
"architecture": {
|
||||
"router": "src/api/router.php",
|
||||
"templates": "src/api/templates/ — one .php file per page class",
|
||||
"components": "src/api/components/_sections.php, _header.php, _footer.php",
|
||||
"database": "src/api/data/pages.sqlite (all page content)",
|
||||
"tokens": "src/assets/css/tokens.css",
|
||||
"styles": "src/assets/css/main.css",
|
||||
"js": "src/assets/js/main.js"
|
||||
},
|
||||
"page_classes": {
|
||||
"service": "service.php — detailed service pages with value_prop, use_case_carousel, roi_band, lead_magnet, tiers",
|
||||
"location": "location.php — city + service combination pages, map embed, local content",
|
||||
"challenge": "challenge.php — problem definition + our approach + CTA",
|
||||
"static": "static.php — about, contact, hub pages, case studies",
|
||||
"blog": "blog.php — blog posts with author, date, related posts",
|
||||
"category": "category.php — service hub pages"
|
||||
},
|
||||
"sops": ["15-php-router-sqlite-standard.md"],
|
||||
"design_reference": "arisingmedia.us/.planning/WEBSITE_BUILD_STANDARD.md",
|
||||
"architecture_diagram": "arisingmedia.us/.planning/RENDER_ARCHITECTURE.html",
|
||||
"approved_mockup": "arisingmedia.us/.planning/template-gallery-2026-05-20/mockup.html"
|
||||
},
|
||||
|
||||
"php-app": {
|
||||
"name": "PHP App Stack",
|
||||
"reference_project": "quickconvert.us",
|
||||
"use_when": [
|
||||
"File uploads and server-side processing required",
|
||||
"At-rest encryption of user data",
|
||||
"Payment processing (Stripe subscriptions)",
|
||||
"User authentication"
|
||||
],
|
||||
"sops": ["14-php-app-stack.md"]
|
||||
}
|
||||
},
|
||||
|
||||
"design_system": {
|
||||
"fonts": ["Plus Jakarta Sans (display)", "Inter (body)"],
|
||||
"approved_colors": {
|
||||
"cobalt_deep": "#021a6a",
|
||||
"cobalt": "#042fac",
|
||||
"cobalt_light": "#5d78c9",
|
||||
"navy": "#172034",
|
||||
"footer": "#0f1626",
|
||||
"slate": "#1c2c44",
|
||||
"graphite": "#222f42",
|
||||
"blue": "#1e6bd6",
|
||||
"facet": "#6b82b2",
|
||||
"stone": "#eef1f6",
|
||||
"white": "#ffffff"
|
||||
},
|
||||
"rejected_colors": {
|
||||
"teal": "never use — not brand",
|
||||
"mist": "#f8f9fb — eliminated from band rhythm 2026-05-21",
|
||||
"angled_edges": "clip-path diagonals rejected — tech brands use flat horizontal lines"
|
||||
},
|
||||
"band_rhythm": ["graphite", "light", "slate", "stone"],
|
||||
"statement_type": "clamp(40px, 6.5vw, 96px)",
|
||||
"section_padding_desktop": "120px",
|
||||
"credibility_pattern": "proof numbers in dark grid band (IBM/Nvidia) — NOT generic icon logos"
|
||||
},
|
||||
|
||||
"section_types": {
|
||||
"available": ["text", "split", "pain", "process", "spotlight", "benefits", "faqs", "grid", "comparison", "testimonials", "stats", "cta", "pin_story", "tiers", "value_prop", "use_case_carousel", "roi_band", "lead_magnet"],
|
||||
"v4_schema_columns": ["hero_value_proposition", "lead_magnet_json", "use_case_carousel_json", "roi_proof_json", "service_variant_strategy_json"],
|
||||
"deprecated": ["grid — replaced by use_case_carousel when cases are populated", "mist band — eliminated from rhythm"]
|
||||
},
|
||||
|
||||
"databases": {
|
||||
"sqlite": {
|
||||
"role": "Primary rendering database — exact slug lookups, structured content",
|
||||
"suitable_up_to": "Millions of rows — 10,000 pages is tiny (5MB)",
|
||||
"query_time": "< 1ms for slug lookup",
|
||||
"file": "src/api/data/pages.sqlite"
|
||||
},
|
||||
"chromadb": {
|
||||
"role": "Future semantic layer — related content, site search, content generation grounding",
|
||||
"not_suitable_for": "Primary rendering — no exact-match primary key lookup",
|
||||
"status": "Planned — future phase after all content is in SQLite"
|
||||
}
|
||||
},
|
||||
|
||||
"deployment": {
|
||||
"container": "am-web (Docker)",
|
||||
"local_port": 8001,
|
||||
"db_path_in_container": "/var/www/data/pages.sqlite",
|
||||
"assets_path": "/var/www/html/assets/",
|
||||
"hot_copy_db": "docker cp src/api/data/pages.sqlite am-web:/var/www/data/pages.sqlite && docker exec am-web sh -c 'rm -f /var/www/data/pages.sqlite-shm /var/www/data/pages.sqlite-wal && chown www-data:www-data /var/www/data/pages.sqlite'",
|
||||
"hot_copy_assets": "docker cp src/assets/css/main.css am-web:/var/www/html/assets/css/main.css"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user