# How-to guides

Task-oriented recipes for common `scinexus` operations, each self-contained.

- Write a function app – use `@define_app` on a function
- Write a class app – use `@define_app` on a class with `main()`
- Handle failures – create and inspect `NotCompleted` values
- Use data stores – open, read, and write data stores
- Read and write files – IO with compression, atomic writes, streaming
- Run in parallel – parallel execution with pluggable backends
- Track progress – progress bars with `tqdm` or `rich`
- Log and cite – `scitrack` logging and citation tracking
- Customise display and IDs – `set_summary_display` and `set_id_from_source`
- Extend type checking – register type namespaces for downstream packages
- Migrate from cogent3 – update code from `cogent3.app` to `scinexus`