Skip to content
This repository has been archived by the owner on May 6, 2024. It is now read-only.

Refactor of PlanetXamarin #733

Open
Cheesebaron opened this issue Mar 30, 2022 · 19 comments
Open

Refactor of PlanetXamarin #733

Cheesebaron opened this issue Mar 30, 2022 · 19 comments

Comments

@Cheesebaron
Copy link
Member

Cheesebaron commented Mar 30, 2022

PlanetXamarin is due for a refactor and I have some ideas which would make the experience of adding authors and creating feeds much better, without having to re-deploy the site every single time.

The overall idea is to use something like Azure Functions or it could even be a GitHub Action on a timer. This timed mechanism should grab the latest authors and crawl their sites to generate and publish the feed for PlanetXamarin into some public URL.
This would be much nicer as the feeds would then stay up to date automatically and always ready to be consumed. Today the feed is generated on-demand when someone hits the /feed endpoint and can take a while, sometimes timing out depending on browser settings.

The latest authors would just live in a GitHub repository like always, but just be in a serializable format to easily process by both the web site, but also the function that generates the feeds.

So the source of truth will always be in the repository and not compiled into the deployed web application. Both for the feed and the list of authors.

I've been prototyping this previously with Azure Functions + Azure Blob Storage and have these feeds running right now:

https://planetxamarinfeedstorage.blob.core.windows.net/feeds/feed.mixed.rss
https://planetxamarinfeedstorage.blob.core.windows.net/feeds/feed.en.rss
https://planetxamarinfeedstorage.blob.core.windows.net/feeds/feed.es.rss

And also added a mechanism to transform the classes we have that are baked into the web app into json files.

So this way we could more or less have the website be static for most content and we would rarely need to touch the code and re-deploy, but just serve the feeds from some kind of storage mechanism.

@jamesmontemagno
Copy link
Member

yes, yes, and yes, would love to have the website be an Azure Static Web App to be honest leveraging Blazor.

@jamesmontemagno
Copy link
Member

I think it is time for it to be "Planet .NET" as well

@jamesmontemagno
Copy link
Member

@Cheesebaron I own planetdotnet.dev

@mabroukmahdhi
Copy link

What about the domain planetof.net ? :D

@mabroukmahdhi
Copy link

I think it is time for it to be "Planet .NET" as well

@jamesmontemagno
Blazor would be great for this, maybe with .NET MAUI Blazor for the mobile version?!

@jamesmontemagno
Copy link
Member

@Cheesebaron how do you feel about moving forward on this and then changing it to be Planet .NET and then we have category filters as well we define?

@Cheesebaron
Copy link
Member Author

@jamesmontemagno sounds good to me.

What would these categories be? Categories for different parts of .NET authors write about?

@jamesmontemagno
Copy link
Member

jamesmontemagno commented Apr 19, 2022

I think categories could be nice.... like if someone is only interested in ASP.NET Core for example....

We could keep it simple though....

  • Web
  • Mobile
  • Desktop
  • Microservices
  • Cloud
  • Machine Learning
  • Game Development
  • IoT

.NET MAUI would fit under Mobile & Desktop.... thoughts?

Else I would do:

  • ASP.NET Core
  • Web APIs
  • Blazor
  • Microservices
  • .NET MAUI
  • Windows Forms
  • WPF
  • Xamarin
  • Cloud
  • Machine Learning & AI
  • Game Development
  • IoT

@mabroukmahdhi
Copy link

@jamesmontemagno
What about categories and subcategories?

Something like:

  • Web:
    • ASP.Net
    • ...
  • Mobile:
    • Xamarin
    • .Net Maui
      Etc.

@Cheesebaron
Copy link
Member Author

How would these be matched? From tags authors put on their posts, or some fixed data we know about the author?

@jamesmontemagno
Copy link
Member

Hmmm good question..... Maybe we do some special stuff on the website that has tags and then it creates special feeds for tags that people have... Hmmmm

I say make it easy to start and just do a single feed lol.

@mabroukmahdhi
Copy link

@jamesmontemagno
Copy link
Member

can we get @mabroukmahdhi and @Cheesebaron to contribute the functions here. @jongalloway and I will be working to convert this to planet .net over the next month or two and getting things ready. if you have the code then it will help us out ;)

@jamesmontemagno
Copy link
Member

I created a new repo for the functions backend: https://github.com/planetxamarin/aggregator-functions

will be easier to deploy

@jamesmontemagno
Copy link
Member

Also a new repo for the front-end https://github.com/planetxamarin/planet-dotnet

@mabroukmahdhi
Copy link

can we get @mabroukmahdhi and @Cheesebaron to contribute the functions here. @jongalloway and I will be working to convert this to planet .net over the next month or two and getting things ready. if you have the code then it will help us out ;)

@jamesmontemagno
I actually converted the 99% of it to Blazor WASM. You can check the code here and the preview here.

@mabroukmahdhi
Copy link

We need to copy the source in order to delete it from my repo.

@Cheesebaron
Copy link
Member Author

There's a bit of setup needed for my function in terms of storage. Right now I use Blob Storage of the periodically generated feeds, but shouldn't be hard to setup with CI and some secrets.

I'll prepare a PR 👍

@jamesmontemagno
Copy link
Member

Sounds good! we can deploy a new site and backend and test it and then i can swap over teh DNS stuff. I can setup secrets for deployment as well :)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants