Thank you for your interest in contributing to Archivist Sync!
- Node.js 18.x or 20.x
- npm (comes with Node.js)
- Clone the repository
- Install dependencies:
npm install
This project uses ESLint and Prettier to maintain code quality and consistency.
Run the linter to check for issues:
npm run lintAutomatically fix formatting issues:
npm run lint:fix- Use ES modules (
import/export) - 2 spaces for indentation
- Single quotes for strings
- Semicolons required
- Max line length: 100 characters
Before committing your changes:
- ✅ Run
npm run lint:fixto auto-format code - ✅ Fix any remaining linting errors/warnings
- ✅ Test your changes in Foundry VTT
GitHub Actions automatically runs linting checks on all pull requests and pushes to main and tooling branches. Your code must pass these checks before being merged.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run linting and fix any issues
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project uses automated releases for both production and beta versions:
- Production releases (
mainbranch): Automatically published to Foundry VTT when version is bumped - Beta releases (
stagingbranch): Creates GitHub pre-releases for testing, manual install only
See .github/RELEASE_WORKFLOW.md for detailed documentation on:
- How to create releases
- Branch strategy
- Version numbering
- Beta testing process
For Beta Testing:
- Merge your feature to
staging - Push to
staging→ automatic beta release created with auto-incrementing build number - No version bump needed! (Only update version when targeting a new release)
For Production Release:
- Update
CHANGELOG.mdwith release notes - Merge
stagingtomain - Update versions in
module.jsonandpackage.jsonif needed - Push to
main→ automatic release + Foundry VTT publication
If you have questions, please open an issue on GitHub.