https://github.com/albertllousas/social-network-kata-kotlin
Using strict TDD
https://github.com/albertllousas/social-network-kata-kotlin
Last synced: about 2 months ago
JSON representation
Using strict TDD
- Host: GitHub
- URL: https://github.com/albertllousas/social-network-kata-kotlin
- Owner: albertllousas
- Created: 2024-03-21T06:53:27.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-24T05:36:58.000Z (about 1 year ago)
- Last Synced: 2025-01-30T22:48:26.124Z (3 months ago)
- Language: Kotlin
- Size: 58.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Social Networking Kata
----------------------https://monospacedmonologues.com/2013/04/the-social-networking-kata/
https://github.com/sandromancuso/social_networking_kata## Scenarios
**Posting**: Alice can publish messages to a personal timeline
> \> Alice -> I love the weather today
> \> Bob -> Damn! We lost!
> \> Bob -> Good game though.**Reading**: Bob can view Alice’s timeline
> \> Alice
> \> I love the weather today (5 minutes ago)
> \> Bob
> \> Good game though. (1 minute ago)
> \> Damn! We lost! (2 minutes ago)**Following**: Charlie can subscribe to Alice’s and Bob’s timelines, and view an aggregated list of all subscriptions
> \> Charlie -> I'm in New York today! Anyone wants to have a coffee?
> \> Charlie follows Alice
> \> Charlie wall
> \> Charlie - I'm in New York today! Anyone wants to have a coffee? (2 seconds ago)
> \> Alice - I love the weather today (5 minutes ago)> \> Charlie follows Bob
> \> Charlie wall
> \> Charlie - I'm in New York today! Anyone wants to have a coffee? (15 seconds ago)
> \> Bob - Good game though. (1 minute ago)
> \> Bob - Damn! We lost! (2 minutes ago)
> \> Alice - I love the weather today (5 minutes ago)## General requirements
- Application must use the console for input and output;
- User submits commands to the application:
- posting: \ -> \
- reading: \
- following: \ follows \
- wall: \ wall
- Don't worry about handling any exceptions or invalid commands. Assume that the user will always type the correct commands. Just focus on the sunny day scenarios.
- Use whatever language and frameworks you want. (provide instructions on how to run the application)
- **NOTE:** "posting:", "reading:", "following:" and "wall:" are not part of the command. All commands start with the user name.## Future growth
Since there are only 4 commands and a few lines of code, there is no need to add an architectural code pattern. The code is simple and straightforward.
Although, scaling in terms of new commands, adding different data sources, or even a new UI, the code should be refactored to a more maintainable and scalable way
with:- A proper architectural style such layered, hexagonal ...
- Adhere to SOLID principles like Open/Closed or Dependency Inversion ...