Git Product home page Git Product logo

null-cms-website's People

Contributors

abhisek avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

null-cms-website's Issues

[RFC] Proposal for null Content Management System

Problem

The current null portal at https://null.community is powered by Swachalit which designed primarily as an event management and automation system. It is NOT designed for content management, hence it causes friction and blocker when being used to manage content.

Goal

Adopt a technology to ease development, management and publishing of content for null community. The content may include

  1. Guidelines / Information about null Community
  2. Projects
  3. Research Papers
  4. Community Connect (Communication mediums)
  5. Etc.

Refer to null Documentation Project for some of the content created by the community so far.

Design goal for this system includes specifically:

  1. (Content) Developer Experience as a first class citizen with minimum friction
  2. Anyone can contribute but only maintainer approved content is published to null contents website
  3. Low cost hosting and delivery at scale
  4. Support static content including rich text, binary contents (images, uploaded files) and optionally dynamic content through JS
  5. Encourage DRY by leveraging structured data files (JSON/YAML) or remote sources (REST API)

Proposed Solution

Adopt a static content management (website generator) based on markdown and related content such as hugo or alternatives with GitOps as the change and release management workflow.

Content Guidelines

Refer to Diátaxis as a framework for technical documentation. In this line, any content can be categorized into one of the following

  1. Tutorial
  2. How-to
  3. Reference
  4. Explanation

While this categories may appear as a limitation of the type of content that can be published, in reality content can be categorized within these broad categories. This model will also bring some sanity and coherence in the type of content published.

Any content developed must have an associated tag to identify the category of the content.

Don't Repeat Yourself

If there are any page that publishes extendable lists such as member list, project list etc. then instead of creating markdown tables or repeating content, consider separating the data from rendering concerns. For example, the data can be defined in a structure file such as members.json or members.yaml and the members.md page can refer to the data to uniformly render the list. This makes it easy to add a new item.

Note: Consider the case where such data may come from a remote REST API e.g. Swachalit

Content Structure

- Index / Root
- docs
  - projects
    - Tools Catalogue
    - Project2
    - Project3
  - about-null
    - About Null
    - How to Join the Community
    - How to Start a Chapter
  - Events (Link to swachalit)
  - Community Connect
    - Discord Information
    - Google Group (Mailing list information)

The above structure is for content management only and not for visualization.

Content Website Generation

Generate a browseable and aesthetically pleasing (or not) website using a static website generator tool based on the document source of truth.

Change Management

  1. main is the central branch and will be configured as protected and will be the single source of truth
  2. Maintainers can merge a PR in main after 1 approval
  3. Leverage Teams and CODEOWNERS for managing maintainers and auto-assigning PR to the maintainer team
  4. Adopt Fork and Pull Request Workflow for contributions
  5. Implement appropriate CI action for PR correctness verification

Release Management

  • Merge to main will trigger CD workflow to build and publish website
  • No development or staging environment is required for static content publishing

Technology Choice

Options

Static Website Generator

CI/CD

  • Github Actions

Content Hosting and Delivery

Way Forward

  • Finalise technology for static content generation
  • Finalise technology for static content hosting
  • Finalise domain for static content website @makash @prashant3535
  • Develop website generator based on identified technology
  • Develop or migrate content to this CMS
  • CI / CD on-boarding of this repository for content publishing
  • Integrate reference link in Swachalit and vice-versa

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.