Documentation v1.0

Vellora Template Documentation

A complete guide to installing, customizing, and extending the Vellora Creative Blog & Magazine Website Template. Everything you need to make this template your own.

16 Pages Public + Admin
HTML5 / CSS3 / JS Vanilla stack
Fully Responsive Mobile to desktop
August 29, 2026 Last updated

Introduction

Thank you for choosing Vellora. This documentation will guide you through every aspect of the template, from initial setup to advanced customization.

Vellora is a handcrafted, editorial-style blog and magazine website template designed for writers, publishers, and content creators who value beautiful typography and thoughtful design. Built with clean HTML5, modern CSS3, and vanilla JavaScript, it offers a complete content management experience with both public-facing pages and a fully functional admin panel.

Unlike generic blog templates, Vellora embraces an editorial aesthetic inspired by premium magazines like Monocle, Cereal, and Kinfolk. Every detail, from the warm cream background to the elegant serif headings, has been carefully considered to create a reading experience that feels intentional and human.

Who is this template for?

Vellora is ideal for personal blogs, online magazines, content publishers, writers, photographers, and anyone who values editorial design. It works beautifully for lifestyle, travel, design, food, and culture publications.

Key Features

A carefully curated set of features designed to deliver a premium editorial experience.

Editorial Typography

Fraunces serif for headings paired with Inter sans-serif for body text. Carefully tuned line-height and letter-spacing.

Warm Color Palette

Soft cream backgrounds with deep burgundy accents. No harsh whites or neon colors.

Fully Responsive

Optimized for mobile, tablet, and desktop with thoughtful breakpoints.

Admin Dashboard

Complete admin panel with posts, media, comments, categories, and settings management.

Rich Text Editor

Quill.js integration for beautiful WYSIWYG content creation.

Masonry Layout

Dynamic grid layouts powered by Masonry.js for visual variety.

Subtle Animations

AOS-powered scroll animations that enhance without distracting.

Search Overlay

Full-screen search experience with keyboard shortcuts.

Print-Ready

Optimized print styles for beautiful article printing.

Accessible

Semantic HTML, ARIA labels, and keyboard navigation throughout.

Clean Code

Well-commented, organized code following modern best practices.

Performance

Lightweight vanilla JS with CDN-loaded libraries for fast load times.

File Structure

A clear, organized structure that makes navigation and customization straightforward.

The Vellora template is organized into a flat file structure with clear naming conventions. All public pages sit at the root level alongside their shared CSS and JavaScript files, while admin pages are prefixed with admin- for easy identification.

vellora/ Root directory
index.html Homepage
blog.html Blog listing
single-post.html Single article
category.html Category archive
author.html Author profile
about.html About page
contact.html Contact page
search-results.html Search results
404.html Error page
admin-dashboard.html Admin dashboard
admin-create-post.html Post editor
admin-posts.html Posts management
admin-media.html Media library
admin-comments.html Comments moderation
admin-categories.html Categories manager
admin-settings.html Site settings
style.css Public styles
admin-style.css Admin styles
script.js Public interactions
admin-script.js Admin interactions
documentation.html This file

Tip: Keep the flat structure

The template uses a flat file structure for simplicity. All HTML files reference each other directly (e.g., href="blog.html"). If you reorganize into subdirectories, you will need to update all internal links.

Installation

Get Vellora up and running in just a few simple steps.

Step-by-Step Setup

  1. Download and extract the template files to your desired location.
  2. Open index.html in your browser to preview the template.
  3. Replace placeholder content with your own articles, images, and information.
  4. Upload to your web server or hosting platform (Netlify, Vercel, GitHub Pages, etc.).
  5. Customize the theme by editing CSS variables in style.css.

Quick Start with Local Server

For the best development experience, run a local server. Here are a few options:

Terminal
# Using Python 3
python -m http.server 8000

# Using Node.js (http-server)
npx http-server

# Using PHP
php -S localhost:8000

Then open http://localhost:8000 in your browser.

Important: Use a local server

