- A dlaczego Twój kod jest wrzucony do vendor? IMO powinno być w src lub podobnym. No i dodatkowo wypada ustawienia autoloadingu przerzucić do composer.json.
- Router zasługuje na własny plik albo mógłby być wpakowany do bootstrap.php.
- Kontrolery, zamiast być pakowane bezpośrednio do routera, można spokojnie wyjąć jako osobne klasy.
- Dostępne języki to config – obecnie masz to zahardcode'owane.
To tak na 1. rzut oka ;)