One project I've always wanted to undertake was to re-write Hans' PDN viewer. Nothing against Hans', but I prefer writing things myself so I can better understand them.
I also wanted to improve on some aspects of it and add some more things to it.
Current Version:
http://playground.usacheckers.com/boardTest.html
Current Features:
Setup Mode (drag and drop pieces onto a board)
Show/Hide Numbers
Flip Board
Resize Board on the fly
Capture Current position as FEN
Read javascript string and display position (string is currently a string of length x where x corresponds to the number of playable squares. For standard checkers m = white single, b = black single, W = white king, B = black king, . = empty)
Adjustable Board size (by default an 8x8 board is drawn, but it is built dynamically and therefore can accommodate 10x10 or others.)
Base Class (The base class is simply a board, any color square can be made "playable" so it could extend to chess boards as well)
Replaceable pieces and colors. (The board and pieces can be changed)
Current Limitations:
No front end user functions for most things yet
No PDN interaction
Interface not clean in all browsers
Future Features:
Convert PDN to javascript array of positions (done server-side most likely)
Generate/Display moves list so any move can be clicked to see the position
Multiple Modes to change functionality (setup mode, play mode, view mode, etc. For instance view mode would only show the board and hide movelist, comments, draggable pieces, etc)
One nice neat file to give to other developers for use.
Game search (search for games by players,year,events,etc)
Position Search (search the online archive for a given position)
Nice to Have:
Interface into forums (be able to draw a position and embed it into your post or to paste a PDN into the post and wrap it with [pdn] tags similar to images)
Allow users to make comments on positions and have those comments show up to other viewers.
Simple multiplayer interface (because it's javascript it won't be very secure, but it would be fun to attempt)
Oh and in case anyone is interested I'm using the dojo javascript toolkit to help with this project.
http://www.dojotoolkit.org/
