diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..1dfdb1a --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @brittek diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..c25c052 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: brittek +custom: https://brittek.io/contact diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..47ed8f2 --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,15 @@ +# Security Policy + +## Supported Versions + +Security fixes are applied to the `main` branch. Deployments derived from this repository should track `main` or cherry-pick patches promptly. + +## Reporting a Vulnerability + +Please report suspected vulnerabilities by emailing [info@brittek.digital](mailto:info@brittek.digital). Include: + +- Detailed description of the issue and potential impact +- Steps to reproduce or proof-of-concept +- Any mitigations already in place + +We will acknowledge receipt within 2 business days and provide status updates at least weekly until resolution. Please do not disclose the issue publicly until it has been remediated and coordinated disclosure has been agreed. diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md new file mode 100644 index 0000000..50d13c1 --- /dev/null +++ b/.github/SUPPORT.md @@ -0,0 +1,21 @@ +# Support + +## Need help? + +For general questions about Brittek Digital or this repository: + +- 📧 Email: [info@brittek.digital](mailto:info@brittek.digital) +- 🌐 Website: [https://brittek.io](https://brittek.io) + +## Response Times + +- Business hours: Monday–Friday, 09:00–17:00 AEST +- Target initial response: within 2 business days + +## Bug Reports & Feature Requests + +Please open an issue with the appropriate template and include environment details, steps to reproduce, and expected vs. actual behaviour. Sensitive information should be redacted or sent via email. + +## Security Issues + +Refer to [SECURITY.md](SECURITY.md) for responsible disclosure instructions. diff --git a/.github/workflows/traffic-snapshot.yml b/.github/workflows/traffic-snapshot.yml new file mode 100644 index 0000000..db3e395 --- /dev/null +++ b/.github/workflows/traffic-snapshot.yml @@ -0,0 +1,55 @@ +name: traffic-snapshot + +on: + schedule: + - cron: '0 2 * * *' + workflow_dispatch: + +permissions: + contents: write + +jobs: + snapshot: + if: ${{ secrets.TRAFFIC_PAT != '' }} + runs-on: ubuntu-latest + env: + TRAFFIC_TOKEN: ${{ secrets.TRAFFIC_PAT }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + - name: Configure git credentials + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git remote set-url origin https://x-access-token:${TRAFFIC_TOKEN}@github.com/${{ github.repository }}.git + - name: Snapshot traffic metrics + env: + REPO: ${{ github.repository }} + run: | + set -euo pipefail + if [ -z "${TRAFFIC_TOKEN}" ]; then + echo "TRAFFIC_PAT secret is not configured; skipping snapshot." >&2 + exit 0 + fi + DATE="$(date -u +"%Y-%m-%dT%H-%M-%SZ")" + mkdir -p analytics + for endpoint in views clones popular/referrers popular/paths; do + slug="${endpoint//\//-}" + file="analytics/${DATE}-${slug}.json" + echo "Fetching ${endpoint} -> ${file}" + curl -sSf \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${TRAFFIC_TOKEN}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + "https://api.github.com/repos/${REPO}/traffic/${endpoint}" | jq '.' > "${file}" + done + if git status --short | grep -q "."; then + git add analytics + git commit -m "chore: snapshot traffic ${DATE}" + BRANCH="${GITHUB_REF##*/}" + git push origin HEAD:"${BRANCH}" + else + echo "No changes to commit" + fi diff --git a/README.md b/README.md index 9d3794f..64e9a77 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,24 @@

- Brittek Digital Monogram + Brittek Digital Logo

brittek.io

Brittek Digital — Website front-end, AI-first structured data, and deployment artefacts.

