I know we talked a bit about this as a group, but the more I think about this the more I dislike checking the filesystem for the state of things. This introduces the burden and complexity of having to check the fs and the database. I don't think I've deployed a piece of software that worked when you removed stuff from the fs behind its back. Of course we should have error messages if something couldn't be retrieved from the fs, but I think a project should exist if it is in the database instead of somehow merging the two lists.

That would make PHP/getExistingProjectNames.php essentially the same as PHP/getProjectList.php that already exists. Similarly with loading the project, getProjectState.php already exists.