Sociomedia is a media aggregator and a community that challenges information by evaluating articles.
- Add, edit and remove medias
- Define one or more RSS / ATOM feeds per media
- Centralize articles from several sources in the same web page
- Import all new articles on the flow
- Allow a user to search articles on a specific subjects (keywords search)
Show current version
- Show themes or trending that group articles by same subject
- Display article content inside Sociomedia app (iframe)
- Define more information about a media : founding, creation date, political orientation, ...
- Allow users to rank an article
- Order articles with highest rank
- Make medias edition for admin only
- Docker for deployment
Sociomedia is composed of 3 packages :
- FeedAggregator : aggregates periodicly all articles from specified rss / atom sources
- ProjectionsSynchronizer : Transform events to a read projection that is inserted in a sql database
- Front : Website that exposes user features
- Write database : Event store
- Read database : Sql server or Postgresql
Let's talk here about technical details. You might be interested of this section if you want to run the code on your machine.
The api is built following architecture patterns :
Projects is written is C#, HTML, JS, CSS.
- Backend applications are .net core 3.1 console
- Frontend is a Blazor app
- CQRSLite : light library for DDD and CQRS programming
- EventStore.Client : client to EventStore DB (the stream-oriented database optimised for event sourcing)
- Linq2Db : Linq to database provider, optimized in sql request building.
-
Make sure .NET Core SDK is installed on your environment (dotnet command line tool)
-
Install dependencies
dotnet restore
- Build
dotnet build
- Run
dotnet run --project /src/Sociomedia.Front/Sociomedia.Front.csproj
dotnet run --project /src/Sociomedia.ProjectionSynchronizer/Sociomedia.ProjectionSynchronizer.csproj
dotnet run --project /src/Sociomedia.FeedAggregator/Sociomedia.FeedAggregator.csproj
dotnet test
The tests run with xUnit.
Tests are written following Behaviour Driven Development (BDD) with xUnit and NSubstitute (Mocks).
The project use SemVer for versioning. For the versions available, see the tags on this repository.
This project is licensed under the MIT License - see the LICENSE.md file for details