Sem descrição

Kirk Trombley 1e6896f6b9 Splitting up player scores component into module with sub components há 5 anos atrás
docker 34eb2cd10b Big swath of reorganizing now that the deployment path is clear há 5 anos atrás
server 1f6b0c2970 Some auto-formatting and docs of the back-end há 5 anos atrás
ui 1e6896f6b9 Splitting up player scores component into module with sub components há 5 anos atrás
.dockerignore 34eb2cd10b Big swath of reorganizing now that the deployment path is clear há 5 anos atrás
.gitignore 34eb2cd10b Big swath of reorganizing now that the deployment path is clear há 5 anos atrás
README.md 3de53225b4 Update README há 5 anos atrás

README.md

Geoguessr Self-Hosted Reimplementation

Build Docker Image Tarball

./docker/build.sh

API

API Endpoints
GET /
    Returns {
        "version": string,
        "status": string
    }
GET /googleApiKey
    Returns {
        "googleApiKey": string
    }
PUT /game
    Header Authorization: Name string
    Accepts {
        "timer": number
    }
    Returns {
        "gameId": string
    }
GET /game/{ID}
    Returns {
        "gameId": string,
        "creator": string,
        "timer": number,
        "coords": {
            "1": {
                "lat": number,
                "lng": number,
            }, ...
        },
        "players": [
            {
                "name": string,
                "currentRound": string || null,
                "totalScore": number,
                "guesses": {
                    "1": {
                        "lat": number,
                        "lng": number,
                        "score": number
                    }, ...
                }
            }, ...
        ]
    }
POST /game/{ID}/join
    Header Authorization: Name string
    Returns 201 vs 401
GET /game/{ID}/guesses
    Header Authorization: Name string
    Returns {
        "currentRound": string || null,
        "guesses": {
            "1": {
                "lat": number,
                "lng": number,
                "score": number
            }, ...
        }
    }
POST /game/{ID}/guesses/{round}
    Header Authorization: Name string
    Accepts {
        "lat": number,
        "lng": number
    } OR {
        "timeout": boolean
    }
    Returns 400 vs 201 and {
        "score": number,
        "totalScore": number
    }

Next Steps

  • Refactor round tracking in database logic
  • Reduce complexity of game_api in back-end
  • Reduce complexity of GamePanel in front-end
  • Genericize number of rounds
  • Genericize round timer in UI
  • Finalize scoring formula
  • Button to return the street view pano to the target
  • Track name via tokens
  • Error handling in UI
  • Live update summary page
  • Navigate directly to summary page
  • Navigate directly to joining a game
  • Re-join a game you did not finish
  • Show current best on round summary
  • Round summary should use dynamic map
  • Cache API key after first call to back-end
  • Styling and layout improvements
  • Optimize docker file or set up compose structure