Some features (like the search overlay, mobile drawer, and external CDN resources) may not work correctly when opening HTML files directly via file://. Always use a local development server for testing.

Dependencies

External libraries loaded via CDN for optimal performance.

Vellora uses a carefully selected set of external libraries, all loaded from reliable CDNs. No build step or package manager is required.

Library Version Purpose Used In
Bootstrap 5.3.2 Responsive grid system All pages
FontAwesome 6.5.1 Icon library All pages
AOS 2.3.1 Scroll animations Public pages
Masonry 4.2.2 Dynamic grid layouts Blog pages
Quill.js 1.3.7 Rich text editor Admin create post
Google Fonts - Fraunces + Inter fonts All pages

CDN Links Reference

All CDN links are included in each HTML file's <head> section. Here's the complete list for reference:

HTML
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300..700;1,9..144,300..700&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">

<!-- Bootstrap 5.3 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- FontAwesome 6 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">

<!-- AOS Animations -->
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">

<!-- Quill.js (Admin only) -->
<link href="https://cdn.quilljs.com/1.3.7/quill.snow.css" rel="stylesheet">
<script src="https://cdn.quilljs.com/1.3.7/quill.min.js"></script>

<!-- Masonry (Blog pages) -->
<script src="https://unpkg.com/masonry-layout@4.2.2/dist/masonry.pkgd.min.js"></script>

Pages Overview

A comprehensive breakdown of all 16 pages included in the template.

Public Pages

These are the visitor-facing pages of your magazine. All public pages share the same navigation, footer, search overlay, and mobile drawer.

Homepage
index.html

Magazine-style layout with featured hero article, editor's picks, masonry latest stories, trending categories, newsletter, and Instagram grid.

Blog Listing
blog.html

Full blog archive with category filters, sort options, grid/list view toggle, sidebar with popular posts and tags, and pagination.

Single Post
single-post.html

Beautiful article layout with sticky table of contents, drop cap first letter, author bio, tags, social sharing, related articles, and comments.

Category Archive
category.html

Category header with description and stats, filtered blog grid, and sidebar with other categories and popular posts.

Author Profile
author.html

Author header with avatar, bio, social links, and stats. Grid of author's articles with sidebar showing other authors.

About Page
about.html

Hero section, mission statement with values, team members grid, timeline of milestones, and statistics section.

Contact Page
contact.html

Two-column layout with contact form and info cards. Includes map placeholder and FAQ accordion section.

Search Results
search-results.html

Pre-filled search bar, results count, filtered results grid, related searches, and sidebar filters.

404 Error Page
404.html

Creative 404 with large typography, search bar, return home button, and popular articles suggestions.

Admin Pages

The admin panel provides a complete content management experience. All admin pages share the same sidebar navigation and top navbar.

Dashboard
admin-dashboard.html

Overview with stats cards, quick actions, recent posts table, and recent comments list.

Create Post
admin-create-post.html

Full post editor with title, Quill rich text editor, featured image upload, and sidebar with publish settings, categories, tags, and SEO.

Manage Posts
admin-posts.html

Posts table with filters, bulk actions, status badges, and pagination. Supports search and sort.

Media Library
admin-media.html

Grid view of uploaded media with upload zone, type filters, search, and details panel.

Comments
admin-comments.html

Comments moderation with status filters, approve/reply/edit actions, and spam detection.

Categories
admin-categories.html

Categories table with add new form, parent category selection, and edit/delete actions.

Settings
admin-settings.html

Tabbed interface with General, SEO, Social, and Appearance settings including color pickers and font selectors.

Customization

Make Vellora your own by customizing colors, typography, and layout.

Color Palette

Vellora uses a warm, editorial color palette designed to feel inviting without being distracting. All colors are defined as CSS variables at the top of style.css for easy customization.

Background
#FDFBF7
Warm Background
#FAF7F2
Alt Background
#F0EBE1
Primary Text
#1A1A1A
Muted Text
#6B6560
Accent (Burgundy)
#8B2635
Border
#E5E1D8
White
#FFFFFF

Alternative accent colors

