Skip to content

Commit

Permalink
add libs per language in README
Browse files Browse the repository at this point in the history
  • Loading branch information
ythirion committed Jan 5, 2024
1 parent b538a77 commit de2e8a8
Showing 1 changed file with 38 additions and 9 deletions.
47 changes: 38 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Advent Of Craft

[![Our Discord](https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/E5Z9s9UKTS)
[![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/advent-of-craft)

Expand All @@ -13,37 +14,44 @@ Your journey as a developer has probably taken many turns.

You probably had to troubleshoot and refactor a piece of code that you still have nightmares about.

You might have been stuck in a team when you never have time to improve your code base because `"We have to deliver more features"`.
You might have been stuck in a team when you never have time to improve your code base
because `"We have to deliver more features"`.

Heck, you probably still are.

We feel you, and in the spirit of Christmas, you deserve a gift.

We have the privilege this year to bring to you the Advent of Craft.
We have the privilege this year to bring to you the Advent of Craft.
This is a journey into software craftsmanship.

Each day, `you will be taken in a small aspect of software craftsmanship`. Each day, you will have `an exercise with a topic` to look at in a small bite approach and hopefully you will `learn something`.
Each day, `you will be taken in a small aspect of software craftsmanship`. Each day, you will
have `an exercise with a topic` to look at in a small bite approach and hopefully you will `learn something`.

From refactoring to testing to reviewing, all aspects are going to be explored.

> The objective of this journey is to learn new crafts and share with your peers, not to get lost in impossible algorithm exercises or to finish as fast as you can using chatGPT.
> The objective of this journey is to learn new crafts and share with your peers, not to get lost in impossible
> algorithm exercises or to finish as fast as you can using chatGPT.
A repository is available and each day a topic will appear with a proposed solution for the day before.

We hope you enjoy the ride.
We hope you enjoy the ride.
Happy Crafting!

![Advent Of Craft 2023](docs/img/advent-of-craft.png)

## Join us on Discord
To facilitate the communication around challenges you can join us on `Discord` by simply clicking [here](https://discord.gg/E5Z9s9UKTS).

To facilitate the communication around challenges you can join us on `Discord` by simply
clicking [here](https://discord.gg/E5Z9s9UKTS).

![Discord Advent Of Craft](docs/img/discord.png)

## Instructions

[Here are the instructions for the journey](docs/INSTRUCTIONS.md)

## Challenges - 2023

Here are the different challenges :

- [Day 1: Make your production code easier to understand.](docs/exercise/day01/challenge.md) [![Refactoring](https://img.shields.io/badge/Refactoring-blue)](docs/learning-paths/refactoring.md)
Expand All @@ -68,12 +76,14 @@ Here are the different challenges :
- [Day 20: No more exceptions in our domain.](docs/exercise/day20/challenge.md) [![Design](https://img.shields.io/badge/Design-yellow)](docs/learning-paths/design.md)
- [Day 21: Refactor the tests and production code to Output-Based tests.](docs/exercise/day21/challenge.md) [![Clean Testing](https://img.shields.io/badge/Clean%20Testing-orange)](docs/learning-paths/clean-testing.md)
- [Day 22: Design a diamond program using T.D.D and Property-Based Testing.](docs/exercise/day22/challenge.md) [![T.D.D](https://img.shields.io/badge/T.D.D-green)](docs/learning-paths/tdd.md)
- [Day 23: Refactor the code after putting it under test.](docs/exercise/day23/challenge.md) [![Refactoring](https://img.shields.io/badge/Refactoring-blue)](docs/learning-paths/refactoring.md) [![T.D.D](https://img.shields.io/badge/T.D.D-green)](docs/learning-paths/tdd.md) [![Clean Testing](https://img.shields.io/badge/Clean%20Testing-orange)](docs/learning-paths/clean-testing.md) [![Functional Programming](https://img.shields.io/badge/Functional%20Programming-purple)](docs/learning-paths/functional-programming.md)
- [Day 23: Refactor the code after putting it under test.](docs/exercise/day23/challenge.md) [![Refactoring](https://img.shields.io/badge/Refactoring-blue)](docs/learning-paths/refactoring.md) [![T.D.D](https://img.shields.io/badge/T.D.D-green)](docs/learning-paths/tdd.md) [![Clean Testing](https://img.shields.io/badge/Clean%20Testing-orange)](docs/learning-paths/clean-testing.md) [![Functional Programming](https://img.shields.io/badge/Functional%20Programming-purple)](docs/learning-paths/functional-programming.md)
- [Day 24: Write the most complicated code you can.](docs/exercise/day24/challenge.md) [![Refactoring](https://img.shields.io/badge/Refactoring-blue)](docs/learning-paths/refactoring.md)
- [Day 25: Share with the world what you have learned.](docs/exercise/day25/challenge.md)

### Solutions
A solution proposal will be published here every day during the `Advent Of Craft` containing `the code` and a `step by step` guide.

A solution proposal will be published here every day during the `Advent Of Craft` containing `the code` and
a `step by step` guide.

- [Day 1: Make your production code easier to understand.](docs/exercise/day01/solution/step-by-step.md)
- [Day 2: One level of indentation.](docs/exercise/day02/solution/step-by-step.md)
Expand Down Expand Up @@ -101,19 +111,38 @@ A solution proposal will be published here every day during the `Advent Of Craft
- [Day 24: Write the most complicated code you can.](docs/exercise/day24/solution/step-by-step.md)

## Learning paths πŸš€
We have designed several `learning paths` based on the challenges that you can follow if you want to deep dive into a given concept:

We have designed several `learning paths` based on the challenges that you can follow if you want to deep dive into a
given concept:

- [Refactoring πŸš€](docs/learning-paths/refactoring.md)
- [Clean Testing 🧼](docs/learning-paths/clean-testing.md)
- [Test-Driven Development πŸ”΄πŸ”΅πŸŸ’](docs/learning-paths/tdd.md)
- [Design πŸ›](docs/learning-paths/design.md)
- [Functional Programming πŸŒ‹](docs/learning-paths/functional-programming.md)

## Available languages

For now, the supported languages are:

- `java` (v 21)
- `kotlin` (1.9.21)
- `C#` (.NET 8)

Here are the libraries we use in the different days per language:

| Topic | Java | C# | Kotlin |
|------------------------|------------------------------------------------------------------|---------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| Test framework | [junit](https://junit.org/junit5/) | [xUnit](https://xunit.net/) | [Kotest](https://kotest.io/) |
| Fluent assertions | [assertJ](https://joel-costigliola.github.io/assertj/) | [FluentAssertions](https://fluentassertions.com/) | Native `kotest` asertions |
| Mocking | [mockito](https://site.mockito.org/) | [NSubstitute](https://nsubstitute.github.io/) | [mockk](https://mockk.io/) |
| Approval testing | [approvalTests](https://github.com/approvals/approvaltests.java) | [Verify.xUnit](https://github.com/VerifyTests/Verify) | [approvalTests](https://github.com/approvals/approvaltests.java) |
| Property-Based testing | [vavr-test](https://github.com/vavr-io/vavr-test) | [FSCheck](https://fscheck.github.io/FsCheck/) | [kotest-property](https://kotest.io/docs/proptest/property-based-testing.html) |
| Fake data generator | [instancio](https://www.instancio.org/) | [Bogus](https://github.com/bchavez/Bogus) | Not used |
| Architecture tests | [archunit](https://www.archunit.org/) | [TngTech.ArchUnitNET.xUnit](https://archunitnet.readthedocs.io/en/latest/) | [archunit](https://www.archunit.org/) |
| Functional library | [vavr](https://www.vavr.io/) | [LanguageExt.Core](https://github.com/louthy/language-ext) | [arrow-kt](https://arrow-kt.io/) |
| Functional assertions | [assertj-vavr](https://github.com/assertj/assertj-vavr) | [FluentAssertions.LanguageExt](https://www.nuget.org/packages/FluentAssertions.LanguageExt) | [kotest-extensions-arrow](https://github.com/kotest/kotest-extensions-arrow#kotest-extensions-arrow) |

## Contributors

<table>
Expand Down

0 comments on commit de2e8a8

Please sign in to comment.