Organization: Scala Center
Project: ChatOps4s Discord Integration (chatops4s-discord)
Student: Liam Grossman
Mentor: Wojciech Pituła
Duration: May 2025 to September 2025 (Medium Project)
Build a simpler chat operations experience for the Scala ecosystem. More specifically, the project involved:
- Build flexible APIs that abstract over Discord's APIs.
- Implement data transfer objects/models.
- Implement unit testing.
- Implement examples in
chatops4s-examples. - Create documentation on using
chatops4s-discord.
- Created core traits (
OutboundGateway,InboundGateway,ButtonInteraction) for API implementation. - Implemented upon core traits to wrap Discord's APIs via
DiscordInboundandDiscordOutbound. - Enable users of
chatops4s-discordto pick their owntapirserver intrepreter. - Enable users of
chatops4s-discordto pick their ownsttpbackend. - Enable users of
chatops4s-discordto execute their own logic when an Discord interaction occurs. - Enable users of
chatops4s-discordto enable logging for observability.
- Created a
/modelsfolder for representing data transfer objects. - Utilizied
circefor serialization/deserialization. - Added logging for when serialization/deserialization failed.
- Used
scalatestfor unit testing. - Executing unit testing during CI/CD in parallel.
- 100% test converage over methods for
DiscordInboundandDiscordOutbound
- Show usage of
DiscordInbound. - Show usage of
DiscordOutboundand each of its methods. - Show usage of
Serverand how a user can user their own interpreter. - Create examples for embeding within documentation.
- Create installation instructions.
- Create documentation on accept/decline.
- Create documentation on sending a reply.
- Create documentation on sending to a thread.
- Utilize react, docusaurus, and mdx.
- Match organization and design with other
business4sprojects.
The chatops4s-discord was completed with the following:
- Using the latest verison of Scala,
circe,scalatest,sttp,tapir, andcats.
- Utilize functional programming to allow users to pass their own logic when a discord interaction is recieved.
- Be
sttpbackend andtapirserver interpreter agnostic. - Use effects paradigm to allow users to execute logic on an asynchronous runtime.
- Isolated and independent unit testing with arrange, act, and assert paradigm.
chatops4s/
├── chatops4s-core/ # Core abstractions and interfaces
├── chatops4s-slack/ # Slack integration (parallel development)
├── chatops4s-examples/ # Examples for Slack and Discord
├── chatops4s-discord/ # Discord integration
├── website/ # Documentation
└── build.sbt # Project metadata and dependencies
1. Additional Features
- Support customiziation for styling.
- Support slash commands.
- Support forms.
2. Enhance Documentation
- Add guides or link resources for working with the Discord API.
- Add guide for
- Add "design decisions" section.
3. Enhance Internals
- Have
chatops4s-discordandchatops4s-slackboth usechatops4s-core. - Have
chatops4s-discordandchatops4s-slackuse the same design decisions. - Have
chatops4s-discordandchatops4s-slackimplement the same test suites.
4. Enhance Developer Experience
- Create custom exceptions for better debugging.
- Add
scaladoccomments for inline documentation
5. Ecosystem
- CI/CD integration for deploying artifacts to maven.
chatops4s-discordcore implementation.chatops4s-discordcreating/sending to threads.chatops4s-discordsupport replying to a message.- Start of `chatops4s-discord documentation.
- Finish of `chatops4s-discord documentation.
- Let users select asynchronous runtime for
DiscordOutbound. - Add complied examples for documentation.
1. Effects paradigm
- Using an "asynchronous runtime" was a new experience for me.
- Understanding and appropriately using
flatMapto sequenceIOactions.
2. Discord API
- To create a lean library, integration with the Discord API was done by scratch.
- Documentation was confusing at times, particularly due to the lack of examples.
3. Pivoting from MS Teams Integration
- Originally, I was expected to implement a MS Teams integration.
- Due to restrictions around the MS Teams API, we had to pivot to Discord at the beginning of the coding period.
1. Effects paradigm
catsand theIOmonad.
2. API design
- Using functional programing and traits to create a flexible and lean library
3. tapir and sttp
- Deploying REST APIs in scala with
tapiras well as making requests to external APIs in scala withsttp.
- Main Repository: business4s/chatops4s
- Project Documentation: ChatOps4s Documentation
- Example Applications: Located in
chatops4s-examples/module
This GSoC experience has been transformative, and hope to continue contributing after program's conclusion.
- Provide maintenance and enhacements to
chatops4s. - Have
chatops4s-discordandchatops4s-slackreach parity. - Increase documentation for the
chatops4sproject. - Increasing testing converage for the
chatops4sproject. - Support other chat platforms like telegram.
A big thank you to my mentor, Wojciech Pituła, and the Scala Center for providing me this amazing opportunity. I'm deeply grateful for everything I've learned and hope to use these skills to continue contributing to opensource!
Hello @wojciech Pitula sir and mentors,
My name is Azad Kumar, And I recently pursuing Bachelor's Degree in Computer Scince from Madhya Pradesh
MERN Stack
Java
Python
SQL
Blockchain
System Design (LLD & HLD)
Linux OS
Gen al
Backend development
Data structures & alogrithms
I am interested in contributing to the a highly scalable project is one that GSoC 2026
I have reviewed the project description and would like to begin contributing and understanding the expected the expected
deliverables.
Could you please guide me on:
where is the development repo/codebase for this project maintained?
Beginner-friendly tasks or areas I should explore first?
Are there any specific tools, datasets, or technologies I should set up before I start?
Looking forward to contributing meaningfully.
Thank you!
Azad kumar