Welcome to Village CMS
Northern Village has over 20 years of experience creating websites. We wanted to create a Canadian CMS that is both easy to use and fully customizable.
Village CMS is that.
Village CMS is built so that the most common edits take seconds, not training. Whether you're adding a page, dropping in a content block, swapping a logo, or fixing a typo - everything lives in a focused admin section:
- Get started with your page by selecting one of the Templates (with copy, move, multi-language, and bulk edit for blogs and events),
- Organize your page using reusable Blocks (drag-to-reorder, selct background, width, spacing with the media library all in one place),
- Page and Block Customization is primarily done through Admin. Enhance with custom CSS or Liquid to make your site unique. Add new functionality with Phoenix/Elixir.
- Use the Site Settings for branding, navigation, layout pieces, social media links, language, SEO, and users for managing who can do what.
The result is a CMS where editors can pick it up and start contributing the same day, marketers can update content without waiting on a developer, and developers can extend it without fighting the system. The basics are obvious and the advanced features are one click away when you want them.
The interface is the same on day one as it is in year three —
no plugins to install, no themes to chase, no surprise upgrades that break your site.
Village CMS
Features
Build pages like LEGO. Village CMS lets you compose pages from ready-made pieces like heroes, text sections, columns, galleries, buttons, and paid downloads, without touching any code. You drag in what you need, fill in the content, and rearrange whenever you want. Need a new kind of section? A developer can add a new block type once, and from then on it's available to every website on the platform. Just like with toy blocks, the individual code blocks can be configured to create endless looks, feels, and functionality so your site is as unique as your work.
Consistency without effort. Every block follows the site's design automatically, so your pages stay on-brand and look polished even as different people contribute. Headers, fonts, colours, and spacing come from one shared theme, and every block respects it. When you update your colour palette or font choice in Settings, every page on the site picks it up instantly, no copy-pasting, no broken layouts. New editors can jump in and produce something professional on day one, and seasoned content teams can move fast while staying true to your brand.
Village CMS provides a number of different ways to display images and handle them. Images can be uploaded, selected from a Library, or downloaded from another website. Or add an image or a file to a rich text editor. From displaying as a hero image to dazzle your readers in the Call to Action block, to galleries and carousels using the Image Block, or inline in the rich text editor, there are many options throughout to showcase visual content.
Village CMS also has incorporated a file-size checker, and will reduce file sizes automatically for faster loading with sufficient image quality for the web.
A block is a playground of options for a content editor. Text, images, dropdowns, dates, file uploads and more can be changed within each area easily so anyone can hit the ground running with minimal training.
You can add new fields when a template needs them, and Village CMS automatically includes them in the editor. Some fields pull their options from your data:
- category dropdowns are populated from your category list,
- file pickers can browse your private media library,
- image fields let you upload, paste a URL, or pick from your media library.
Repeatable fields make it easy to manage lists like testimonials, gallery images, or buttons in a row. The result is a tailored editing experience.
When you have dozens or hundreds of blog posts or events, editing each one individually is a pain. The Bulk Edit view solves this with a spreadsheet-style table of every post or event under it. Each row is a post, each column is a field (name, date, visibility, categories,) plus any custom template fields you've defined.
From any blog or events listing page in admin, click "Bulk Edit" and you get a Edit any cell inline; changes save automatically as you go. Re-tag a backlog of imported posts to the right categories, hide a batch of stale events, reschedule dates across a season, or fill in metadata you missed all without opening each post one by one.
Every page and every block on a page has a simple show/hide option, so you can keep things in draft form right inside Village CMS without a separate "drafts" feature. Hide a page and visitors get a 404 but logged-in editors can still see it, so you can preview your work before turning it on. Hide a block and it disappears from that page for visitors while the editor still sees it (clearly marked as hidden) so it can be polished or seasonally re-enabled later.
Pages can also be left out of the sitemap individually, useful for things like thank you pages you don't want indexed. For blogs and events, each post has its own date, and listing pages can optionally hide scheduled posts until that date arrives which is a built-in, no fuss way to schedule announcements ahead of time.
Pages can be easily re-arranged within the website menu by drag and drop, copied (with all blocks and metadata), or duplicated. Blocks inside a page are similarly easily moved by drag and drop in block view, duplicated or moved to another page. Fields inside a block can be re-prioritized with arrows, so you can set up your site fast and make changes easily.
Village CMS automatically creates your main navigation from your page structure, which is exactly what search engines want to see, a clear hierarchy that mirrors the way your content is organized, helping with SEO and discoverability. When you want more control, building a custom menu is just as simple: pick pages from a list, add external links or a translation button, and drag to reorder. Sub-menus appear automatically for pages with children (except where you'd rather show them as plain links, like blog or events). Update your site structure once, and every menu that uses it stays in sync with no manual rewiring or broken links to chase down.
Categories let you group blog posts or events into named buckets like "News" or "Workshops". Blogs and events keep their own separate sets which you manage from each section's listing page, where a "Create category" button adds a new one. A single post or event can belong to multiple categories, and you tag them via dropdowns in the page editor. Each category gets its own public listing page (e.g. /blog/category/news), and categories also appear as filterable dropdowns inside certain blocks so you can show "posts from these categories" anywhere on the site.
Village CMS handles search-engine basics out of the box, so you can focus on content.
Each page has its own meta title and meta description, plus an Open Graph image for how it looks when shared on social media, and you can choose whether or not it appears in the sitemap. The site automatically generates a /sitemap.xml listing every published, visible page so search engines can crawl them, and a site-wide "noindex" toggle lets you hide a whole site from search engines while it's in development. Google Analytics and Google Tag Manager IDs can be added in Site Settings to drop tracking onto every page without editing templates. Behind the scenes, Village CMS builds a content preview from each page's blocks and maintains a Postgres full-text search index, so the built-in admin search and any on-site search features stay accurate as content changes. Defaults like a fallback Open Graph image and a default blog post image keep things looking sensible when individual pages don't override them.
Village CMS organizes different kinds of content through page templates. Every page uses a template that handles display, features and layout.
- Default is for ordinary content pages (anything you'd build out of blocks.)
- Blog turns a page into a listing of all blog posts, with options for layout, posts-per-page, summary length, and whether to hide future-dated posts. Each post under it uses the Blog Post template, which adds blog-specific fields like author, categories, and dates.
- Events and Events Post work the same way as blogs but the Events List has a different listing layout. Blog Category and Events Category templates content feeds the per-category listing pages (e.g. /blog/category/news), which is a great "what to read or do next" all purpose suggestion feature.
- Search is the public search results page.
- Language handles the translation feature.
- Redirect sends visitors to another URL.
- Submitted Data displays content sent in via the contributor form for moderators.
So instead of writing custom code per content type, you pick the template that matches what the page should do, fill in its fields, and Village CMS handles the rest.
Village CMS lets a single site run in multiple languages without maintaining separate sites. Your main language stays at the root of the site, and then you set up a "language page" at the top of each language section (one for Latvian, one for French, etc.), and any page underneath automatically inherits that language. UI text like buttons and headings comes from per-language template files (lang-en.liquid, lang-fr.liquid …), so adding a new language is just dropping in a new file. For content that needs translating, you copy and existing page to a different language section and it keeps all the files and images and links them together; a language switcher then lets visitors jump straight to the equivalent page in another language.
Bonus capability is that it is possible to change the user prompts by editing the lang-en.liquid template file.
Site Settings is the central control panel for everything that's true site-wide rather than per-page. From here you set the basics like name, address, email, social links, and time zone; pick the brand colors, fonts, logo, and favicon used across the whole site; turn major layout sections (navbar, footer, alert bar, top bar, page header, sidebar) on or off and tweak how each one looks and behaves; configure the copyright bar at the bottom of the page, including a land acknowledgement and "Powered by" credit; manage SEO bits like Google Analytics, Google Tag Manager, robots indexing, and the default Open Graph image; set the default language and the rules for whether new pages are visible or hidden by default; and configure features like visitor submissions and content categories. In short, Site Settings is the one place to dial in the look, feel, identity, and global behavior of a tenant's site without touching templates or individual pages.