# Ack

Documentation for the Ack project

## Docs

- [Overview](https://docs.page/conceptadev/ack): External data can't be trusted. APIs change, users mistype, and JSON drifts from what your code expects. Ack is a schema validation library for Dart and Flutter that puts a guardrail at those boundaries: describe the shape you expect onc...
- [API Reference](https://docs.page/conceptadev/ack/api-reference): This page is a curated quick reference for the core Ack classes, methods, and annotations. Use the [generated API documentation](https://pub.dev/documentation/ack/latest/ack/) for every public declaration and exact signatures; use the li...
- [llms.txt](https://docs.page/conceptadev/ack/llms.txt): This route redirects to the canonical static `llms.txt` file.
- [Codecs](https://docs.page/conceptadev/ack/core-concepts/codecs): Your API sends a timestamp as an ISO string, but your code wants a `DateTime`. A codec handles that round-trip: it validates the incoming string, decodes it into the Dart type you actually use, and encodes it back when you send data out.
- [Configuration](https://docs.page/conceptadev/ack/core-concepts/configuration): Ack has no global configuration object. All behavior is configured at the schema level through the fluent API.
- [Error Handling](https://docs.page/conceptadev/ack/core-concepts/error-handling): When validation fails, you want to know what went wrong and where. `safeParse()` hands back a `SchemaResult` holding either the validated value or a `SchemaError`, so you can inspect failures without try/catch.
- [JSON Serialization](https://docs.page/conceptadev/ack/core-concepts/json-serialization): Ack validates decoded JSON at your application boundary. On the way back out, plain schemas produce JSON-native Dart values directly, while [codecs](./codecs.mdx) encode rich runtime values such as `DateTime` and `Uri` back to their wire...
- [Schemas](https://docs.page/conceptadev/ack/core-concepts/schemas): A schema describes the shape your data should have. You build one with the `Ack` factory, then validate input against it. This page tours every schema type and how to compose them.
- [TypeSafe Schemas](https://docs.page/conceptadev/ack/core-concepts/typesafe-schemas): Tired of writing `data['name'] as String` after every parse? Annotate a top-level schema with `@AckType()` and run the generator once to get typed getters like `user.name`. The schema stays in your source file; the generator adds a typed...
- [Validation Rules](https://docs.page/conceptadev/ack/core-concepts/validation): Constraints turn "a string" into "an email between 2 and 50 characters." Chain them onto any schema — each comes with a sensible default error message, and you can supply your own (see [Custom Validation](../guides/custom-validation.mdx)).
- [Installing Ack](https://docs.page/conceptadev/ack/getting-started/installation): Ack is a pure-Dart package with no required build step. Add the core library — and, optionally, the code generator for typed wrappers.
- [Quickstart Tutorial](https://docs.page/conceptadev/ack/getting-started/quickstart-tutorial): This tutorial validates a Dart map — the kind you get from `jsonDecode()` of an API response or a form submission — and handles every outcome.
- [Common Recipes](https://docs.page/conceptadev/ack/guides/common-recipes): Quick solutions to common validation scenarios. Each recipe shows a working schema pattern you can copy and adapt. Examples assume `package:ack/ack.dart` is imported unless the snippet shows other imports.
- [Creating Adapter Packages](https://docs.page/conceptadev/ack/guides/creating-schema-converter-packages): This guide provides detailed instructions for creating schema converter packages that transform Ack validation schemas into other schema formats (e.g., JSON Schema, OpenAPI, GraphQL, Protobuf, TypeBox, AJV, etc.).
- [Custom Validation Rules](https://docs.page/conceptadev/ack/guides/custom-validation): While Ack provides many [built-in validation rules](../core-concepts/validation.mdx), you can extend them with your own value-level constraints or object-level refinement logic.
- [Form Validation in Flutter with Ack](https://docs.page/conceptadev/ack/guides/flutter-form-validation): This guide shows how to use Ack for validating forms in Flutter applications.
- [JSON Schema Integration](https://docs.page/conceptadev/ack/guides/json-schema-integration): Your Ack [schema](../core-concepts/schemas.mdx) already describes your data's shape — so you can export it as JSON Schema (Draft-7) and reuse it to document an API, drive a form library, or define an LLM tool, all from one source of truth.
- [Adapter Package Quickstart](https://docs.page/conceptadev/ack/guides/schema-converter-quickstart): **Use this for rapid prototyping of new schema converter packages**