Try these sophisticated alternatives to burgundy:

  • Forest Green: #2D4A3E (hover: #1F3529)
  • Deep Navy: #1E3A5F (hover: #142842)
  • Warm Terracotta: #B85C38 (hover: #8F4528)
  • Muted Plum: #6B4C6B (hover: #4F384F)

Typography

Vellora uses a carefully chosen font pairing that balances elegance with readability. The serif font Fraunces is used for all headings and editorial elements, while Inter handles body text and UI elements.

Element Font Weight Size
H1 Fraunces 500 clamp(2.25rem, 5vw, 3.75rem)
H2 Fraunces 500 clamp(1.875rem, 4vw, 2.75rem)
H3 Fraunces 500 clamp(1.5rem, 3vw, 2rem)
Body text Inter 400 1rem (16px)
Article body Fraunces 400 1.1875rem (19px)
Small text Inter 400 0.875rem (14px)

Changing Fonts

To change the fonts, update both the Google Fonts link in your HTML and the CSS variables:

HTML
<!-- Replace with your chosen fonts -->
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600&family=Source+Sans+Pro:wght@300;400;500;600&display=swap" rel="stylesheet">
CSS
:root {
  --font-serif: 'Playfair Display', Georgia, serif;
  --font-sans: 'Source Sans Pro', -apple-system, sans-serif;
}

CSS Variables Reference

All theme values are defined as CSS custom properties in style.css. Edit these to change the entire look of the site:

CSS
:root {
  /* Colors */
  --color-bg: #FDFBF7;
  --color-bg-alt: #F0EBE1;
  --color-bg-warm: #FAF7F2;
  --color-text: #1A1A1A;
  --color-text-muted: #6B6560;
  --color-text-light: #8A847D;
  --color-accent: #8B2635;
  --color-accent-hover: #6F1E2A;
  --color-border: #E5E1D8;
  --color-white: #FFFFFF;

  /* Typography */
  --font-serif: 'Fraunces', 'Playfair Display', Georgia, serif;
  --font-sans: 'Inter', 'Source Sans Pro', -apple-system, sans-serif;

  /* Spacing */
  --space-xs: 0.5rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2.5rem;
  --space-xl: 4rem;
  --space-xxl: 6rem;

  /* Layout */
  --container-max: 1280px;
  --container-narrow: 780px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;

  /* Transitions */
  --transition-fast: 0.2s ease;
  --transition-base: 0.3s ease;
  --transition-slow: 0.5s ease;
}
Variable Purpose Default
--color-bg Main page background #FDFBF7
--color-bg-alt Alternate sections (newsletter, footer widgets) #F0EBE1
--color-bg-warm Warm sections (latest stories, author bio) #FAF7F2
--color-text Primary text color #1A1A1A
--color-text-muted Secondary text (excerpts, meta) #6B6560
--color-accent Primary accent (links, buttons, tags) #8B2635
--color-border Subtle borders and dividers #E5E1D8
--container-max Maximum content width 1280px
--radius-md Default border radius 8px

Content Guide

How to replace placeholder content with your own articles, images, and information.

Throughout the template, you will find HTML comments marking content that should be customized. Look for comments like:

HTML
<!-- UPDATE WITH YOUR CONTENT -->
<!-- UPDATE WITH YOUR AUTHOR IMAGE -->
<!-- UPDATE WITH YOUR SOCIAL LINKS -->
<!-- UPDATE WITH YOUR ADDRESS -->
<!-- UPDATE WITH YOUR EMAIL -->
<!-- UPDATE WITH YOUR PHONE -->
<!-- UPDATE WITH YOUR INSTAGRAM HANDLE -->
<!-- UPDATE WITH YOUR TEAM -->
<!-- UPDATE WITH YOUR COPYRIGHT -->
<!-- UPDATE WITH YOUR GOOGLE MAPS EMBED -->

Replacing Images

The template uses Unsplash for placeholder images. Replace these with your own images by updating the src attribute:

HTML
<!-- Before (placeholder) -->
<img src="https://images.unsplash.com/photo-1519681393784-d120267933ba?w=1200&h=800&fit=crop" alt="Featured article">

