Skip to content

Sociomedia is a media aggregator and a community that challenges information by evaluating articles.

License

Notifications You must be signed in to change notification settings

pierregillon/Sociomedia

Repository files navigation

Build status

What is Sociomedia ?

Sociomedia is a media aggregator and a community that challenges information by evaluating articles.

Media aggregation example

medias example

Current features

  • 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

Roadmap

Features

  • 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

Tech

  • Docker for deployment

Architecture

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

Schema

architecture

Databases

  • Write database : Event store
  • Read database : Sql server or Postgresql

Development

Let's talk here about technical details. You might be interested of this section if you want to run the code on your machine.

How the application is built ?

The api is built following architecture patterns :

Languages and technologies

Projects is written is C#, HTML, JS, CSS.

  • Backend applications are .net core 3.1 console
  • Frontend is a Blazor app

Main libraries

  • 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.

Installing & Executing

  1. Make sure .NET Core SDK is installed on your environment (dotnet command line tool)

  2. Install dependencies

dotnet restore
  1. Build
dotnet build
  1. 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

Running the tests

dotnet test

The tests run with xUnit.

Running the tests

Tests are written following Behaviour Driven Development (BDD) with xUnit and NSubstitute (Mocks).

Versioning

The project use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

About

Sociomedia is a media aggregator and a community that challenges information by evaluating articles.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages