Finally got the Meteor postgres-packages react-todos example working with user accounts and my dataset. But my dataset is 67k rows, which completely obliterates the app. I benchmarked Knex to see if it can handle a query result of that size. The "select * from items;" query takes around 2.3 seconds. Doing a pg_dump of the table takes 0.8 seconds. Running
cat * > foo on the table files takes 0.7 seconds. Running grep on the table files takes around 2.7s, so the Knex result is pretty good.
And I also found out that PostgreSQL notify fails if your total notification size is large enough. The Meteor Postgres integration creates triggers that send over the entire updated row, which would be a decent idea if there wasn't a notification size limit. As it is, probably need to hack Meteor to include only the changed row id in the notification and do a select to get the row contents.
Still don't fully understand React. I think you create custom elements and hook them all together and magic happens. And then the app hangs trying to update your 70k item list every 3 seconds, and you go "Hmm. We need to go deeper."
Currently gravitating towards using Meteor + React as the outer shell for the app and for detail views and other non-insane things. For the things that need to deal with the item list, I'll brew my own cauldron of madness.
And Meteor seems to lose my logged in status on server restarts. It seems to be specific to the PostgreSQL version, as the MongoDB one doesn't suffer from that.  Tracked it down to accounts-base/os/accounts_server.js deleting all user sessions on startup. I can't understand why it would do that, and the comment doesn't make it any clearer.