<!-- After (your image) -->
<img src="images/my-article.jpg" alt="Featured article">

Image optimization tips

  • Use WebP format when possible for smaller file sizes
  • Resize images to match their display dimensions
  • Use descriptive alt text for accessibility
  • Consider lazy loading for below-the-fold images

Updating Author Information

Author information appears in multiple places. Update these consistently across all pages:

  • Top bar and navbar: Update the admin link if needed
  • Article bylines: Update author name, avatar, and bio in each article
  • Author pages: Update author.html with full bio and social links
  • Team section: Update team members in about.html
  • Admin sidebar: Update admin avatar and name in all admin pages

Adding New Articles

To add a new article, copy an existing blog card structure and update the content:

HTML
<article class="blog-card" data-aos="fade-up">
  <div class="blog-card-image-wrap">
    <img src="images/your-image.jpg" alt="Article" class="blog-card-image">
    <span class="blog-card-category">Your Category</span>
  </div>
  <div class="blog-card-content">
    <h3 class="blog-card-title">
      <a href="single-post.html">Your Article Title</a>
    </h3>
    <p class="blog-card-excerpt">Brief excerpt of your article...</p>
    <div class="blog-card-meta">
      <div class="blog-card-author">
        <img src="images/author.jpg" alt="Author">
        <strong>Author Name</strong>
      </div>
      <span class="blog-card-meta-dot"></span>
      <span>Aug 29, 2026</span>
      <span class="blog-card-meta-dot"></span>
      <span>8 min read</span>
    </div>
  </div>
</article>

JavaScript Features

A complete reference of all JavaScript functionality in the template.

Public JavaScript (script.js)

The public JavaScript file handles all interactive features on visitor-facing pages. All code is wrapped in an IIFE to avoid polluting the global scope.

Function Purpose Trigger
initStickyNav() Adds shadow to navbar on scroll Scroll event
initMobileMenu() Opens/closes mobile drawer menu Click, Escape key
initSearchOverlay() Full-screen search overlay Click, Escape key
initAOS() Initializes scroll animations Page load
initMasonry() Sets up masonry grid layout Page load, image load
initLoadMore() Loads more articles on button click Click
initBackToTop() Shows/hides back-to-top button Scroll, click
initFAQ() FAQ accordion toggle Click
initLightbox() Image lightbox for article images Click, Escape key
initTOCScroll() Highlights active TOC item on scroll Scroll
initCommentForm() Comment form validation Submit
initNewsletterForm() Newsletter form validation Submit
initContactForm() Contact form validation Submit
initShareButtons() Social share functionality Click
initDynamicYear() Updates copyright year automatically Page load
initViewToggle() Grid/list view toggle on blog page Click

Admin JavaScript (admin-script.js)

The admin JavaScript handles all interactive features in the admin panel:

Function Purpose
initAdminSidebar() Toggles admin sidebar on mobile
initAdminDropdowns() Handles notification and profile dropdowns
initAdminTabs() Tab switching in settings page
initQuillEditor() Initializes Quill rich text editor
initImageUpload() Handles featured image upload with preview
initTagsInput() Tags input with autocomplete suggestions
initMediaLibrary() Media selection and filtering
initBulkActions() Bulk selection and actions on posts
showAdminMessage() Displays toast notifications

Keyboard Shortcuts

Vellora supports keyboard navigation for better accessibility:

  • Escape - Close search overlay, mobile drawer, or lightbox
  • Tab - Navigate through focusable elements
  • Enter / , - Add tag in tags input
  • Backspace - Remove last tag when input is empty

Admin Panel

A complete content management system built with the same editorial aesthetic.

The admin panel is fully separated from the public site with its own CSS (admin-style.css) and JavaScript (admin-script.js) files. This keeps the public site lightweight while providing powerful management features.

Accessing the Admin Panel

The admin panel is accessible via the "Admin" link in the top bar of any public page, or directly at admin-dashboard.html.

Security notice

