# How Nuxt Works? Nuxt is a minimal but highly customizable framework to build web applications. This guide helps you better understand Nuxt internals to develop new solutions and module integrations on top of Nuxt. ## The Nuxt interface When you start nuxt in development mode with `nuxi dev` or building a production application with `nuxi build`, a common context will be created, referred to as `nuxt` internally. It holds normalized options merged with `nuxt.config` file, some internal state, and a powerful [hooking system](/api/advanced/hooks) powered by [unjs/hookable](https://github.com/unjs/hookable) allowing different components to communicate with each other. You can think of it as **Builder Core**. This context is globally available to be used with [nuxt/kit](/api/advanced/kit) composables. Therefore only one instance of Nuxt is allowed to run per process. To extend the Nuxt interface and hook into different stages of the build process, we can use [Nuxt Modules](/guide/going-further/modules). For more details, check out [the source code](https://github.com/nuxt/framework/blob/main/packages/nuxt3/src/core/nuxt.ts). ## The NuxtApp interface When rendering a page in the browser or on the server, a shared context will be created, referred to as `nuxtApp`. This context keeps vue instance, runtime hooks, and internal states like ssrContext and payload for hydration. You can think of it as **Runtime Core**. This context can be accessed using `useNuxtApp()` composable within nuxt plugins and `