Yapi's 11ty starterpack
Table of Contents

Introduction, Getting started, Editing, Common pitfalls, Tools I use, OC-specific galleries, Webhosts & domain registrars, Tips & Advice, Questions.

March 28, 2026: Version 2 is available. See the list of changes.

Introduction

Screenshot of a split screen setup. One half the code editor, the other half a preview.

This is to provide artists (or anyone whose needs overlap) a pre-packaged art gallery, with pages for OCs (and their own individual galleries) similar to my own website.

Being able to see a folder setup for reference, is one of the things that would've helped me back when I was getting started with 11ty/Eleventy.

Check out the demo.

"What's 11ty?"

11ty is a Static Site Generator, SSG for short. You'll edit your website via markdown (and minimal HTML) both of which I include cheatsheets for.

I've included layouts. You can customize the CSS and HTML of those, or you can use any other template if you have the permission to.

"I'm a noob and I'm scared..."

*puts my paw on your shoulder* I know... It's okay... You're on unknown territory, and that can be overwhelming. But you are capable.

Take breaks if you feel hopeless. Return the next day with more energy. You'll have processed the things you learned, and you'll find yourself chipping away at the problem. Celebrate your victories, and if you think there's none; simply by trying there's one. Get yourself a rubberducky. Ask me for help.

Don't listen to nerds who say "You literally just florp your dingus and sudo to dookie.Nerd gibberish. Don't worry about it. It's so easy." Cuz nothing kills the mood faster...

Maybe you'll be able to get this to work easy within a day. But it's okay if not. Again, it's new, and as artists we know what it's like to learn a new skill.

It's fine if this way of learning isn't what you prefer, but you are capable. Don't let that little brain goblin tell you otherwise.

Getting started

You can also still download Version 1, but it's kinda shit.
  • Extract the .zip file wherever you prefer. I put mine in Documents. The folder contains files and several more folders, as listed below.
  • Install 11ty in this folder. I recommend PetraPixel's tutorial for this.

Your support

Meowth.Give coin?!

Consider tipping Kalechips and PetraPixel if you got some spare coin.

As for me, uhhh, donate to Wikipedia cuz without it I'll go feral.

If the starterpack was useful to you, let people know. Maybe it could help them too.

