--- title: webapp description: Documentation of Meteor's `webapp` package. --- The `webapp` package is what lets your Meteor app serve content to a web browser. It is included in the `meteor-base` set of packages that is automatically added when you run `meteor create`. You can easily build a Meteor app without it - for example if you wanted to make a command-line tool that still used the Meteor package system and DDP. This package also allows you to add handlers for HTTP requests. This lets other services access your app's data through an HTTP API, allowing it to easily interoperate with tools and frameworks that don't yet support DDP. `webapp` exposes the [express](https://github.com/expressjs/express) API for handling requests through `WebApp.handlers`. Here's an example that will let you handle a specific URL: ```js // Listen to incoming HTTP requests (can only be used on the server). WebApp.handlers.use('/hello', (req, res, next) => { res.writeHead(200); res.end(`Hello world from: ${Meteor.release}`); }); ``` {% apibox "WebApp.handlers" %} {% apibox "expressHandlersCallback(req, res, next)" %} ### Serving a Static Landing Page One of the really cool things you can do with WebApp is serve static HTML for a landing page where TTFB (time to first byte) is of utmost importance. The [Bundle Visualizer](https://docs.meteor.com/packages/bundle-visualizer.html) and [Dynamic Imports](https://docs.meteor.com/packages/dynamic-import.html) are great tools to help you minimize initial page load times. But sometimes you just need to skinny down your initial page load to bare metal. The good news is that WebApp makes this is really easy to do. Step one is to create a your static HTML file and place it in the _private_ folder at the root of your application. Here's a sample _index.html_ you might use to get started: ```