Whether to save data to flat files or a database is an interesting choice. You'd have to weigh the data structure, volume, access requirements (eg, search) and so on. What kind of data will you be sharing? What kinds of operations will people do on the data?
A nice design idea is to hide the final decision behind a data abstraction layer. I built a server with a DataStore component with simple get, put, erase, list functions. I have a flat file store and an in-memory store. It would be easy to make a database version as well. Because they all use the same interface I can switch between them without changing one line of the rest of the system.
Take a look at "defer decisions" in
Knight's Principles. See how much of the program you can build without knowing where the data goes!