This is a project with many goals. I may never get them all, but I'm sure going to try.
- Completely Replace the need for Chessabse, SCID, Chessable, Chess position trainer and Chesstempo.
- Build a better chess engine designed to aid in learning.
- Should be faster than stockfish at finding and identifying teachable positions (tactical puzzles, positional motifs)
- elo is a secondary goal
- Must be able to identify motifs
- Get much (most?) of it integrated into lichess directly.
- e-book reader. PDF, PGN, Chessbase files. Optimized for desktop and tablets/phones.
- Extensive markup of positions with arrows, circles, notes, comments, etc. Stored permanently.
- Ability to easily switch to other reference material that you have that covers simlar positions.
- database creation and maintenance.
- Opening repertoire features.
- Spaced repetition for practice of opening repertoire databases
- Automatic analysis of holes: Often or rare lines or computer moves that you don't cover that are legitmate alternatives.
- Easy ability to add lines from books into your repertoire
- Practice of entire lines, not just individual positions.
- When mistakes are made, immediate recall of book line w/ personal notes etc.
- When lines are successfully completed ability to transition into a guess-the-move from a master's game that reached the same position or to play on against the computer or to transition into tactics that arose out of this line.
- Ability to compare your own games against your opening repertoire to compare when and where you went wrong.
- Sort by PGN tags (White pLayer, Elo, Black player, date, multiple sorts)
- Merge/manipulate databases.
- Filter/searching of games similar to scoutfish (use scoutfish???)
- Opening repertoire features.
- tactic generation
- Tactics based on motifs
- Tactics from specific game sets (your own, master's etc).
- Motif and depth-of-calculation-motif rating. Example: found a winning line, but not the mate in 3? Lose rating for th "type of mate in 3" that you missed, but gain rating for the motif that you took advantage of to achieve a winning position.
- Spaced repitition training on tactical-motifs based on your rating/ability.
- Custom engine to more quickly and easily identify and share tactics from positions.
The view / controller will use http://nwjs.io/ + mithril.js + chessground for the interface. The model will be powered by a Rust backend in order to make proper use of today's concurrent CPUs. Communication between view/controller and model will be over HTTP (yes, even locally). Why? Because it's a great way to enforce proper model separation, and it allows full separation of the view from the engine, even across system boundaries. Also, it will allos us to integrate the JS stuff into lichess and possibly a deployment the RUST server as a service for lichess should any of these features be desired in lichess.
What if lichess replicates or otherwise provides these same features?
Great! That's where many of these features belong. I still see the need for an offline version of these features due to licensing issues with importing e-books into lichess proper and the desire to have all of your data backed up locally for convenience and ease of use and to protect against the risk of lichess losing it.