You can find developer, design and architecture documents on the GitHub repository in the discussions tab. The API documentation is created automatically via FastAPI's Swagger and ReDoc implementation and all routes have notation describing what is needed as well as example models to get started. These can be found on the /redoc or /docs endpoints.
Uploading custom models comes with a couple caveats, your model names cannot be over 62 characters long, so that they can't collide with hashed configurations, and they don't necessarily need to follow the metadata outlined in your configuration JSON.
The letter aspect is a crucial thing to keep in mind when uploading your models since some of the graphs are based around the values found within that metadata so either make sure that your custom model(s) reflect what is in your configuration JSON or disregard the outputs from the charts and do your own analysis based on the simulation results. As long as you don't touch the Kinematics block of the PhreeQC model you should be fine, but this is something to keep in mind!