Hi, I also use Grass for backend. I've written a python script using pexpect to start and "drive" a grass session. In this way I can use grass's modules through the script as if I was sitting in front of the terminal. The python script exposes its functions via SOAP, which allows me to call the script with what ever I want - normally php. The down side is that grass is not thread safety, which means you can't start more than one session in a mapset at the time. My script waits in a loop until the previous spawned session ends. This is not good for heavy traffic! After calling grass you can use MapServer to render and display the map, neither directly from the grass database or let grass export the data to a image file.
Martin