This is a front-end template only. The admin panel has no real authentication or backend. For production use, you must:

  • Add server-side authentication
  • Connect to a real database
  • Implement proper file upload handling
  • Sanitize all user inputs
  • Use HTTPS in production

Admin Panel Structure

All admin pages share the same layout structure:

  • Sidebar: Fixed left navigation with logo, menu sections, and user info
  • Top navbar: Search bar, notifications dropdown, and user profile dropdown
  • Main content: Page-specific content with header and cards

Rich Text Editor

The post creation page uses Quill.js for rich text editing. The editor is initialized in admin-script.js with a custom toolbar configuration:

JavaScript
const quill = new Quill('#quill-editor', {
  theme: 'snow',
  placeholder: 'Start writing your story...',
  modules: {
    toolbar: [
      [{ 'header': [1, 2, 3, false] }],
      ['bold', 'italic', 'underline', 'strike'],
      [{ 'color': [] }, { 'background': [] }],
      [{ 'list': 'ordered' }, { 'list': 'bullet' }],
      [{ 'align': [] }],
      ['blockquote', 'code-block'],
      ['link', 'image', 'video'],
      ['clean']
    ]
  }
});

Admin Customization

The admin panel has its own set of CSS variables in admin-style.css. You can customize the admin theme independently:

CSS
:root {
  --admin-bg: #FDFBF7;
  --admin-bg-sidebar: #1A1A1A;
  --admin-accent: #8B2635;
  --admin-sidebar-width: 260px;
  --admin-navbar-height: 64px;
}

Responsive Design

Thoughtfully designed breakpoints for every screen size.

Vellora is fully responsive with carefully chosen breakpoints that maintain the editorial feel across all devices. The template uses a mobile-first approach with progressive enhancement.

Breakpoint Max Width Target Devices Key Changes
1200px Large desktop Desktops & laptops Full layout, 3-column grids
992px Tablet landscape iPad, small laptops Mobile menu, 2-column grids, stacked sidebar
768px Tablet portrait iPad portrait Single column layouts, simplified navigation
480px Mobile Smartphones Compact spacing, simplified hero, 2-column Instagram

Mobile-Specific Features

  • Slide-in drawer menu with backdrop overlay
  • Touch-optimized category scroll with snap points
  • Collapsible admin sidebar with backdrop
  • Responsive typography using clamp() for fluid sizing
  • Stacked layouts for forms and grids on small screens

Testing Responsiveness

Test your site on multiple devices using browser developer tools:

  • Chrome DevTools: Toggle device toolbar (Ctrl+Shift+M)
  • Firefox: Responsive Design Mode (Ctrl+Shift+M)
  • Safari: Responsive Design Mode (Cmd+Option+R)
  • BrowserStack or LambdaTest for real device testing

Accessibility

Built with accessibility in mind for an inclusive reading experience.

Vellora follows WCAG 2.1 guidelines to ensure the template is usable by everyone. Key accessibility features include:

Semantic HTML

Proper use of header, nav, main, article, section, and footer elements.

Keyboard Navigation

All interactive elements are accessible via keyboard with visible focus states.

Color Contrast

All text meets WCAG AA contrast requirements (4.5:1 minimum).

Alt Text

All images include descriptive alt attributes for screen readers.

ARIA Labels

Buttons and icons include aria-label attributes for clarity.

Fluid Typography

Text scales smoothly with viewport size using clamp() function.

Accessibility testing tools

  • Lighthouse: Built into Chrome DevTools
  • axe DevTools: Browser extension for detailed audits
  • WAVE: Web accessibility evaluation tool
  • Screen readers: Test with NVDA (Windows), VoiceOver (Mac), or TalkBack (Android)

Browser Support

Vellora works in all modern browsers with graceful degradation for older ones.

Browser Minimum Version Status
Chrome 90+ ✓ Fully supported
Firefox 88+ ✓ Fully supported
Safari 14+ ✓ Fully supported
Edge 90+ ✓ Fully supported
Opera 76+ ✓ Fully supported
iOS Safari 14+ ✓ Fully supported
Chrome for Android 90+ ✓ Fully supported
Internet Explorer - ✗ Not supported

