A purely functional, type-safe data access library for Scala applications using PostgreSQL.
Skunk is a data access library for Scala applications that connects to PostgreSQL databases. It provides a purely functional, type-safe API for executing SQL queries and commands, ensuring compile-time validation and preventing common runtime errors. The library is designed to integrate seamlessly with functional programming ecosystems like Cats Effect and FS2.
Scala developers building applications with PostgreSQL who prioritize type safety, functional programming principles, and maintainable database code. It's especially suited for teams using Cats Effect, FS2, or similar functional libraries.
Developers choose Skunk for its strong type safety, pure functional design, and deep PostgreSQL integration. It eliminates many runtime database errors through compile-time checks and offers a composable, resource-safe API that aligns with modern functional Scala practices.
A data access library for Scala + Postgres.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Skunk validates SQL statements and result types at compile time, preventing runtime errors like type mismatches or missing columns, as highlighted in its type-safe SQL feature.
Built on Cats Effect and FS2, it ensures referential transparency and resource safety, making it ideal for purely functional Scala codebases that prioritize correctness.
Leverages PostgreSQL's binary protocol and advanced data types for efficient communication and native feature support, optimizing performance for Postgres-specific use cases.
Uses FS2 streams to handle large result sets without loading all data into memory, enabling scalable data processing for applications with high-volume queries.
Skunk is designed exclusively for PostgreSQL, so projects requiring multi-database support or future migration to other systems face significant rework or need additional libraries.
Its reliance on Cats Effect and monadic patterns adds complexity for developers unfamiliar with functional Scala, increasing the onboarding time and potential for confusion.
The README directs users to an external microsite for details, which can fragment learning resources and make initial setup and troubleshooting more cumbersome.