# Open Source projects - SoftwareMill



We code and contribute to Scala language & functional programming open source. These are projects that we use every day or used to rely on.




## Open Source

We are involved in many open source and open data activities, as we want to support the community. These are projects that we use every day or used to rely on.


## Open Source Projects

### tAPIr
Link: https://github.com/softwaremill/tapir
Technologies: Scala
Contributors: Adam Warski,Kasper Kondzielski,Krzysztof Ciesielski
With tapir you can describe HTTP API endpoints as immutable Scala values. Each endpoint can contain a number of input parameters, error-output parameters, and normal-output parameters. Generate a tapir project <a href="https://adopt-tapir.softwaremill.com/" target="_blank" style="color: #FF00CC">here</a>.

### sttp
Link: https://github.com/softwaremill/sttp
Technologies: Scala
Contributors: Adam Warski,Tomasz Szymański,Kasper Kondzielski,Bartłomiej Żyliński
The Scala HTTP client that you always wanted!

sttp is an open-source library that provides a clean, programmer-friendly API to define HTTP requests and execute them using one of the wrapped backends, such as akka-http, async-http-client or OkHttp.

### RealWorld.io with tapir and ZIO
Link: https://github.com/softwaremill/realworld-tapir-zio
Technologies: Scala,Shell
Contributors: Adam Warski,Krzysztof Ciesielski,Adrian Wydra,Bartek Henkiel,Jakub Tyżaj,Tomek Pacuszka
Scala+ZIO+Quill+tapir codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.

### Reactive Kafka
Link: https://github.com/akka/alpakka-kafka
Technologies: Scala,Akka,Reactive Streams
Contributors: Krzysztof Ciesielski
Akka Streams (reactive!) connector for Apache Kafka.

### FoXAI
Link: https://github.com/softwaremill/FoXAI
Technologies: Python
Contributors: Adam Kaczmarek,Adam Wawrzyński,Rafał Pytel,Kamil Rzechowski
FoXAI simplifies the application of eXplainable AI algorithms to explain the performance of neural network models during training. Generic and easy to integrate with PyTorch.

### ox
Link: https://github.com/softwaremill/ox
Technologies: scala,JVM
Contributors: Adam Warski,Jacek Kunicki,Jacek Centkowski
Developer-friendly structured concurrency library for the JVM.

### ElasticMQ
Link: https://github.com/softwaremill/elasticmq
Technologies: Scala,Akka,AWS,SQS
Contributors: Adam Warski
Message queueing system with an actor-based Scala and Amazon SQS-compatible interfaces. Runs stand-alone or embedded.

### MacWire
Link: https://github.com/softwaremill/macwire
Technologies: Scala
Contributors: Adam Warski,Marcin Kubala
Lightweight and nonintrusive Scala Dependency Injection library.

### Quicklens
Link: https://github.com/softwaremill/quicklens
Technologies: Scala
Contributors: Adam Warski
Modify deeply nested fields in case classes using developer-friendly syntax.

### Apache Struts
Link: https://github.com/apache/struts
Technologies: Struts,Java
Contributors: Łukasz Lenart
A free, open-source, MVC framework for creating elegant, modern Java web applications. Favors convention over configuration, is extensible using a plugin architecture, and ships with plugins to support REST, AJAX and JSON.

### Akka Persistence Postgres
Link: https://github.com/mkubala/demo-akka-persistence-postgres
Technologies: Scala
Contributors: Marcin Kubala
The Akka Persistence Postgres plugin allows for using PostgreSQL 11 and Amazon Aurora databases as a backend for Akka Persistence and Akka Persistence Query.

It’s been originally created as a fork of the Akka Persistence JDBC plugin, focused on PostgreSQL features such as partitions, arrays, BRIN indexes, and others.

The main goal is to keep index size and memory consumption at a moderate level while being able to cope with an increasing data volume.

