README.md 1.6 KB

Geoguessr Self-Hosted Reimplementation

Back End

API Endpoints
GET /
    Returns {
        "version": string
    }
POST /name
    Accepts {
        "name": string,
        "secret": string
    }
    Returns 400 vs 204, sets session cookie
PUT /game
    Requires session cookie
    Accepts {
        "timer": number
    }
    Returns {
        "gameId": string
    }
GET /game/{ID}
    Requires session cookie
    Returns {
        "timer": number,
        "coords": {
            "1": {
                "lat": number,
                "lon": number,
            }, ...
        }
    }
GET /game/{ID}/guesses/{name}
    Requires session cookie
    Returns {
        "currentRound": string || null,
        "guesses": {
            "1": {
                "lat": number,
                "lon": number,
                "score": number,
            }, ...
        }
    }
POST /game/{ID}/guesses/{name}/{round}
    Requires session cookie
    Accepts {
        "lat": number,
        "lon": number,
    }
    Returns 400 vs 201

Front End

- Render streetview pano
- Render map for guessing
    - On click, place and track marker for guess
- Render control pane
    - Submit button
    - Timer
    - Round counter
    - Current scores
- Fetch /game/{ID}, extract coords and timer length
- Main Loop
    - Fetch /game/{ID}/guesses/{name}, update scores and round
        - if round comes back null, redirect to /summary/{ID}
    - Extract current coord
    - Clear map markers
    - Zoom out map
    - Change pano to coord
    - Reset timer
    - On timeout or submit -> POST to /game/{ID}/guesses/{name}/{round}