# 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 %}