### react-use-promise-matcher
Link: https://github.com/softwaremill/react-use-promise-matcher
Technologies: React
Contributors: Piotr Majcher,Jakub Antolak,Marcin Baraniecki,Jakub Dzikowski
The library provides two hooks that aim to facilitate working with asynchronous data in React by helping you the state of a `Promise` without redundant boilerplate by using the `PromiseResultShape` object.

### Diffx
Link: https://github.com/softwaremill/diffx
Technologies: Scala
Contributors: Kasper Kondzielski,Adam Warski
Pretty diffs for case classes.
The library is published for Scala 2.12 and 2.13.

### Fablo
Link: https://github.com/hyperledger-labs/fablo
Technologies: Hyperledger Fabric,JavaScript,Shell
Contributors: Piotr Hejwowski,Jakub Dzikowski,Grzegorz Hejduk
Simplify your work with Hyperledger Fabric using our latest open source - Fablo.

Fablo allows you to start a blockchain network on Docker with a single command. It supports RAFT and solo consensus protocols, multiple organizations and channels, chaincode installation and upgrade.

### Lemons quality control dataset
Link: https://github.com/softwaremill/lemon-dataset
Technologies: Machine Learning
Contributors: Maciej Adamiak
A carefully-prepared dataset for automated fruit quality control through Machine Learning.

### Hibernate Envers
Link: https://github.com/softwaremill/hibernate-orm
Technologies: Java,Hibernate,JPA
Contributors: Tomasz Dziurko,Adam Warski
The Envers module aims to enable easy auditing/versioning of persistent classes. All that you have to do is annotate your persistent class or some of its properties, that you want to audit, with @Audited. For each audited entity, a table will be created, which will hold the history of changes made to the entity. You can then retrieve and query historical data without much effort.

### akka-http-session
Link: https://github.com/softwaremill/akka-http-session
Technologies: Scala,Akka
Contributors: Adam Warski,Krzysztof Ciesielski
akka-http is an Akka module, originating from spray.io, for building reactive REST services with an elegant DSL.

akka-http is a great toolkit for building backends for single-page or mobile applications. In almost all apps there is a need to maintain user sessions, make sure session data is secure and cannot be tampered with.

akka-http-session provides directives for client-side session management in web and mobile applications, using cookies or custom headers + local storage, with optional Json Web Tokens format support.

### Kafka-based message queue
Link: https://github.com/softwaremill/kmq
Technologies: Kafka,Scala,Java,Akka,MQ
Contributors: Adam Warski
Using kmq you can acknowledge the processing of individual messages in Kafka, and have unacknowledged messages re-delivered after a timeout.

### retry
Link: https://github.com/softwaremill/retry
Technologies: Scala
Contributors: Adam Warski
because you should never give up, at least not on the first try 💙

### Bootzooka
Link: https://github.com/softwaremill/bootzooka
Technologies: Scala,Angular
Contributors: Tomasz Diurko,PiotrBuda,Krzysztof Ciesielski,Adam Warski,Łukasz Lenart,Łukasz Żuchowski,Jacek Kunicki,Marcin Kubala,Michał Ostruszka,Marcin Baraniecki,Paweł Stawicki,Andrzej Ludwikowski
A simple application scaffolding project to allow quick start of development for modern, web based applications. If you'd like to have a jump start developing a Scala-based Single Page Application project, skipping the boring parts and focusing on the real business value, this template might be for you!

Bootzooka contains only the very basic features, that almost any application needs (listed below). These features are fully implemented both on server- and client- side. We hope that the implementations can also serve as blueprints for new functionalities.











## Projects and Creators we like and sponsor

### DevInsideYou
Improve the developer inside you! YouTube channel with video courses and tutorials.
Watch: https://www.youtube.com/channel/UCSBUwLT9zXhUalKfJrc2q2A

### Martin Kleppmann
Martin Kleppmann is creating research and teaching on distributed systems.
Patronite: https://www.patreon.com/martinkl

### SDKMAN!
Manage parallel versions of multiple Software Development Kits on Unix based systems.
Visit : https://sdkman.io/


## Through monthly dontations, we take part in sponsoring the development of some of the open-source projects that we use every day.
