Before you start rearchitecting your app, be sure to check if the only reason you're seeing preflights on GET is that someone added a dumb X-Requested-By header.
(You can even do POSTs without preflight if you use a whitelisted content-type.)
(You can even do POSTs without preflight if you use a whitelisted content-type.)
And the case where preflight isn’t needed despite using CORS.