{"repo":"damian-rafael-lattenero/kap","free":true,"listed":false,"github":"https://github.com/damian-rafael-lattenero/kap","clone":"git clone https://github.com/damian-rafael-lattenero/kap.git","description":"Stop wiring async calls manually. Compile-time safe coroutine orchestration with visible phases.","language":"Kotlin","stars":27,"topics":["async","coroutines","functional-programming","kotlin","kotlin-multiplatform","multiplatform","orchestration","parallel","type-safe"],"license":"Apache-2.0","category":"workflow-automation","readme_excerpt":"KAP Type-safe coroutine orchestration for Kotlin Multiplatform. The code reads like a diagram. The compiler won't let you wire it wrong. Get Started · Docs · Cookbook --- The problem A checkout that calls 7 services in 4 phases. Stock validation needs retry. Payment needs a circuit breaker. Promos have a timeout. Read this and tell me: where are the phases? Where's the retry logic vs the business logic? The phases are buried. The retry loop broke the async/await rhythm. The circuit breaker is interleaved with the business flow. Add one more concern and it gets worse. With KAP Same 7 calls, same 4 phases, same retry, same circuit breaker, same timeouts. .with = parallel, .then = barrier. Resilience is per-call, inline, composable. @KapTypeSafe generates a scoped wrapper with per-slot tag interfaces . Each .with { field from value } lambda exposes the slot for the field at the current curry position — the IDE shows exactly the field you owe, by name. Swap two fields and you get a compile error naming the expected tag. Reads like prose ( user from fetchUser() ), no method-name explosion, single .with / .then for the whole graph. --- Three concepts. That's it. You write What happens Think of it as --- --- --- .with { field from value } Runs in parallel with everything else in the same phase \"and at the same time...\" .then { field from value } Waits for all above, then continues \"once that's done...\" .andThen { result - } Waits, passes the result, builds the next graph \"using what","default_branch":null,"files":null,"tree":[],"storefront":"/r/damian-rafael-lattenero","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/damian-rafael-lattenero/kap/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}