CSS Features Used

Vellora uses modern CSS features that are widely supported:

  • CSS Grid - For layout structures
  • Flexbox - For component layouts
  • CSS Variables - For theming
  • clamp() - For fluid typography
  • aspect-ratio - For image containers
  • CSS transitions - For smooth interactions

Troubleshooting

Common issues and their solutions.

Styles Not Loading

Symptom: Page appears unstyled or with default browser styles.

Solution:

  • Check that style.css is in the same directory as your HTML files
  • Verify the path in the HTML: <link rel="stylesheet" href="style.css">
  • Clear browser cache (Ctrl+Shift+R or Cmd+Shift+R)
  • Check browser console for 404 errors

Masonry Layout Not Working

Symptom: Blog grid items stack vertically instead of in masonry layout.

Solution:

  • Ensure Masonry.js CDN is loaded before script.js
  • Check browser console for JavaScript errors
  • Verify images have loaded (Masonry needs image dimensions)
  • Make sure the grid has the class masonry-grid

Fonts Not Displaying

Symptom: Text appears in default system fonts instead of Fraunces/Inter.

Solution:

  • Check internet connection (Google Fonts requires online access)
  • Verify the Google Fonts link is in the HTML <head>
  • Check browser console for font loading errors
  • Try a different font from Google Fonts if needed

Images Not Showing

Symptom: Broken image icons appear instead of images.

Solution:

  • Verify image paths are correct (relative or absolute)
  • Check that image files exist in the specified location
  • Ensure image file names match exactly (case-sensitive on some servers)
  • Check file permissions on your server

Mobile Menu Not Opening

Symptom: Hamburger menu button does nothing when clicked.

Solution:

  • Check browser console for JavaScript errors
  • Verify script.js is loaded at the end of the body
  • Ensure the mobile drawer HTML structure is intact
  • Check that the hamburger button has the class mobile-menu-toggle

Quill Editor Not Working

Symptom: Rich text editor doesn't appear on create post page.

Solution:

  • Verify both Quill CSS and JS are loaded in the correct order
  • Check that the editor container has id="quill-editor"
  • Ensure admin-script.js is loaded after Quill.js
  • Check browser console for initialization errors

Still having issues?

If you cannot resolve an issue, try these steps:

  1. Open browser developer console (F12) and check for errors
  2. Validate your HTML at validator.w3.org
  3. Test in a different browser
  4. Clear browser cache and cookies
  5. Check file encoding (should be UTF-8)

Credits & Support

Acknowledgments and resources for further help.

Third-Party Resources

Vellora makes use of the following excellent open-source resources:

  • Bootstrap 5.3 - Responsive grid system by the Bootstrap team
  • FontAwesome 6 - Icon library by Fonticons, Inc.
  • AOS - Animate On Scroll library by Michał Sajnok
  • Masonry - Cascading grid layout library by David DeSandro
  • Quill.js - Rich text editor by Slab
  • Google Fonts - Fraunces by Florian Karsten, Inter by Rasmus Andersson
  • Unsplash - Placeholder images from the Unsplash community
  • Pravatar - Placeholder avatars from pravatar.cc

Design Inspiration

The editorial aesthetic of Vellora is inspired by premium publications including:

  • Monocle - Global affairs, culture, and design
  • Cereal - Travel and style magazine
  • Kinfolk - Slow living and intentional design
  • Medium - Thoughtful long-form writing
  • Substack - Independent writers and newsletters

Getting Help

If you need assistance with the template, here are some helpful resources:

Documentation

You are reading it! Refer back to specific sections as needed.

Stack Overflow

Search for specific HTML, CSS, or JavaScript questions.

MDN Web Docs

Comprehensive reference for web technologies.

Community Forums

Connect with other developers using similar tools.

License

This template is provided for your use in personal and commercial projects. Please respect the licenses of all third-party libraries and resources used.

Thank you for choosing Vellora

We hope this template helps you create a beautiful, thoughtful publication. Happy writing!