Add .gitea/workflows/build-new-site.yml

This commit is contained in:
2026-06-02 14:06:54 -07:00
parent 61e030b8df
commit 3ecceb8fd0
+158
View File
@@ -0,0 +1,158 @@
name: Build New Site
on:
workflow_dispatch:
inputs:
project_name:
description: 'Project / site name (used in the issue title)'
required: false
default: 'New Site'
doc_url:
description: 'URL or path to the project brief document (optional but recommended)'
required: false
default: ''
jobs:
create-build-new-site-issue:
name: Create Build New Site Issue
runs-on: ubuntu-latest
steps:
- name: Create issue
run: |
TODAY=$(date +%Y-%m-%d)
PROJECT="${{ inputs.project_name }}"
DOC_URL="${{ inputs.doc_url }}"
# Build optional doc reference
if [ -n "$DOC_URL" ]; then
DOC_LINE="\n> 📄 **Project Brief:** $DOC_URL\n"
else
DOC_LINE=""
fi
BODY="## 🌐 Build New Site — ${PROJECT}\n\n"
BODY+="Generated: ${TODAY}\n"
BODY+="${DOC_LINE}\n"
BODY+="---\n\n"
BODY+="> ⚠️ **Agent Instructions — READ BEFORE PROCEEDING**\n>\n"
BODY+="> A project brief document will be provided alongside this issue — read it fully before starting any work.\n"
BODY+="> Work through each section **in order**. Post a **separate comment** on this issue after completing each section.\n"
BODY+="> Do NOT wait until everything is done — post findings/decisions as you go.\n"
BODY+="> Every decision you make must be documented in your comment so there is a clear record.\n"
BODY+="> If a section is unclear or requires stakeholder input, post a blocking comment and tag the relevant person before proceeding.\n\n"
BODY+="---\n\n"
BODY+="### ☁️ AWS Amplify Instance\n\n"
BODY+="Spin up and configure the hosting infrastructure for this project.\n\n"
BODY+="- [ ] Create new Amplify app and connect to the correct repository\n"
BODY+="- [ ] Configure build settings (build command, output directory, environment variables)\n"
BODY+="- [ ] Set up branch-based deployment (main → prod, dev → staging)\n"
BODY+="- [ ] Confirm deployment pipeline runs successfully end-to-end\n"
BODY+="- [ ] Document the Amplify app ID and console URL in a comment\n\n"
BODY+="---\n\n"
BODY+="### 🔍 Research\n\n"
BODY+="Gather and document the foundational context for this project.\n\n"
BODY+="- [ ] Identify the target audience and primary user persona\n"
BODY+="- [ ] Define the primary goals and measurable success metrics\n"
BODY+="- [ ] Extract and document key requirements from the project brief\n"
BODY+="- [ ] Note any constraints: timeline, budget, integrations, regulatory\n\n"
BODY+="---\n\n"
BODY+="### 🏆 Competitor Research\n\n"
BODY+="Understand the landscape before making design and strategy decisions.\n\n"
BODY+="- [ ] Identify top 35 competitors or comparable sites\n"
BODY+="- [ ] Document what they do well (features, UX, content, SEO)\n"
BODY+="- [ ] Document their weaknesses and gaps this project can exploit\n"
BODY+="- [ ] List 3+ clear differentiators for this project\n\n"
BODY+="---\n\n"
BODY+="### 📛 Website Name\n\n"
BODY+="Confirm and lock in the brand name before proceeding.\n\n"
BODY+="- [ ] Confirm the final website / brand name from the project brief\n"
BODY+="- [ ] Verify domain availability for the chosen name\n"
BODY+="- [ ] Check key social handle availability (Twitter/X, LinkedIn, Instagram)\n"
BODY+="- [ ] Document any naming alternatives that were considered and rejected\n\n"
BODY+="---\n\n"
BODY+="### 🔗 URL\n\n"
BODY+="Register the domain and wire up DNS to the hosting provider.\n\n"
BODY+="- [ ] Confirm primary domain / URL (from brief or stakeholder)\n"
BODY+="- [ ] Register the domain if not already owned\n"
BODY+="- [ ] Configure DNS records pointing to Amplify (CNAME / A record)\n"
BODY+="- [ ] Set up www → apex (or apex → www) redirect\n"
BODY+="- [ ] Confirm SSL certificate provisioned and active\n\n"
BODY+="---\n\n"
BODY+="### 📧 Email\n\n"
BODY+="Set up professional email for the site.\n\n"
BODY+="- [ ] Determine required inboxes (contact@, hello@, support@, etc.)\n"
BODY+="- [ ] Set up / configure email provider (SES, Google Workspace, Postmark, etc.)\n"
BODY+="- [ ] Configure contact form routing / forwarding if applicable\n"
BODY+="- [ ] Verify SPF, DKIM, and DMARC DNS records\n"
BODY+="- [ ] Send a test email to confirm delivery\n\n"
BODY+="---\n\n"
BODY+="### 🎯 Purpose of Site\n\n"
BODY+="Nail down the mission before any design or build work begins.\n\n"
BODY+="- [ ] Write a clear one-paragraph mission statement for the site\n"
BODY+="- [ ] Define the single primary CTA every visitor should take\n"
BODY+="- [ ] List secondary goals (newsletter sign-up, lead gen, sales, portfolio, etc.)\n"
BODY+="- [ ] Define how success will be measured (KPIs, conversion targets)\n\n"
BODY+="---\n\n"
BODY+="### 🛠️ Technology Stack\n\n"
BODY+="Decide on the tech before any code is written.\n\n"
BODY+="- [ ] Frontend framework (Next.js, Astro, Vue, Nuxt, plain HTML, etc.)\n"
BODY+="- [ ] Styling solution (Tailwind, MUI, CSS Modules, Styled Components, etc.)\n"
BODY+="- [ ] CMS / content layer if needed (Contentful, Sanity, MDX, Strapi, etc.)\n"
BODY+="- [ ] Backend / API layer (serverless functions, REST, GraphQL, none)\n"
BODY+="- [ ] Database if applicable\n"
BODY+="- [ ] Third-party integrations (payments, auth, CRM, etc.)\n"
BODY+="- [ ] Document final stack decision with rationale in a comment\n\n"
BODY+="---\n\n"
BODY+="### 🎨 Site Theme\n\n"
BODY+="Establish the visual identity before any UI is built.\n\n"
BODY+="- [ ] Define color palette: primary, secondary, accent, background, text\n"
BODY+="- [ ] Choose typography: heading font, body font, optional monospace\n"
BODY+="- [ ] Establish visual tone: minimal, bold, editorial, corporate, playful, etc.\n"
BODY+="- [ ] Collect 3+ reference sites or a mood board link\n"
BODY+="- [ ] Logo / brand mark — existing asset or needs to be created?\n"
BODY+="- [ ] Document final theme decisions with hex codes and font names\n\n"
BODY+="---\n\n"
BODY+="### 👥 Roles\n\n"
BODY+="Define who has access to what before any accounts are provisioned.\n\n"
BODY+="- [ ] List all team members who need access to this project\n"
BODY+="- [ ] Assign roles: owner, developer, designer, content editor, stakeholder\n"
BODY+="- [ ] Set up repository permissions accordingly\n"
BODY+="- [ ] Set up Amplify / hosting console access\n"
BODY+="- [ ] Document who has authority to approve and trigger production deployments\n\n"
BODY+="---\n\n"
BODY+="### 📄 Website Pages\n\n"
BODY+="Plan the full site map before any page is built.\n\n"
BODY+="- [ ] List every planned page with a one-line description of its purpose\n"
BODY+="- [ ] Define the primary navigation structure\n"
BODY+="- [ ] Label each page: MVP (must ship) or post-launch (nice to have)\n"
BODY+="- [ ] Flag which pages require dynamic / CMS-driven content\n"
BODY+="- [ ] Confirm 404 page and error state strategy\n\n"
BODY+="---\n\n"
BODY+="### 📊 Analytics\n\n"
BODY+="Set up measurement before launch — not after.\n\n"
BODY+="- [ ] Choose analytics provider (GA4, Plausible, Fathom, PostHog, etc.)\n"
BODY+="- [ ] Create account / property and document tracking ID\n"
BODY+="- [ ] Install tracking snippet or integration in the codebase\n"
BODY+="- [ ] Define key events to track (page views, CTA clicks, form submissions, conversions)\n"
BODY+="- [ ] Verify data flows correctly in both dev and production environments\n\n"
BODY+="---\n\n"
BODY+="### ⚖️ Legal / Privacy / Cookies\n\n"
BODY+="Handle legal compliance before any public traffic hits the site.\n\n"
BODY+="- [ ] Privacy Policy — draft or generate; confirm it covers all data collected\n"
BODY+="- [ ] Terms of Service — draft if the site collects data, sells, or has user accounts\n"
BODY+="- [ ] Cookie consent banner — required if using analytics or targeting EU visitors\n"
BODY+="- [ ] GDPR / CCPA compliance review\n"
BODY+="- [ ] Legal entity name and contact information on the site (footer at minimum)\n"
BODY+="- [ ] DMCA / copyright notices if applicable\n\n"
BODY+="---\n\n"
BODY+="_🐾 Silma — Build New Site · auto-generated ${TODAY}_"
curl -f -s -X POST \
"http://100.79.253.19:3000/api/v1/repos/${{ gitea.repository }}/issues" \
-H "Authorization: token ${{ gitea.token }}" \
-H "Content-Type: application/json" \
-d "{
\"title\": \"Build New Site \u2014 ${PROJECT}\",
\"body\": \"${BODY}\"
}"