+> ⚠️ Official Repository — Brittek I/O +> This is the **only** canonical source for the Brittek I/O maintenance site. +> • Website: https://brittek.io +> • Verified domain(s): brittek.io +> • No redistribution / rebranding without written consent + --- ## TL;DR diff --git a/analytics/README.md b/analytics/README.md new file mode 100644 index 0000000..b2ed36e --- /dev/null +++ b/analytics/README.md @@ -0,0 +1,14 @@ +# Traffic Snapshots + +This directory stores timestamped JSON snapshots of GitHub traffic metrics (views, clones, referrers, and popular paths) captured by the `traffic-snapshot` workflow. + +Each file is named using the UTC timestamp of collection and the metric, for example: + +``` +2024-05-08T02-00-00Z-views.json +2024-05-08T02-00-00Z-clones.json +2024-05-08T02-00-00Z-popular-referrers.json +2024-05-08T02-00-00Z-popular-paths.json +``` + +> **Note:** The workflow requires a personal access token with `repo` and `traffic` scopes stored as `TRAFFIC_PAT` in the repository secrets. Without this secret the snapshot job will be skipped. diff --git a/index.html b/index.html index 7e39b0b..9b58ec2 100644 --- a/index.html +++ b/index.html @@ -16,13 +16,12 @@ - + - - - + + @@ -115,16 +114,24 @@ border-bottom: 1px solid var(--border); } - .brand { display: flex; align-items: center; gap: .75rem; font-weight: 800; letter-spacing: .01em } - .brand-mark { position: relative; width: 44px; height: 24px } - .dot { - position: absolute; top: 50%; width: 14px; height: 14px; border-radius: 999px; - background: var(--primary); transform: translateY(-50%); transition: transform .35s ease - } - .dot-1 { left: 0 } - .dot-2 { left: 18px; mix-blend-mode: screen } - .brand:hover .dot-1 { transform: translate(-6px, -50%) } - .brand:hover .dot-2 { transform: translate(6px, -50%) } + .brand { + display: flex; + align-items: center; + gap: .75rem; + font-weight: 800; + letter-spacing: .01em; + color: var(--fg); + } + .brand-logo { + height: 38px; + width: auto; + display: block; + border-radius: 12px; + box-shadow: 0 4px 18px rgba(254, 74, 2, 0.25); + } + @media (min-width:768px) { + .brand-logo { height: 44px } + } /* Main */ main { position: relative; z-index: 2; display: grid; place-items: center; padding: 6vh 16px 4vh; text-align: center } @@ -248,13 +255,13 @@ { "@context": "https://schema.org", "@type": ["Organization","LocalBusiness"], - "@id": "https://brittek.digital/#org", + "@id": "https://brittek.io/#org", "name": "Brittek Digital", "legalName": "Brittek Digital Pty Ltd", "identifier": "ABN 77 481 837 020", - "url": "https://brittek.digital/", - "logo": "https://framerusercontent.com/images/ZEVAhmjIDjEGmQ3UcG2uFTHjKI.svg", - "image": "https://framerusercontent.com/images/ZEVAhmjIDjEGmQ3UcG2uFTHjKI.svg", + "url": "https://brittek.io/", + "logo": "https://assets.codepen.io/9806267/2_5.png", + "image": "https://assets.codepen.io/9806267/2_5.png", "slogan": "AI automation, premium web, and brand systems — built for growth.", "founder": { "@type": "Person", "name": "James L. Britton" }, "address": { @@ -267,7 +274,7 @@ }, "areaServed": ["AU","NZ","US","UK"], "telephone": "+61 2 8114 4502", - "email": "info@brittek.digital", + "email": "info@brittek.digital", "sameAs": [ "https://www.linkedin.com/company/brittek-digital", "https://x.com/brittekdigital", @@ -282,7 +289,7 @@ { "@type": "ContactPoint", "contactType": "Sales", - "email": "info@brittek.digital", + "email": "info@brittek.digital", "telephone": "+61 2 8114 4502", "areaServed": "AU", "availableLanguage": ["en"], @@ -298,22 +305,22 @@ { "@context": "https://schema.org", "@type": "WebSite", - "@id": "https://brittek.digital/#website", - "url": "https://brittek.digital/", + "@id": "https://brittek.io/#website", + "url": "https://brittek.io/", "name": "Brittek Digital", "inLanguage": "en-AU", "potentialAction": { "@type": "SearchAction", - "target": "https://brittek.digital/search?q={query}", + "target": "https://brittek.io/search?q={query}", "query-input": "required name=query" } }, { "@context": "https://schema.org", "@type": "OfferCatalog", - "@id": "https://brittek.digital/#catalog", + "@id": "https://brittek.io/#catalog", "name": "Brittek Digital Core Services", - "url": "https://brittek.digital/services", + "url": "https://brittek.io/services", "itemListElement": [ { "@type": "OfferCatalog", @@ -322,14 +329,14 @@ { "@type": "Offer", "priceCurrency": "AUD", - "url": "https://brittek.digital/services/ai-automation", + "url": "https://brittek.io/services/ai-automation", "itemOffered": { "@type": "Service", "name": "AI Automation & Agents", "serviceType": "LLM orchestration, workflow automation, RPA", - "provider": { "@id": "https://brittek.digital/#org" }, + "provider": { "@id": "https://brittek.io/#org" }, "areaServed": "Global", - "termsOfService": "https://brittek.digital/terms" + "termsOfService": "https://brittek.io/terms" } } ] @@ -341,12 +348,12 @@ { "@type": "Offer", "priceCurrency": "AUD", - "url": "https://brittek.digital/services/web", + "url": "https://brittek.io/services/web", "itemOffered": { "@type": "Service", "name": "Responsive Web & Headless", "serviceType": "Next.js, performance engineering, accessibility", - "provider": { "@id": "https://brittek.digital/#org" } + "provider": { "@id": "https://brittek.io/#org" } } } ] @@ -358,12 +365,12 @@ { "@type": "Offer", "priceCurrency": "AUD", - "url": "https://brittek.digital/services/brand", + "url": "https://brittek.io/services/brand", "itemOffered": { "@type": "Service", "name": "Brand & Visual Systems", "serviceType": "Identity, design systems, guidelines", - "provider": { "@id": "https://brittek.digital/#org" } + "provider": { "@id": "https://brittek.io/#org" } } } ] @@ -375,12 +382,12 @@ { "@type": "Offer", "priceCurrency": "AUD", - "url": "https://brittek.digital/services/software", + "url": "https://brittek.io/services/software", "itemOffered": { "@type": "Service", "name": "Custom Software", "serviceType": "Integration, data pipelines, internal tools", - "provider": { "@id": "https://brittek.digital/#org" } + "provider": { "@id": "https://brittek.io/#org" } } } ] @@ -390,7 +397,7 @@ { "@context": "https://schema.org", "@type": "FAQPage", - "@id": "https://brittek.digital/#faq", + "@id": "https://brittek.io/#faq", "mainEntity": [ { "@type": "Question", @@ -468,10 +475,10 @@ -