>> Grist tables are literally SQLite tables.

So whenever a new form/table is created, is it getting stored within a sqlite table on your backend ?

Yes, a new table in your spreadsheet is stored as a new sqlite table, plus some metadata about it in some other administrative tables. You get all of this as a standalone, round-trippable file when you download your spreadsheet.

That is cool. I have so many projects with sqlite but all on my local machine. Is it possible to import an sqlite ?

Also could you help understand what happens behind the scenes in your backend & some best practices involved in using SQLite in backend. Like how do you mount them on to say to your backend if you are using docker/kubernetes.

Ah, we do have a general purpose importer from sqlite lurking but not published, I'll bump its priority. In the meantime, you can use the hosted or local rest api from python or javascript to generate a grist spreadsheet https://support.getgrist.com/rest-api/. On the backend, for serving individual user spreadsheets, we use node/express workers connecting to a pool of sqlite files, persisted via the sqlite backup api https://sqlite.org/backup.html https://github.com/mapbox/node-sqlite3/pull/1116. If you want to dig in, you could poke around at https://github.com/gristlabs/grist-core