[Feature]: Add game history export — allow users to download their game as a PGN file
@navyasastry06 arbeitet bereits daran.
Seit 06.8.2026.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Bereich
- full-stack
Rechercherichtung
Trace the backend REST move-processing flow and locate or establish the proposed game/pgn.py entry point, then identify how the frontend handles completed games. Done means moves can produce a valid PGN through GET /api/game/:id/pgn and a post-game “Download PGN” button downloads it; run the existing backend and frontend tests after checking their locations.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
PGN (Portable Game Notation) is the universal standard format for recording chess games. Every major chess platform (chess.com, Lichess, Chess24) allows users to download their games as PGN files, which can then be imported into analysis tools like Stockfish, ChessBase, or opened on any chess website. Checkora has no game export functionality, which means players cannot save or analyze their games after they finish. This is a significant missing feature for a chess platform.
Problem
Games played on Checkora are not saved or exportable.
Players who want to analyze a game they played against the AI cannot export it.
There is no PGN export, no FEN export, and no game history view.
Competitive players and learners who use Checkora for improvement cannot review their games.
Proposed Solution
I will implement PGN generation and download functionality:
-
Move history tracking — The backend already validates and processes moves via its REST API. I will ensure each move is stored in a session-level move list with the full move notation.
-
PGN generation — At the end of a game (or at any point during), generate a valid PGN string:
python
game/pgn.py
def generate_pgn(game_state):
headers = {
'Event': 'Checkora Game',
'Date': datetime.now().strftime('%Y.%m.%d'),
'White': game_state.get('white_player', 'Player'),
'Black': game_state.get('black_player', 'Checkora AI'),
'Result': game_state.get('result', ''),
}
header_str = '\n'.join(f'[{k} "{v}"]' for k, v in headers.items())
moves_str = ' '.join(
f'{i//2 + 1}. {m}' if i % 2 == 0 else m
for i, m in enumerate(game_state['moves'])
)
return f"{header_str}\n\n{moves_str} {game_state.get('result', '')}"
-
Download endpoint — GET /api/game/:id/pgn returns the PGN as a text file download.
-
Frontend button — "Download PGN" button appears after game end (and optionally mid-game). Triggers file download via the Blob API.
Could you assign this issue to me?
Labels: feature, enhancement, help wanted, GSSoC 2026
- Vorherrschende Sprache
- Python
- Sterne
- 140
- Forks
- 513
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Checkora/Checkora
-
[Bug]: AI Opening Book reply fails silently due to KeyError on move_history coordinates in ai_moveOffenbug GSSoC
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
-
enhancement GSSoC
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
[UI/UX] Missing hover effect on Resume and Pause buttonsEvtl. wieder frei @ishitadutta2 hat das vor 75 Tagen übernommen, und es ist kein Pull Request offen. Offenbug enhancement frontend good first issue GSSoC
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
fix(engine): cap move_history at 300 entries to prevent session cookie overflowEvtl. wieder frei @ishitadutta2 hat das vor 75 Tagen übernommen, und es ist kein Pull Request offen. Offenbug GSSoC
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
bug GSSoC
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Alle Issues in Checkora/Checkora
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
dbt-labs/spark-utils#51 ·
-
bug pydanty:is-working
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
pydantic/pydantic-ai#13444 ·
Maintainer antworten meist innerhalb von 1 Tag
-
good first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
good first issue help wanted
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
-
changelog investigate
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 68/100
ramnes/notion-sdk-py#502 ·