Contribute

1Form is open source and community driven. Here's how you can help.

Add a New Form

Each form is defined as a TypeScript file in src/data/forms/. To add a new form:

  1. Fork the repository
  2. Copy an existing form file (e.g., w-4.ts) as a template
  3. Fill in the form metadata: title, description, issuing authority, difficulty, etc.
  4. Write the walkthrough sections and steps with explanations, examples, common mistakes, and tips
  5. Register your form in src/lib/forms.ts
  6. Submit a pull request

Improve Existing Walkthroughs

Found a mistake? Have a better explanation? You can:

  • Fix inaccurate or outdated information
  • Add missing common mistakes or tips
  • Improve field explanations for clarity
  • Add reference screenshots with field highlights
  • Report form changes and version updates

Report Issues

Found a bug or have a feature request? Open an issue on GitHub Issues.

Data Model Reference

Each form data file exports a FormData object with two properties:

  • meta — Form identity, category, difficulty, quick facts, tags, and resources
  • walkthrough — Introduction, sections (with steps), and completion content. Each step includes field label, explanation, detailed guidance, field type, examples, common mistakes, and tips.

See the TypeScript types in src/types/form.ts and src/types/walkthrough.ts for the complete schema.