The most important thing in life is to have your pokémon arranged neatly. That’s a fact. While I understand you can just rename boxes with numbers so that Box 1 is 1-30 and Box 2 is 31-60, etc., there’s still a tiny bit of basic arithmetic slowing down your sorting efforts. Unacceptable. A program needed to be typed up, immediately.
I decided it would be quicker just to write a few functions to tell me the box, row, and column for any given pokémon. Then I decided I’d like to check by name as well as dex #. Then I decided maybe it needed search with autocomplete. And then maybe some sprites… Long story short, now there’s PokéSorter.
Enter the name or dex # of a pokémon and it will show you exactly where to put it in your living dex.
After thinking about it for a bit, I realized it might as well also let you track which pokémon you currently have in your dex or living dex, so it got an account system. Then it got sharing features, so for example my dex is at www.pokesorter.com/admin. Then, why not, it got comparison features, so you can compare your dex against mine at www.pokesorter.com/admin,<your username>. Some of my friends use Google Sheets to track their pokédexes, so I went ahead and gave it CSV export as well. In the future it will probably get IV, nature, move tracking, etc.
All in all, it was good practice for creating a single-page app with a secure account system and email capabilities. In theory it can handle a significant number of users with very little investment into the server, as little is actually real-time, the client handles the overwhelming majority of the logic, and most actions happen in batches to reduce the number of times the server has to do anything. Got quite a lot of practice in vector art, too, as that logo didn’t make itself.