Systematically analyze a codebase to understand its structure, purpose, technologies, and architecture.