Coder Social home page Coder Social logo

voltstro / voltprojects Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 1.0 1.08 MB

VoltProjects - An online documentation building and hosting service. Built with ASP.NET Core.

Home Page: https://projects.voltstro.dev

License: GNU General Public License v3.0

C# 84.12% SCSS 4.39% TypeScript 1.96% HTML 5.86% Dockerfile 0.81% Python 2.78% Shell 0.08%
asp-net-core csharp documentation documentation-tool dotnet

voltprojects's People

Contributors

dependabot[bot] avatar voltstro avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

bagmazz

voltprojects's Issues

[Feature] Sitemap and robots.txt

Sitemap and robots.txt

A sitemap and robots.txt need to be included.

Details

Sitemap

  • A sitemap file will help with search engines crawling VoltProjects
    • DocFX v3 currently doesn't generate one, so we probs need to add that our selves.
  • Index sitemap should link to each project's sitemap (If it has one, display a warning if it doesn't)

robots.txt

  • robots.txt will tell search engines what pages to crawl.

[Feature] Social Media Links

Social Media Links

Add social media links to the footer, as well as to the developer section.

Details

Icon package will need to be used for the social media icons. Bootstrap Icons will most likely be used.

[Feature] 2.0 TO-DO Changes

This issue tracks what needs to be done in VP 2.0.

(I been very bad and haven't included everything that has been done to VP 2.0 in this issue, since the scope has changed so much, and only now has been pretty much set.)


Builder

  • Manage Git Repos
  • Execute Pre-Build Commands
  • Pre-Build Commands Order
  • Description Extraction
  • Assets Handling
  • Improve upsert commands generation
  • Check repo Git hashes

Server/Client

  • Git Repo BTN in top right corner
  • Open Current Doc in Git
  • Better redirections
  • Better Error Page
  • Breadcrumbs
  • Sitemap.xml
  • Caching of Project Menu and TOCs
  • FiraCode Monospace Font (I like it)

Database

  • Pre-Build Commands Order
  • Breadcrumbs
  • Use more 'postgres' naming style

[Feature] Setup CI

Setup CI

Details

We need to configure GitHub actions to build the projects on push/PRs.

[Feature] Project information

Project information

For each project VoltProject has, display some information

Details

Where each project is displayed, show the project's motto under the title.

Page Storage Items Generalization

Page Storage Items Generalization

Project pages currently support automatically uploading images as an external item and changing the img URL to the public URL of the storage item.

Support for other file types (such as JS) on <script> need to be added.

[Feature] 2.1 TO-DO Changes

Stuff that will hopefully be done for 2.1.


Builder

  • Support for docfx 2.0
  • Tracing
  • Pages track what pages are using what storage items
  • Support for "External Items"
  • Current page's git link

Server

  • TOC Improvements
  • Re-redirects for "External Items"
  • Metabar
  • Open current page in git
  • (Possibly) Share page button

Database

  • DB timestamps
  • upsert_project_pages does not update all properties on update

Seperate name and display name and filter case-insensitive

Currently, project filtering is case-sensitive. If a user visits https://projects.voltstro.dev/UnityWebBrowser all is good, the project page will load, but if a user visits https://projects.voltstro.dev/unitywebbrowser, VoltProjects will come back with a 404 error.

image

This is happening because the unique name column is what is used for getting what project a page belongs to. The name column is also currently used for display reasons.

image

Normally, to compare strings Case-Insensitive, you use .Equals(comparing, StringComparison.InvariantCultureIgnoreCase), but with EF, that does not work, as we need to use Collations.

MkDocs Support

MkDocs Support

Support for MkDocs should be added. Currently, Pootis-Bot V1 docs use MKDocs, and VP doesn't support it as a builder.

Issues

It appears MkDocs doesn't have any per page JSON "models" (like docfx), it does however output a site/search/search_index.json file, which contains each page and their content, per sub-heading. The output content is also sometimes not complete, like with Pootis-Bot's custom download page.

It would be handy if each page outputted a single json file, with it's details. MkDocs does support custom plugins, perhaps a custom one could be made?

[Feature] Ascii Logo Art

Ascii Logo Art

Display an ascii logo on start. Very important.

Details

Display "VoltProjects" in ascii art form in the logs/console when the server starts.

This is so VoltProjects is consistent with the rest of my projects. We are doing this because we can :-)

[Feature] 404 Error Page

404 Error Page

On a 404 error, display an error page.

Details

When a 404 error occures, display an 404 error page, with something like "IDK what that file is".

If it is an unknown project site, maybe display an "Unknown project site".

Docs Search

Docs Search

The ability to search across doc pages. Currently you can only search across articles via the TOC's search, which searches across the current TOC page titles on the client side.

We want the ability to search docs, both via it's title and content. Postgres has good full text searching, which also handles our content field holding HTML content very well. It also means not running/using an external service for search.
Text-Search types in postgres need a regconfig value, containing a configuration for a language. While VP doesn't have proper support for multi-language, we still want to keep project_pages multi-lang, to not make future life harder. The index that is needed for good performance TS in postgres can pull it's config from a column. We can't use subqueries in indexes, so a column will need to be added to project_pages.

Tasks

  • Add language_config of type regconfig to project_pages. This value shall be provided by a new column in language called configuration.
  • Add new index to project_pages for search vector
    CREATE INDEX ix_project_page_search_vector ON public.project_page USING gin (to_tsvector(language_config, content));
  • UI - To be designed still

[Feature] Home/About Pages

Home/About Pages

Details

Home Page

Home page should list all projects that VoltProjects has.

About Page

Give some detail into what VoltProjects is.

Upgrade to .NET 8

Issue to track upgrading VoltProjects to .NET 8.

No build issues on .NET 8 (as expected).

Packages

Main critical packages that also need .NET 8 releases:

  • Microsoft.EntityFrameworkCore
    • Related buddies (Tools, etc)
  • Npgsql.EntityFrameworkCore.PostgreSQL (Release candidate for .NET 8 is out)
  • EFCore.NamingConventions (Release candidate for .NET 8 is out)
  • DistributedLock.Postgres

Notes

  • DistributedLock.Postgres does not work with .NET 8 version of Npgsql.EntityFrameworkCore.PostgreSQL due to breaking changes in Npgsql. Issue was fixed in DistributedLock.Postgres 1.0.5
  • Npgsql.EntityFrameworkCore.PostgreSQL needs EnableDynamicJson() to be called now, to allow JSON. To support this, AddNpgsqlDataSource was added. This for whatever reason broke dbContext.Database.GetConnectionString();, which now returns everything except the password key now. To fix this issue, dbContext.Database.GetDbConnection(); was used, and the connection was passed onto PostgresDistributedLock instead.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.