A web application that curates various media sources, implemented with "ASP.NET Core Web App". It aggregates media sources such as podcast channels, YouTube videos, and blog posts (RSS feeds) and populates recent items.
Table of Contents
Warning
This repository represents a technical exercise I undertook early in my ASP.NET learning journey. At present, it is not fully operational or finalized. However, I may choose to revisit and further develop it in the future.
This project is intended as a hobby project on which I tried various developing techniques. The intent is to develop a comprehensive media aggregator as a web app that curates various media sources.
Web app aggregates media sources like podcast channels, YouTube videos, and blog posts and populates recent episodes (items/articles).
It is implemented as a simple media reader in ASP.NET Core (Model-View-Controller) with .Net 7.0 and Entity Framework Core 7. For GUI, Bootstrap 5 and some icons from Font Awesome 6.
I have tried to separate the data layer into a stand-alone project FeedDataLibrary with a repository pattern and MVVM approach. However, I have not grasped these concepts appropriately yet, so it need further refactoring.
There are currently some bugs and not implemented features. Some of them are marked in a comment with TODO tag .
- ASP.NET Core Web App (Model-View-Controller)
- .Net 7.0 (LTS)
- Entity Framework Core 7
- Microsoft SQL Server
- Bootstrap 5
- Font Awesome 6
To get a local copy up and running follow these simple example steps.
- Install .NET 6 (SDK and Runtime) from https://dotnet.microsoft.com/en-us/download/dotnet/6.0
- Install powershell global tools
dotnet tool install dotnet-ef -g dotnet tool install Microsoft.Web.LibraryManager.Cli -g
- Install Microsoft SQL Server from https://www.microsoft.com/en-in/sql-server/sql-server-downloads
- Clone the repo
git clone https://github.com/jackie4u/dime-pub.git
- Enter the name of your SQL Server in
appsettings.json
and eventually change the database name and security
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DimePubConnection": "Data Source=<SQL Server>; Initial Catalog=DimePubDb; Integrated Security=True"
}
}
- Initialize database
cd FeedDataLibrary/dime-pub
dotnet ef --startup-project ../DimePubWeb database update
- Run the application
dotnet run
The content of the web app focuses on aggregating various media sources (currenlty only via RSS feeds).
- The index page lists all episodes (articles)
- If you are on a different page click on "Episodes" link in the top menu
- By default, there are shown only the latest 10 episodes - for older episodes follows page numbers at the bottom of the page
- To filter episodes (articles) by date choose the date range from the top header and press "Filter"
- To Reload all episodes (articles) from all podcasts (feeds) press the button "Refresh all"
- To list all sources click on "Sources" link in the top menu
- To filter sources by title enter string into the search textbox and press "Search"
- To check the detail of the selected source and list all episodes (articles) in that source click on the "Detail" link in the "Sources" table
- To delete a source click on the "Delete" link in the "Sources" table or the "Delete" button on the source detail page
- To Reload articles in selected source press button "Refresh" on the source detail page
- click on "Add new source"
- enter the "Source URL" of your favourite media source - for example, Coding Blocks at "https://www.codingblocks.net/podcast-feed.xml"
- optionally add your custom "Source Note"
- press the button "Save new source"
- Implement about page
- Improve graphic design
- Add checkboxes for deleting multiple sources from the source list
- Add button for checking all checkboxes
- Implement error handling
- Add sorting to list views and tables
- Add sorting to sources
- Add sorting to episodes
- Implement IsRead flag
See the open issues for a full list of proposed features (and known issues).
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the GNU GENERAL PUBLIC LICENSE v3 License.
See LICENSE.txt
for more information.
Twitter - @jackie4u
This project is influenced by learning from the great book "Pro ASP.NET Core 6: Develop Cloud-Ready Web Applications Using MVC, Blazor, and Razor Pages" by Adam Feeman(MarkP88).