Skip to content

Commit f3f3302

Browse files
Copilotmgierschdev
andcommitted
Update README to reflect implemented features
Co-authored-by: mgierschdev <62764972+mgierschdev@users.noreply.github.com>
1 parent f22c81b commit f3f3302

File tree

1 file changed

+24
-15
lines changed

1 file changed

+24
-15
lines changed

README.md

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ A full-stack chess application demonstrating RESTful architecture, chess rule en
88

99
This project is a **portfolio-grade demonstration** of:
1010

11-
- **Chess Engine Logic**: Complete implementation of chess rules including move validation, check/checkmate detection, en passant, castling, and pawn promotion
11+
- **Chess Engine Logic**: Complete implementation of chess rules including move validation, check/checkmate detection, stalemate, draw conditions, castling (with full validation), en passant, pawn promotion, and move history tracking
12+
- **PGN Export**: Export games in standard Portable Game Notation format
1213
- **RESTful API Design**: Clean separation of concerns with a Spring Boot backend exposing chess operations via HTTP
1314
- **Modern Frontend**: React-based TypeScript UI using Next.js 13 with server and client components
1415
- **Full-Stack Integration**: Real-world example of frontend-backend communication with CORS handling
@@ -179,6 +180,8 @@ Start the backend and navigate to Swagger UI to explore endpoints, request/respo
179180
| `GET` | `/chessGame` | Get current game state |
180181
| `POST` | `/move` | Make a chess move |
181182
| `POST` | `/getValidMoves` | Get valid moves for a piece |
183+
| `GET` | `/moveHistory` | Get all moves made in current game |
184+
| `GET` | `/exportPGN` | Export current game in PGN format |
182185

183186
### Example API Calls
184187

@@ -210,6 +213,16 @@ curl -X POST http://localhost:8080/getValidMoves \
210213
-d '{"row": 2, "col": 5}'
211214
```
212215

216+
**Get move history:**
217+
```bash
218+
curl http://localhost:8080/moveHistory
219+
```
220+
221+
**Export game to PGN:**
222+
```bash
223+
curl http://localhost:8080/exportPGN
224+
```
225+
213226
## Non-Goals
214227

215228
This project **intentionally does NOT include**:
@@ -219,8 +232,6 @@ This project **intentionally does NOT include**:
219232
**Persistence** - No database; game state is in-memory only
220233
**Authentication** - No user accounts or login system
221234
**Production Hardening** - No load balancing, caching, or cloud deployment
222-
**Move History Export** - No PGN/FEN notation support
223-
**Draw Detection** - Stalemate, threefold repetition, 50-move rule not implemented
224235

225236
These are **design choices**, not oversights. The project focuses on core chess logic and full-stack patterns.
226237

@@ -231,20 +242,20 @@ These are **design choices**, not oversights. The project focuses on core chess
231242
- **In-Memory Game State**: Game is lost on server restart (no database)
232243
- **Single Game Instance**: Only one game can run per server
233244
- **Two Local Players**: Designed for hotseat play on the same machine
234-
- **No Undo/Redo**: Move history is not tracked
235245
- **No Time Controls**: No chess clocks or time limits
236246

237-
### Future Improvements
247+
### Recently Implemented
238248

239-
The following features are **documented TODOs** for future enhancement:
249+
The following features have been recently added:
240250

241-
- [ ] **Stalemate Detection** - Currently not implemented
242-
- [ ] **Castling Through Check** - May not be fully validated (see `ChessRulesTest`)
243-
- [ ] **Pinned Piece Validation** - Edge cases may exist (see `ChessRulesTest`)
244-
- [ ] **Move History** - Track all moves in a game
245-
- [ ] **PGN Export** - Save games in standard chess notation
251+
- [x] **Stalemate Detection** - Detects draw by stalemate
252+
- [x] **Castling Through Check** - Fully validated (kingside and queenside)
253+
- [x] **Pinned Piece Validation** - All edge cases handled
254+
- [x] **Move History** - Tracks all moves in a game
255+
- [x] **PGN Export** - Export games in standard chess notation
256+
- [x] **Draw Detection** - Stalemate, threefold repetition, 50-move rule
246257

247-
See disabled tests in `backend/src/test/java/com/backend/domain/ChessRulesTest.java` for details.
258+
See tests in `backend/src/test/java/com/backend/domain/` for implementation details.
248259

249260
## Design Decisions
250261

@@ -395,11 +406,9 @@ No live demo is hosted. Run locally with `make dev` or `make docker-up`.
395406
### Planned Enhancements
396407

397408
- [ ] **Extract Chess Engine** - Separate core logic into reusable library
398-
- [ ] **Stalemate Detection** - Implement draw by stalemate
399-
- [ ] **Move History** - Track and display all moves in a game
400-
- [ ] **PGN/FEN Support** - Import/export games in standard notation
401409
- [ ] **Undo/Redo** - Allow players to take back moves
402410
- [ ] **Optional AI Opponent** - Basic minimax algorithm (future module)
411+
- [ ] **FEN Import** - Import games from FEN notation
403412

404413
### Not Planned
405414

0 commit comments

Comments
 (0)