The server side script would need to use PHP and MySQL. JSON objects for transfering data between client and server. Due to the size of the data set, if another option other than JSON would help improve performance, I would consider it.
The category data set that this must work with is very large (about 6,000 categories and sub-categories) and currently is very slow with a standard html "tree". This Ajax tree should be built to lessen the transport of the complete category result set back and forth between client and server.
The category table;
This tree must also have checkboxes for selecting and deselecting which categories are assigned to the current product id. This means when the tree loads that it also pre-selects the checkboxes for the categories that are assigned to the current product. It would be really nice if the whole tree didn't have to load, but any branches that contain assigned ids would load immediately. All other branches would only load when expanded. I don't know how feasible this would be? When the checkboxes are selected or deselected the product/category relationship should be saved to the database.
Product and Category relationship table;
Ability to add a top level or node at any level of the categorical tree. The category "name" would be added along with the "sort_order" for all siblings in that branch.
The edit function should all the "name" column to be updated. In the future I would like to have a modal window open that would allow an image to be uploaded, along with all other columns to be updated. The modal and image do not need to be included in this bid unles it wouldn't cost that much more.
Basic delete function with confirmation dialog or modal.
The category table allows each category to be assigned a numerical "sort_order". All siblings would need to be updated when a category is dropped into a specific branch, also adding new categories would also need to update all sort_order values.
Selecting the checkbox should assign that category_id to the inventory_id of the current product. Deselecting the checkbox should remove the category_id and inventory_id relationship from the database.
I can provide the large category schema and data set for testing.