chore(architecture): update app architecture to match best practices