Directories
Ocam expects your site to have the following top level directories.
- Includes
- Layout
- Site
- Html
- Code
- Templates
Includes
The Includes directory contains any page fragments that will be
reused from other pages. They are similar to the ASP.NET MVC concept of
partials. To reference an include, use the @Include() helper.
Layouts
The Layouts directory contains any layout templates that will be referenced
by Markdown or Razor files. A Layout is much like the MVC concept of layout.
It typically contains the structure of an HTML page. The only requirement
is that a call to @RenderBody() be present somewhere on the page. This method
causes the contents of the referencing page to be emmited at that location.
Site
This directory contains the structure and content of your static site.
It usually contains an index.md, index.cshtml, or index.html,
at a minimum. Any files that are not Razor or Markdown will be copied
to the Html directory verbatim.
Html
This file will be created if it's not already present.
During processing, the Site directory is transformed to the Html
directory. The directory will be created if it's not present. Any static
files, such as JavaScript, CSS, or images will be copied over directly.
To take your site live, all you have to do is upload the Html directory
to a Web server
Code
The Code directory is used for plugins.
It is still an experimental feature, so it won't be covered here in detail.
The idea behind the code directory is that generic C# code can be added here and referenced by layouts and other templates at build time.
Any C# files found in the Code directory will be compiled into an assemblies and loaded into Ocam at runtime.
Templates
Any non layout or include templates can be put into the Templates directory.
The current categories and tags generator will make use of Category.cshtml and
Tag.cshtml if it finds them in this directory.

