---
# System prepended metadata

title: Foundry VTT Module Making for Beginners - Introduction
tags: [foundry-vtt, module-tutorial]

---

# Foundry VTT Module Making for Beginners - Introduction
###### tags: `module-tutorial` `foundry-vtt`

So you want to make a Foundry VTT Module but you're not sure where to start? 

This tutorial will start at the very beginning and end with a working module, explaining as much as is feasible to explain along the way.

## How to read this tutorial

This tutorial works best as a start-to-finish step-by-step journey into module making. It will walk you through each part of the process, **including some purposefully wrong steps** to demonstrate how to debug things when they do not work. As a result, if you copy and paste directly from some examples without the context, things might not work.

## What we'll be building

Here's the elevator pitch:

> A module which allows each individual user in a Foundry VTT world to have a to-do list that they can add entries to, mark entries complete, and delete entries from.

## What we'll learn about

By the end of this tutorial, you'll have at least touched each of the following core Foundry VTT API concepts:
- Hooks
- Flags
- FormApplication
- Dialog
- Settings
- Handlebars
- CSS
- Localization

From my experience, having a working understanding of these Foundry-specific things in addition to a working knowledge of Javascript, HTML, and CSS is a rock solid baseline for starting to create Foundry VTT Modules.

## Prerequisites
### An activated local FoundryVTT installation on version 0.8.8+ or version 9

All of the pieces this tutorial interacts with are in the Public API for Foundry VTT and thus it is expected to be relevant for a long time, but it is confirmed to be working on Core version 0.8.8 and version 9 stable.

### Some working knowledge of HTML, CSS, and JavaScript (ES2020)

If you're completely new to these technologies, this tutorial can still be helpful to you, but you may find yourself overwhelmed.

## Style & Organization Notes

### Code Samples

Code Samples will be styled like so:

```js=
// This is some Code
```

Ocassionaly there will not be line numbers or syntax highlights.

```
// This is also a code sample
```

### Errors

Sometimes we'll be debugging errors that our code has, they'll be styled like so:

:::danger
Error: This is an error.
:::

### Programming Concepts

Where relevant, we'll be learning some concepts tangential to Foundry VTT specific work. These will be styled like so:

:::info
**Programming Concept: Foo**

"Foo" is a common placeholder when creating examples.
:::



{%hackmd io_aG7zdTKyRe3cpLcsxzw %}