# vweb - the V Web Server # A simple yet powerful web server with built-in routing, parameter handling, templating, and other features. ## Alpha level software ## Some features may not be complete, and there may still be bugs. However, it is still a very useful tool. The [gitly](https://gitly.org/) site is based on vweb. ## Features ## - **Very fast** performance of C on the web. - **Small binary** hello world website is <100 KB. - **Easy to deploy** just one binary file that also includes all templates. No need to install any dependencies. - **Templates are precompiled** all errors are visible at compilation time, not at runtime. There is no formal documentation yet - here is a simple [example](https://github.com/vlang/v/tree/master/examples/vweb/vweb_example.v) There's also the V forum, [vorum](https://github.com/vlang/vorum) `vorum.v` contains all GET and POST actions. ```v ignore pub fn (app mut App) index() { posts := app.find_all_posts() $vweb.html() } // TODO ['/post/:id/:title'] // TODO `fn (app App) post(id int)` pub fn (app App) post() { id := app.get_post_id() post := app.retrieve_post(id) or { app.redirect('/') return } comments := app.find_comments(id) show_form := true $vweb.html() } ``` `index.html` is an example of the V template language: ```html @for post in posts
@end ``` `$vweb.html()` compiles an HTML template into V during compilation, and embeds the resulting code into the current action. That means that the template automatically has access to that action's entire environment. ## Deploying vweb apps ## Everything, including HTML templates, is in one binary file. That's all you need to deploy. ## Getting Started ## To start with vweb, you have to import the module `vweb`. After the import, define a struct to hold vweb.Context (and any other variables your program will need). The web server can be started by calling `vweb.run