Hey there!
We’re thrilled you want to contribute to Zappy — the fast, type-safe, KSP-powered mock data generator for
Kotlin.
Your help makes it better for everyone. By contributing, you agree to follow our **Code of Conduct
** — in short: be kind, be respectful, be awesome.
Even small contributions go a long way:
- Report bugs – Found a weird mock? Let us know!
- Submit code – Add new ZPL providers, fix bugs, improve performance
- Improve docs – Make the README, examples, or API clearer
- Add examples – Show off cool use cases in
zappy-test - Suggest features – Want
<hex-color>?<iban>? Open an issue!
-
Install prerequisites
- JDK 17+ (Zappy uses Kotlin 1.9+)
- IntelliJ IDEA (recommended) or any IDE with Kotlin + Gradle support
-
Clone the repo
git clone https://github.com/mtctx/zappy.git cd zappy -
Open in your IDE
- Open the root
build.gradle.kts - Let Gradle sync (it will download KSP, KotlinPoet, etc.)
- Open the root
-
Build & Test
./gradlew build
This compiles all modules and runs the KSP processor.
-
Run the example
./gradlew :zappy-test:run
You’ll see:
Test(username=7g1iH7VlMBM2C)
Help us fix it fast! When opening an issue on GitHub Issues:
- Clear title – e.g.,
mock<User>() generates invalid email with @Name(":") - Steps to reproduce – Code snippet + build command
- Expected vs Actual – What should happen? What did?
- Zappy version –
1.0.0,main, or commit SHA - Logs/screenshots – KSP warnings, stack traces, etc.
We love PRs! Here’s the flow:
- Fork the repo on GitHub
- Create a branch:
git checkout -b feature/hex-color-provider # or git checkout -b fix/email-validation - Make your changes
- Add tests in
zappy-testif possible - Update docs if adding public APIs
- Add tests in
- Commit clearly:
git commit -m "feat: add <hex-color> ZPL provider" - Push & open PR to
main - Link issues: Use
Closes #123if applicable
- Follow Kotlin Coding Conventions
- Use 4-space indentation
- Format with IntelliJ’s default Kotlin formatter
- Keep functions small and focused
- Add KDocs for public APIs
No linter config needed — just keep it clean and consistent.
zappy/
├── zappy-core/ → ZPL engine, annotations, providers
├── zappy-processor/ → KSP code generation
├── zappy-test/ → Example usage + integration tests
└── build.gradle.kts → Multi-module config
# Full build + KSP + tests
./gradlew build
# Just run the example
./gradlew :zappy-test:runThe KSP processor will regenerate MockProviders.kt on every build.
- Stuck on setup? → Open an issue
- Idea to discuss? → Start a Discussion
- Want to pair? → Ping
@mtctxon GitHub
Every contribution — from a typo fix to a new provider — makes Zappy better.
You’re making Kotlin testing smoother for everyone.
Let’s build something awesome together!