🔗 Fix all URLs and email addresses #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy to GitHub Pages | |
| on: | |
| # Runs on pushes targeting the default branch | |
| push: | |
| branches: ["main"] | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. | |
| # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| jobs: | |
| # Build job | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Pages | |
| uses: actions/configure-pages@v4 | |
| - name: Optimize images (if any) | |
| run: | | |
| # Install imagemagick for image optimization | |
| sudo apt-get update | |
| sudo apt-get install -y imagemagick | |
| # Optimize any PNG/JPG images if they exist | |
| find docs/ -name "*.png" -exec mogrify -strip -interlace Plane -quality 85 {} \; || true | |
| find docs/ -name "*.jpg" -exec mogrify -strip -interlace Plane -quality 85 {} \; || true | |
| find docs/ -name "*.jpeg" -exec mogrify -strip -interlace Plane -quality 85 {} \; || true | |
| - name: Minify CSS | |
| run: | | |
| # Install css minifier | |
| npm install -g clean-css-cli | |
| # Minify CSS file | |
| if [ -f "docs/style.css" ]; then | |
| cleancss -o docs/style.min.css docs/style.css | |
| mv docs/style.min.css docs/style.css | |
| fi | |
| - name: Minify JavaScript | |
| run: | | |
| # Install JS minifier | |
| npm install -g terser | |
| # Minify JS file | |
| if [ -f "docs/script.js" ]; then | |
| terser docs/script.js -o docs/script.min.js --compress --mangle | |
| mv docs/script.min.js docs/script.js | |
| fi | |
| - name: Generate sitemap.xml | |
| run: | | |
| cat > docs/sitemap.xml << 'EOF' | |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> | |
| <url> | |
| <loc>https://xpaysh.github.io/awesome-x402/</loc> | |
| <lastmod>$(date -u +%Y-%m-%d)</lastmod> | |
| <changefreq>weekly</changefreq> | |
| <priority>1.0</priority> | |
| </url> | |
| </urlset> | |
| EOF | |
| - name: Generate robots.txt | |
| run: | | |
| cat > docs/robots.txt << 'EOF' | |
| User-agent: * | |
| Allow: / | |
| Sitemap: https://xpaysh.github.io/awesome-x402/sitemap.xml | |
| EOF | |
| - name: Generate .htaccess for caching | |
| run: | | |
| cat > docs/.htaccess << 'EOF' | |
| # Enable gzip compression | |
| <IfModule mod_deflate.c> | |
| AddOutputFilterByType DEFLATE text/plain | |
| AddOutputFilterByType DEFLATE text/html | |
| AddOutputFilterByType DEFLATE text/xml | |
| AddOutputFilterByType DEFLATE text/css | |
| AddOutputFilterByType DEFLATE application/xml | |
| AddOutputFilterByType DEFLATE application/xhtml+xml | |
| AddOutputFilterByType DEFLATE application/rss+xml | |
| AddOutputFilterByType DEFLATE application/javascript | |
| AddOutputFilterByType DEFLATE application/x-javascript | |
| </IfModule> | |
| # Set cache headers | |
| <IfModule mod_expires.c> | |
| ExpiresActive on | |
| ExpiresByType text/css "access plus 1 year" | |
| ExpiresByType application/javascript "access plus 1 year" | |
| ExpiresByType image/png "access plus 1 year" | |
| ExpiresByType image/jpg "access plus 1 year" | |
| ExpiresByType image/jpeg "access plus 1 year" | |
| ExpiresByType image/gif "access plus 1 year" | |
| ExpiresByType image/svg+xml "access plus 1 year" | |
| </IfModule> | |
| # Security headers | |
| <IfModule mod_headers.c> | |
| Header always set X-Content-Type-Options nosniff | |
| Header always set X-Frame-Options DENY | |
| Header always set X-XSS-Protection "1; mode=block" | |
| Header always set Referrer-Policy "strict-origin-when-cross-origin" | |
| Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" | |
| </IfModule> | |
| EOF | |
| - name: Add performance optimizations | |
| run: | | |
| # Add preconnect links to index.html for faster loading | |
| sed -i 's|<head>|<head>\n <link rel="preconnect" href="https://cdn.jsdelivr.net">\n <link rel="preconnect" href="https://cdnjs.cloudflare.com">\n <link rel="dns-prefetch" href="https://raw.githubusercontent.com">|' docs/index.html | |
| # Add critical CSS inlining marker (for future optimization) | |
| sed -i 's|<link rel="stylesheet" href="style.css">|<link rel="stylesheet" href="style.css">\n <!-- Critical CSS will be inlined here in production -->|' docs/index.html | |
| - name: Validate HTML | |
| run: | | |
| # Install HTML validator | |
| npm install -g html-validate | |
| # Validate HTML (non-blocking) | |
| html-validate docs/index.html || echo "HTML validation completed with warnings" | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: 'docs' | |
| # Deployment job | |
| deploy: | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 | |
| # Post-deployment job for notifications | |
| notify: | |
| runs-on: ubuntu-latest | |
| needs: [build, deploy] | |
| if: always() | |
| steps: | |
| - name: Notify deployment status | |
| run: | | |
| if [ "${{ needs.deploy.result }}" == "success" ]; then | |
| echo "✅ Successfully deployed to GitHub Pages!" | |
| echo "🌐 Site URL: ${{ needs.deploy.outputs.page_url }}" | |
| echo "📊 Build completed at: $(date -u)" | |
| else | |
| echo "❌ Deployment failed!" | |
| echo "🔍 Check the logs above for details" | |
| fi | |
| - name: Create deployment summary | |
| run: | | |
| cat >> $GITHUB_STEP_SUMMARY << 'EOF' | |
| # 🚀 Awesome x402 Page Deployment | |
| ## Deployment Status | |
| - **Build Status**: ${{ needs.build.result }} | |
| - **Deploy Status**: ${{ needs.deploy.result }} | |
| - **Site URL**: [${{ needs.deploy.outputs.page_url }}](${{ needs.deploy.outputs.page_url }}) | |
| - **Deployment Time**: $(date -u) | |
| ## Optimizations Applied | |
| - ✅ CSS Minification | |
| - ✅ JavaScript Minification | |
| - ✅ Image Optimization | |
| - ✅ SEO Meta Tags | |
| - ✅ Sitemap Generation | |
| - ✅ Performance Headers | |
| - ✅ Security Headers | |
| ## Next Steps | |
| 1. Visit the deployed site and test functionality | |
| 2. Set up Google Tag Manager if needed | |
| 3. Configure custom domain (optional) | |
| 4. Monitor site performance and analytics | |
| --- | |
| *Generated by GitHub Actions workflow* | |
| EOF |