AngularJS is a JavaScript MVC framework created by Google to build properly architectured and maintainable web applications. It uses declarative code and two-way data binding between the model and view. Key features include services, filters, directives, templates and routing to switch between views. Modules are containers that group controllers, filters, services etc. Routing is used to switch between views in a single page application. Factories can be used to share data between controllers.