- providers.py: abstract OAuthProvider with GiteaProvider + GitHubProvider - Each provider handles authorize, exchange_code, get_user, list_repositories - Provider registry: get_providers() and get_provider(name) - GitHub config: github_client_id, github_client_secret in config.py - Ready for multi-forge OAuth callback routing