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+="---\n\n" BODY+="### ๐Ÿ—‚๏ธ Gitea / GitHub Repos\n\n" BODY+="Set up version control for the project before any code is written.\n\n" BODY+="- [ ] Create the primary repository (Gitea for internal, GitHub for public/client-facing)\n" BODY+="- [ ] Set default branch, branch protection rules, and merge strategy\n" BODY+="- [ ] Add README, .gitignore, and LICENSE appropriate to the project\n" BODY+="- [ ] Configure repository access / collaborators per the Roles section above\n" BODY+="- [ ] Set up any required webhooks (CI/CD, Discord notifications, issue trackers)\n" BODY+="- [ ] Mirror to secondary host if applicable (e.g. push Gitea โ†’ GitHub)\n" BODY+="- [ ] Document the repo URL(s) in a comment on this issue\n\n" BODY+="---\n\n" BODY+="### โœ… QA / Visual Check\n\n" BODY+="Final pass before launch โ€” no exceptions.\n\n" BODY+="- [ ] Cross-browser test: Chrome, Firefox, Safari (and Edge if client requires)\n" BODY+="- [ ] Mobile responsiveness: test at 375px, 768px, 1280px, 1440px breakpoints\n" BODY+="- [ ] All links verified โ€” no broken internal or external links\n" BODY+="- [ ] All forms tested end-to-end: submission, validation, success/error states\n" BODY+="- [ ] Images: optimized, correct alt text, no layout shift on load\n" BODY+="- [ ] Typography and spacing: consistent across all pages, no orphans\n" BODY+="- [ ] Accessibility: keyboard navigation works, ARIA labels present, contrast passes WCAG AA\n" BODY+="- [ ] Page speed: run Lighthouse โ€” target 90+ performance score\n" BODY+="- [ ] SEO basics: meta titles, descriptions, og:image on all key pages\n" BODY+="- [ ] Analytics confirmed firing on production\n" BODY+="- [ ] Cookie banner and legal pages live and linked in footer\n" BODY+="- [ ] Stakeholder sign-off obtained before go-live\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}\" }"