From 3ecceb8fd039bae0d407f074410f34766b8416b8 Mon Sep 17 00:00:00 2001 From: jacob-mathison Date: Tue, 2 Jun 2026 14:06:54 -0700 Subject: [PATCH] Add .gitea/workflows/build-new-site.yml --- .gitea/workflows/build-new-site.yml | 158 ++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 .gitea/workflows/build-new-site.yml diff --git a/.gitea/workflows/build-new-site.yml b/.gitea/workflows/build-new-site.yml new file mode 100644 index 0000000..9179809 --- /dev/null +++ b/.gitea/workflows/build-new-site.yml @@ -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 3โ€“5 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}\" + }"