Simple organization that's easy to navigate and extend

Wee begins with a Sass stylesheet full of variables, a browser reset, a set of mixins and classes, and base styling. You also get example HTML5, an .htaccess, sample favicons, robots/humans.txt files, a robust JavaScript library, and a style guide template. Use it all or just parts, your choice


Introduced in IE11, the browserconfig file defines the icon configuration for Windows. By default the browser will look for the file in the root of the website.

<?xml version="1.0" encoding="utf-8"?>
            <square70x70logo src="/assets/img/icons/tile.png"/>
            <square150x150logo src="/assets/img/icons/tile.png"/>
            <square310x310logo src="/assets/img/icons/tile.png"/>
            <wide310x150logo src="/assets/img/icons/tile-wide.png"/>


Regardless if you’re running an xml-compatible web server the principles still apply. Avoid serving content from duplicate sources and present a consistent URL structure. Use this as a starting point.


The maintenance block serves as a quick mechanism to toggle a temporary redirect to a maintenance page. It also has an IP exclusion to ensure that internal traffic can still access the full site.

RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.
RewriteCond $1 !^(assets) [NC]
RewriteRule ^(.*)$ /maintenance.html [R=307,L]


A couple basic xml settings are made and the X-UA-Compatible header and encoding are set. If uncommented the two corresponding meta tags should be removed from the HTML head.

RewriteEngine On
Options +FollowSymLinks -Indexes -MultiViews

# Internet Explorer document mode
Header set X-UA-Compatible "IE=edge"# Disable iframe embedding
Header always append X-Frame-Options SAMEORIGIN

# Character set
AddDefaultCharset utf-8
AddCharset utf-8 .atom .css .geojson .js .json .jsonld .manifest .map .rss .xml

# HTTP Strict Transport Security
Header always set Strict-Transport-Security "max-age=7776000; includeSubDomains"

Security Headers

Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options SAMEORIGIN
# Header set X-XSS-Protection "1; mode=block"
# Header always set Strict-Transport-Security "max-age=7776000; includeSubDomains"

HTTP Access Control

CORS headers open up web servers for cross-domain access. This is particularly helpful when serving assets through a pull CDN zone.

# Cross-origin images
<FilesMatch "\.(bmp|gif|ico|jpe?g|png|svg|webp)$">
    SetEnvIf Origin ":" IS_CORS
    Header set Access-Control-Allow-Origin "*" env=IS_CORS

# Cross-origin web fonts
<FilesMatch "\.(eot|otf|ttf|woff2?)$">
    Header set Access-Control-Allow-Origin "*"

# Conditionally target static assets
<FilesMatch "\.(css|eot|gif|ico|jpe?g|otf|png|svg|ttf|webp|woff2?)$">
    SetEnv IS_STATIC true
    Header set Cache-control max-age=2592000
    Header unset X-UA-Compatible
    Header unset X-Frame-Options
    # Header unset X-XSS-Protection


It’s important to intercept common HTTP errors on the host level with custom pages.

ErrorDocument 404 /404.html


Add your project’s specific rules to this section.

# Custom redirects and rewrites


Without specific redirects most servers will allow multiple URLs to access the same endpoint. Funnel requests through redirect logic to ensure there is only one true canonical address.

# Force www
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteRule ^(.*)$$1 [R=301,L]

# Remove www (use either force or remove)
# RewriteCond %{HTTP_HOST} !^$ [NC]
# RewriteRule ^(.*)$$1 [R=301,L]

# Force SSL
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

# Remove multiple slashes
RewriteCond %{THE_REQUEST} //
RewriteRule ^(.*)$ /$1 [R=301,L]

# Remove index reference
RewriteCond %{REQUEST_URI} ^(.*/)index.html$ [NC]
RewriteRule . %1 [R=301,L]

# Remove extension
RewriteCond %{REQUEST_URI} ^GET\ (.*).html(.*)\ HTTP
RewriteRule (.*).html$ $1$2 [R=301]

# Rewrite extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule (.*) $1.html [L]


Of course you want robots to understand your site but what if humans take an interest? Use the humans.txt file to credit all of your tools and languages.


Website owners use the robots.txt file to give instructions about their site to web robots, specifically what resources should be excluded from indexing.


The web app manifest provides information about an application (such as its name, author, icon, and description) in a JSON text file. The manifest informs details for websites installed on the homescreen of a device, providing users with quicker access and a richer experience

    "name": "Wee",
    "short_name": "Wee",
    "start_url": ".",
    "display": "standalone",
    "background_color": "#fff",
    "description": "Blueprint for modern web development",
    "icons": [{
        "src": "assets/images/icons/tile-wide.png",
        "sizes": "720x378",
        "type": "image/png"
    }, {
        "src": "assets/images/icons/tile.png",
        "sizes": "480x480",
        "type": "image/png"
    }, {
        "src": "assets/images/icons/touch.png",
        "sizes": "360x360",
        "type": "image/png"