name: Deploy to GitHub Pages
on:
    push:
        branches: 'main'

jobs:
    build_site:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v5

            - name: Install Node.js
              uses: actions/setup-node@v6
              with:
                  node-version: 24
                  cache: npm
                  cache-dependency-path: |
                      gpx/package-lock.json
                      website/package-lock.json

            - name: Install dependencies for gpx
              run: npm install --prefix gpx

            - name: Build gpx
              run: npm run build --prefix gpx

            - name: Install dependencies for website
              run: npm install --prefix website

            - name: Create env file
              run: |
                  touch website/.env
                  echo PUBLIC_MAPTILER_KEY=${{ secrets.PUBLIC_MAPTILER_KEY }} >> website/.env
                  cat website/.env

            - name: Build website
              env:
                  BASE_PATH: ''
              run: |
                  npm run build --prefix website

            - name: Upload Artifacts
              uses: actions/upload-pages-artifact@v4
              with:
                  path: 'website/build/'

    deploy:
        needs: build_site
        runs-on: ubuntu-latest

        permissions:
            pages: write
            id-token: write

        environment:
            name: github-pages
            url: ${{ steps.deployment.outputs.page_url }}

        steps:
            - name: Deploy
              id: deployment
              uses: actions/deploy-pages@v4