Folders

  1. Markdown folder: Where you'll edit your pages; the welcome page, gallery entries, blog posts, your "about me" page, etc.
  2. _data folder:
    • .json files can be used to store information which your pages can then output for you quickly in a list or as a shortcut.
      • e.json is the setup I use for emoji shortcuts. Visitors on my website will see HTML in place of emojis if they inspect my code, but I use a shortcode as I'm editing my pages. You can add more by copypasting the lines. Remember commas after each new emoji, except the very last on the list.
      • navigation.json is where you add or remove which pages you want to be accessible from the menu/navigation. This is seperate from the sitemap (edited through sitemap.md) page, which is intended to contain everything, meanwhile the navigation can be limited to the most important links.
  3. _includes folder:
    • All your .md files in the Markdown folder has layout: at the top. You can change that, either per page, or (for example in VSCode) by going to edit > replace in files, then "find" = layout: default-main.njk and "replace with" = layout: simple-main.njk
      • Since using "replace all" affects all the files, be specific. If you just "find" = default and "replace with" = simple it's also going to mess with any regular text you've written.
        • Keep spaces in mind. If you "find" = cool and "replace with" = super , (There's a space at the end!) it's no longer "wow thats cool man" it's "wow thats superman". Yeah I'm speaking from experience...
  4. _site folder: This is the "output" that 11ty generates for you. It's the files that'll make up your entire website once they're online.
  5. IGNORE folder: These files are ignored by 11ty. They won't be processed for the _site folder; they're not intended to be uploaded. Storage, reference, whatever else.
  6. img folder is where you'll be sorting your image files. js folder is for javascript. assets is for any other files, like fonts, audio, what have you.
  7. css folder already has some files, such as default.css, which is to style the default layout. You can change the colors for both dark mode and light mode here. You can also add backgrounds, borders, or style the whole thing all over though it takes know-how.
  8. "root" folder: This refers to the folder all of the above are stored in. So the folder you extracted after downloading the starterpack.
    • The first 2 lines in the robots.txt file is set to disallow all bots (indicated by *) from root (indicated by /) and up, meaning your entire site. By "all" bots, it means both search engines and AI scrapers. Even then, some won't respect the robots.txt file.
      • Beyond line 3, it's all AI. If you have the first 2 lines remain as they are, the rest are rebundant, but I kept these in case you want to allow search engines to index your website, but disallow AI scrapers.
    • You can put a favicon.ico in root. If your layout is set to include a favicon (The default one is), it'll show up. You can use some PNG-to-ICO converter, like this one.

Editing

Adding to the gallery

Markdown

  • In the Markdown folder, make a new .md file. You can sort the Markdown folder however you want.
Personally, I sort by section (gallery) and year. I've already included some examples.
  • Copy-paste the content from an older gallery entry, and fill out the info (title, file extension, tags, permalink, date) as shown in the image below.
Screenshot A (Sorry, I don't know how to do alt text for this...)

Image files

  • Prepare your images. You'll need 2 per gallery entry; 1 for the full view image, and 1 for the thumbnail.
  • Gallery images go in /img/gallery which then splits into folders per year. Drawings from 2025 would be in /img/gallery/2025, and corresponding thumbnails would be in /img/gallery/2025/thumb
  • Both images should have the same name, and be the same as the "title" you gave it except slugified. Basically, all lowercase, spaces and special characters are replaced with -, etc. ... If that sounds wack, copy the "title" which you entered on line 2 (e.g. in the example image, this would be man shell sea sand) and paste the text in (for example) this slugify converter thinger. It'll output man-shell-sea-sand, which means our images would be named man-shell-sea-sand.png and yeah, there you have it.

slugify

But why? If it just replaces spaces with dashes, what's it good for?
you, a noob

In the above example, it seems repundant, yeah.

But say you made a drawing, and you wanted to title it He/him Lesbians Are Cool!!, the issue you'd run into (without slugify) would be that you can't add slashes (or exclamation points) in an image file name. But with slugify, 11ty will look for a file named he-him-lesbians-are-cool.png. Win!!

Tags

The wonders of "tags" isn't shown here, but they're what tells 11ty to add the page to the a collection named gallery (which is the main gallery) and a collection named ocSteellion (which is OC-specific). More on OC-specific here.

Updating the "cool sites" page

Screenshot B

In your _data folder you have a .json file for "cool sites". Like with gallery.md, you generally don't need to edit cool sites.md to add more.

Instead, you go to _data/coolsites.json...

Screenshot C

...and there's then a list of different cool sites. All of which, by default, are Wikipedia.

Edit them, make more, add more fields, whatever you want. For example, you could add a line called "description":"" and then write "description":"Learned about the dancing plague of 1518. Very interesting. Thank you Wikipedia. 10/10."

Then, add {{feature.description}} in my links.md, somewhere between line 9 and line 13. Then, it'll also output descriptions you've made for all sites.

navigation

The same goes for navigation.json, where you can add/remove categories and subcategories from the navigation in the left sidebar. You can add as many categories as you want, but the layout holds max 7 subcategories by default.

In one of the cheatsheets, I've included a snippet you can copypaste, which generates your navigation. If you know some HTML/CSS, you could implement that into a new layout.

Common pitfalls

Which means pitfalls I've personally fallen in several times...

Uppercase/lowercase characters

This was fixed in Version 2, so I've collapsed this section.

Only relevant in Version 1

This has messed with my gallery sometimes. Keep your images named the same as you want their title in the gallery to appear. You can make it so that the two can be seperate, but it's just another field to fill out when posting your art. (Edit: Would you look at that! A few hours later, and I realize I made an uppercase/lowercase error, LOL. Come, brother, let us troubleshoot together.)

Special characters are also a no-go, as far as I know. Even + or / messes with the setup I have.

Permalink already in use

If you (after copypasting to make a new page) forget to change the permalink:, it might mess with the 11ty preview, since several .md files are trying to write to the same permalink: ! If this happens, stop 11ty, adjust the new page's permalink, save the file, then run 11ty again.

And slashes... Oh my god, slashes. The way I've set up permalink: the value be for example home/ or home.html.

  • home/ becomes home/index.html
  • home.html becomes... home.html
  • As far as I know, home or /home doesn't work in my setup.

Images not showing up

If you're having trouble with images not showing up as expected, right-click > open image in new tab. Then you can see where 11ty is trying to search for the file. Compare it to figure out where it went wrong.

A lot of the time, it ended up being the file extension, where I told 11ty to search for a /img/cool image.png and then my "cool image" wasn't even a PNG. Those times, you may feel like you have bricks for brains, but I extend to you bricks-for-brains solidarity.

File paths

This was fixed in Version 2, so I've collapsed this section.

Only relevant in Version 1

Confound those file paths. Oh, how I hate them. They drive me to drink!!! *glug glug glug* Anyway, so few hours after posting this, I realized I'm stupid. And I'm owning up to it, because hopefully then you'll then feel less stupid whenever you mess up.

So, in the demo, when you go to the characters page, yeah? It only states the character names. (Currently, there's only Steellion, but y'know, imagine there's 50 horses or whatever.)

It was supposed to show an avatar along with it... And why doesn't it show up...?

C'mere. Lemme show ya.

See this?

Screenshot A

That's the beginning of steellion.md which contains Steellion's character page.

Now, in the folder you've extracted on your computer, find characters.md and take a look.

Screenshot B

This is what it looks like, yeah? Nice. So far so good. The src= in <img> (so, the image source) is set to output /img/avatar/characters/Steellion/clopsiverse/avatar.png

Which... should be it, right?

Ding dong, I are wrong!!

Because this is where the image is actually located:

Screenshot

Yeah... Seriously. The "world" folder (Clopsiverse) starts with a capital C. Meanwhile, "clopsiverse" in Steellion's info, was spelled with a lowercase C.

In steellion.md, change world: clopsiverse to world: Clopsiverse.

Boom baby. Day saved.

Tools & Services

Useful stuff

  • Bulk Resize Photos to resize images in bulk. Useful if you have gallery entries in bulk and need smaller versions and/or thumbnails for them. I keep "full view" gallery entries at a maximum of 1000 pixels wide.
  • TinyPNG to compress PNG files. Usually it shaves 50% to 70% off and I very rarely see any loss in quality.
    • JPG files get super crusty, and personally I find the PNG files end up taking up less space anyway.
    • EzGif to compress (optimize) GIF files.

Webhosts

Check my bookmarks for a list of webhosts along with other useful stuff. You can also check this webhost list by Kale and this post by Snake. Snake's post focuses on webhosts that allow adult content.

If you wanna talk about oatmeal in a very Normal way, and only post drawings of your Normal human OCs smiling happily at the camera while they polish their white picket fence, finding a webhost ain't hard.

But if you plan to post anything which conservative bootlickers might find obsceneErotica, queer art, fairy wings, cat-eared anime girls, ASMR, fantasy, lolisho/cub, feral, furries, noncon, incest age gap yaoi, toxic yuri, etc. ... your options are slimmed down. But it's the options that are worth supporting.

What you get with this starterpack is a static website, so you don't need a lot of power to get it running.

Domains

I use Namecheap and I've been happy with them. I've also heard people use Porkbun.

Tips & Advice

  • If you host adult content on your website, I suggest adding an RTA label. I've added it on mine even if I don't post porn.
    I just don't care to be some 14 year old's favorite philosopher, lol...

Need help?

I love to help!! But I also suck, LOL, sorry.

If I'm slow, it's cuz I'm recuperating by drawing het yaoi. Whiskey on the rocks and a cigarette in hand. Y'know, life veteran uhh hot girl behavior...

Ask away

Already answered

Shampoo bottle

Hello! I was wondering how you added an 'alert' onto a gallery preview image? I want to use that to warn for like... noncon or gore or whatever when I post art. I'm also having trouble figuring out how to put multiple characters on the character page and having their avatars show. :( Please Halp.

Ohh huh, yeah... It would've been useful for me to include that option by default LOL!! Well, here goes--

Adding gallery warnings (CWs)

Version 2 includes the first part by default, so I've collapsed it.

Only relevant in Version 1

The way I do it is a little messy, but what can I say. *says nothing else, proceeds to explain*

  1. Open your .CSS file (whichever in the /css folder is relevant). Paste this .CW- {display:none;} somewhere. It doesn't matter where unless you wanna sort it; it just tells 11ty that elements with the CW- class should be hidden when not in use.
  2. Then, in gallery.md, where it calls for the specified collection, on the line before <a> begins, paste this line:

<div class="alert CW-{{post.data.warningToggle}}">{{post.data.warning}}</div>

That whole weird-looking line.

  1. Then, on gallery entries you want to apply a warning to, you have to add 2 extra fields to the info at the top, like this:

warningToggle: show

warning: sensual horse

If you have a gallery entry that doesn't need these, you either don't include those lines at all, or you leave them empty.

The way that it works isn't the most graceful approach, but it works, lol; if you specify no input for warningToggle then the class CW- remains the same. But if you input warningToggle: show (or even just warningToggle: sexyyy for that matter...) it changes the class from CW- to CW-show which (unlike CW-) isn't set to be hidden.

So it's purposefully sabotaging your own code, LOL. It doesn't break things. Maybe a little messy, but it works for me.

Character icons

I suspect you're dealing with the same bug that I was, LOL. It's a problem with the file path, and I wrote a walkthrough of how to untangle it. Hopefully that should work...? Let me know if that wasn't the issue.

The following was a question I got prior to putting the starterpack together. It's inspired me to actually just, yeah, share the folder structure.
Shampoo bottle

How did you make the characters all link to specific gallery entries? How did you put together your worlds pages? I'm amazed at how easy it is to navigate your site, if you'd be down to share your workflow I'd be your #1 appreciator

Wooooh thank you!! Yes!! I'd love for more people to have a fun time making webbysites, so I'll gladly try to explain how to do the same.

As you may know, my site is built using 11ty/Eleventy. I'll explain without assuming you're very familiar with it, so maybe it can be useful to others as well.

But long story short; 11ty collections.

general set-up

All my pages start as an .md file, which 11ty then uses to generate the .html file that's published online. My gallery starts as any other page, as an .md file, but it includes a "collection" at the bottom of the page.

That's the whole file. The part that's important is line 16, which tells 11ty to search for all .md files in the art collection.

Using my latest gallery entry, here's what that looks like.

Then, gallery.md fills out line 17 to line 27 with information I specified (posttitle, imageformat, etc.) in all posts tagged art.

Butt!!! Notice how it isn't just tagged with art but also ocOrion and nmocCain? Yeap, that's the trick, LOL... It's in several "collections". That's all there is to it.

Just like gallery.md yoinks posts tagged with art, Orion.md yoinks posts tagged with ocOrion, and Cain.md yoinks posts tagged with nmocCain.

Tadaaahh...?

11ty pros would probably have way more efficient ways to do this. But I'm not a 11ty pro, so this is how I do it...

worlds page

The pages for each world is pretty much built up entirely the same as the gallery. It just uses several collections.

Orion.md is tagged with charainWysteria. Wysteria.md then yoinks all posts tagged with charainWysteria, and smacks them all together under "characters". Meanwhile, it also yoinks all posts tagged with wysteriaWiki and lists them under "wiki".

adding new posts

Now, to add something to the gallery, I just have to --

  1. upload 2 images (1 for full view, 1 for the thumbnail)
  2. make a new .md file
  3. fill it out with info and tags

-- and 11ty does the rest.

I hope that's helpful, even if a bit rambly... *scratches head* Good luck with any website endeavors, Anon!

Changelog

Version 2

  • URL outputs now use "slugify". Instead of being restricted to file names and gallery titles to be the exact same, a gallery entry that's titled Man, Shell, Sea, Sand will be translated to man-shell-sea-sand + .png or whatever file extension you use. This prevents uppercase/lowercase errors in the file path.
    • You'd still need to name your images and folders accordingly. The instructions have been updated to explain this.
  • The navigation can now hold more subcategories by default. In navigation.json, if you leave any subcategory's "Hyperlink" fields empty, they won't show up. You can add or remove categories by copypasting or deleting.
  • Fixed an issue where the oldest gallery entries were at the top... Oops...!?
  • The gallery now includes the option for CWs by default.
  • Added another page (Found in the blog!) with snippets of code to give people some reference or copypaste opportunities.
  • Added the option for a logo image on top of the header background. If you don't want the image, open site.json, change "LogoPath":"/img/layout/logo.png", to "LogoPath":"", or remove the line entirely!
  • Tweaked the CSS a little.

Adjust settings

Your choices are stored in LocalStorage for your next visit. Refresh the page to see the changes.

Color filter

No filter. Grill your eyeballs with oversaturation. 'cuz I'm a merciful mistress... My art will still flashbang you in full view tho LOL The world when I wake up... This filter disappears on page refresh. Your eyes will bleed and your brain will melt outta your ears.

Animations

Bubbles

Needs animations enabled. Bubbles may impact performance.