A command-line tool for generating immutable model classes from JSON Schemas for Objective-C, Java, and JavaScript (Flow).
Plank is a command-line tool that generates immutable model classes from JSON Schema definitions. It automates the creation of type-safe, boilerplate-free model code for Objective-C, Java, and JavaScript (Flow), solving the problem of manual model implementation and reducing errors in client-server data handling.
Mobile and web developers working with typed languages like Objective-C, Java, or Flow who need to generate client-side models from server-defined JSON schemas.
Developers choose Plank because it enforces immutability and type safety by design, eliminates repetitive coding, and ensures consistency between server and client models, which is especially valuable for large-scale applications with complex data structures.
A tool for generating immutable model objects
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses JSON Schema, a standard and language-independent format, ensuring models are consistent between server and client, which reduces integration errors.
Generates immutable classes with builder patterns, preventing accidental state changes and simplifying data flow in complex applications.
Includes validation based on schema types, such as URI formats for URLs, catching errors early during JSON parsing.
Handles oneOf schemas by generating type-safe boilerplate with match functions, ensuring all cases are handled at compile-time without runtime reflection.
Only supports Objective-C, Java, and JavaScript (Flow), excluding popular modern languages like Swift or TypeScript, which limits adoption in polyglot teams.
Any schema change requires re-running the tool and manually integrating generated code, which can slow down development cycles compared to runtime or annotation-based solutions.
Enforcing immutability through separate builder classes adds boilerplate and complexity for simple model updates, which might be overkill for straightforward use cases.