A practical guide to building a blazing-fast, SEO-optimized website using a modern, minimal, server-side rendered framework: Slick Server.
π§ The Problem: Why Isn't My Website Ranking on Google?
Itβs one of the most common issues developers and indie creators face:
"My site looks great. It works perfectly. But Iβm nowhere to be found on Google."
If that sounds familiar, the likely culprits are:
- Poor performance
- Client-side rendering only
- Unoptimized metadata & structure
To rank on Google in 2025, a website must be fast, crawlable, and cleanly structured. That means server-side rendering (SSR), semantic HTML, and lightning-fast load times.
Enter: Slick Server.
𧬠What is Slick Server?
Slick Server is a minimal, ultrafast framework built on top of Web Standards and running on Deno. It's designed for server-side rendering, with automatic asset optimization, and built-in SEO-first architecture.
Key Features
- β‘ SSR by default (great for SEO)
- π Metadata and
<head>
optimization - π§Ή Automatic minification of all assets (CSS, JS, TS)
- π§± Semantic project structure
- ποΈ Static file serving
- π‘ Optional SPA client with
@webtools/slick-client
π― Goal of this Tutorial
We'll build a website that:
- Loads in under 1 second
- Renders all content server-side
- Follows SEO best practices
- Is easy to maintain and extend
Ideal for freelancers, indie hackers, and developers who want performance without complexity.
π¦ Step 1 β Install Slick Server
First, create a new Deno project:
deno add jsr:@webtools/slick-server
Create the basic directory structure:
mkdir pages templates static
mkdir -p static/styles/app static/scripts/app static/assets
touch index.ts pages/index.tsx templates/app.tsx
π§ͺ Step 2 β Setup Your Main Server
// index.ts
import { Slick } from "@webtools/slick-server";
const slick = new Slick(import.meta.dirname!, {
env: {
API_URL: "https://api.example.com",
},
lang: "en",
port: 3000,
r404: "/",
client: true, // enables SPA helpers
});
await slick.start();
Run your server with:
deno run -A index.ts
π Step 3 β Create a Server-Rendered Homepage
// pages/index.tsx
import * as Slick from "@webtools/slick-server";
export default {
url: "/",
template: "app",
title: "Freelance Web Developer β High Performance Sites",
styles: ["/styles/app/index.css"],
scripts: ["/scripts/app/index.ts"],
head: (
<>
<title>Freelance Web Developer β SEO & Speed Expert</title>
<meta name="description" content="Building modern, SEO-optimized, high-performance websites with Deno and Slick Server." />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://example.com/" />
</>
),
body: (
<>
<h1>Welcome to My Portfolio</h1>
<p>I build fast, SEO-ready websites using modern technologies.</p>
</>
),
onpost: null,
onrequest: null,
} satisfies Slick.Page;
This page will be fully rendered on the server before it reaches the browser β making it immediately readable by search engines.
π§± Step 4 β Define a Global Template
// templates/app.tsx
import * as Slick from "@webtools/slick-server";
export default {
name: "app",
favicon: "/favicon.ico",
styles: ["/styles/reset.css", "/styles/app.css"],
scripts: ["/scripts/app.ts"],
head: <meta name="viewport" content="width=device-width, initial-scale=1.0" />,
body: (
<>
<header>
<h2>My Site</h2>
</header>
<main>{/* Page content is injected here */}</main>
<footer>Β© 2025 All rights reserved</footer>
</>
),
onrequest: null,
} satisfies Slick.Template;
This template wraps all your pages with shared layout, styles, and scripts.
π§ Step 5 β Add SEO Essentials: Sitemap & robots.txt
Create these files inside /static/
so they're publicly accessible.
# static/robots.txt
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
<!-- static/sitemap.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2025-07-12</lastmod>
<priority>1.0</priority>
</url>
</urlset>
Googlebot will find and index your site faster and more accurately.
π§ͺ Step 6 β Run SEO Audit with Lighthouse
Head over to Google PageSpeed Insights or run a Lighthouse audit.
With Slick Server, you should easily score:
- β Performance: 100
- β SEO: 100
- β Accessibility: 100
- β Best Practices: 100
Thatβs the power of SSR + optimized structure + zero config minification.
π‘ Bonus: Dynamic Metadata with onrequest
If you're building a blog or dynamic site, you can update metadata dynamically at request time:
onrequest: async (req) => {
const post = await fetch("https://api.example.com/post/123").then(res => res.json());
req.data.title = post.title;
}
This ensures every page has SEO-ready titles, even with dynamic content.
β Summary
Slick Server helps you check all the SEO boxes out of the box:
- β Fast initial load time
- β Server-rendered content
- β Proper meta tags and structure
- β Clean URLs and sitemap
- β Simple setup with modern standards
Whether you're a freelancer, solo dev, or working on a side project, Slick Server gives you the SEO boost you need without the bloat.
π Resources
π Got Questions?
Feel free to leave a comment or fork the example on GitHub to start experimenting.
Top comments (0)