A PUG, JS, and SCSS framework for building custom Roll20 character sheet templates.
Table of Contents
This framework simplifies the task of writing code for Roll20 character sheets. It aims to provide an easier interface between the html and sheetworkers with some minor css templates.
- PUG
- JS
- SCSS
To use the K-scaffold to write the html of your sheet, you will write normal PUG, but using a comprehensive library of components that are frequently used on character sheets. These range from simple mixin versions of standard html elements inputs, textareas, and selects to more complex constructions that generate Roll20 elements or workarounds for limitations of Roll20 character sheets. For full information on the scaffold, read the pug library documentation.
To use the K-scaffold to write your sheetworkers, you will write normal sheetworkers, but using a library of utility functions and sheetworker aliases to supercharge the standard sheetworkers. For full information on the scaffold, read the sheetworker library documentation.
Creating and using a custom character sheet requires a Roll20 pro subscription. If you want to utilize the included testing framework, you will also need to install vitest;
Install the scaffold via NPM:
npm i @kurohyou/k-scaffold
The scaffold simplifies many of the common tasks of creating a Roll20 character sheet and provides constructs to easily create everything from fill to left radio groups to textareas that grow based on the content of their associated Roll20 attribute. To generate a K-scaffold sheet, you will need a pug file, and an scss file.
Your main pug file should start with:
include k-scaffold
//- Your code starts here
This will give your pug file(s) access to the K-scaffold mixins and local variables.
Any scss file that you want to use the K-scaffold's mixins in needs to start with:
@use "k-scaffold" as k;
To build your sheet, simply run the following command:
> k-build
Alternatively, you can build in watch mode so that the sheet is updated as you make code changes.
> k-build --watch
OR
> k-build --w
This is useful when using the Roll20 Autocode chrome extension to automatically update the Roll20 sandbox.
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
The K-scaffold and sheets written with it use the Vitest testing framework.
Unit tests are currently written for the following:
- The html, testFramework, and translation generation code
- Parts of the CSS generation generation code
- The K-scaffold's pug helper functions
- All sheetworker utility functions except for the repeating section ordering functions.
Tests for the uncovered sections of code will be written as work progresses. If you wish to contribute, please ensure that no changes break these tests.
Distributed under the mit License. See LICENSE.txt for more information.
v1.2.2
- Fixed an issue that caused the watch build mode to ignore dynamic destinations
v1.2.1
- Fixed a dependency issue with node-watch
- Updated readme.
v1.2.0
- Added the ability for dynamic destination directories
v1.1.0
- Added module mixin to Pug Library
v1.0.0
- Soft Launch
Scott Casey - @Kurohyoustudios
Project Link: https://github.com/Kurohyou-Studios/k-scaffold
- Riernar has supercharged the efforts to properly organize and pacakage the K-scaffold.
- Thank you to Keith Curtis for the excellent logo assets.
This readme template adapted from the Best-README-Template by Othneil Drew. Readme generated by Genme! by Scott Casey.