Skip to content

Attempt to make an RSS Feeder based on "Clean Architecture"

Notifications You must be signed in to change notification settings

GambitKZ/RssFeeder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Summary

I have an E-book that don't synchronize with the PC's browser, but works fine with the RSS. So I will use this feature, saving necessary articles in Azure Table to read them from the E-book.

Build on following Template.

Plan

  • Write an MVP that return Hardcoded RSS
  • Write a logic that load the data FROM Azure Table
  • Write a logic that allow to load one feed INTO Azure Table
  • Write a logic that allow to load multiple feeds INTO Azure Table using Batch Insert.
  • Create "SharedCore" and move into it common things
  • Update "Application"
  • Implement Feed Removal in MVP
  • Implement Batch Feed load
  • Implement Batch Feed removal
  • Remove MVP and Deploy to Azure
  • Add Fluent Validation
  • Understand Isolated Process of the Azure Function
  • Get rid of Feed Object from Shared Kernel(?)
  • Add Unit Test
  • Create DTO for Function/Infrastructure
  • Get rid of Template's code
  • Remove "Shared Kernel" as there is no need for such a small project
  • Work with Behaviors
  • Add support of different RSS themes (Mentoring/Info)
  • Add Table for keeping all available themes, and logic to work with them (List of themes)
  • Handle exception when failed to remove
  • Keep and Provide the RSS Headers from Infrastructure
  • Add time of the Insertion for the order
  • Use CI/CD tool to deploy the RSS to Azure
  • Handle the Duplication by using the Link as a "Row Key"
  • Allow to convert HTML to pdf and provide the links to them in RSS. As an option
  • Feed Removal need to clear the PDF file
  • Configure the Pre-Commit checks from here

Structure

I plan the following structure:

  • MVP - a simple example on which I will do the rest of the work
  • SharedKernel - hold common things that is shared by ALL layers. Holds interfaces for Repository, and FeedItem
  • Domain - hold domain logic, models, etc. Should be used only by Application.
    Is it necessary though? It can be moved to Application and made private.
  • Application - hold logic, Interfaces, etc. Used in all upper proj. **
  • Infrastructure.AzureStorage - Database (Table) on base of Azure Storage.
  • Web.AzureFunction - API on base of the Azure Function. Presentation App.
  • Web.AzureFunction.Isolated - same as above, but using the Isolated process. Presentation App.

Description

Domain logic

Works with SyndicationFeed internally to build the desired RSS that returned as XML string.

RSS Headers and Items are provided by Application.

Infrastructure works as persistence Storage.

Headers are hardcoded now, but should be also provided by Infrastructure.

[TBD]

About

Attempt to make an RSS Feeder based on "Clean Architecture"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages