Code Monkey home page Code Monkey logo

nova-documentation's Introduction

Documentation tool for Laravel Nova

Latest Version on Packagist License Total Downloads

This is a tool for Laravel's Nova administrator panel that allows you to create markdown-based documentation for your application; without having to leave the Nova environment.

Screenshot

Features

  • Parses each markdown document and renders them in the Nova dashboard
  • Dynamic page titles: Each h1 tag (# title) is set as the page title
    • Each page title is then used to construct a sidebar, allowing for navigation through your documentation.
    • Allows for nested directories
  • Supports YAML parsing to further customize page titles
  • Syntax highlighting for code blocks (via highlight.js)
  • Replaces local links within the body content to work within the Nova environment.
  • Supports Laravel Nova Responsive Theme

Installation

You can install the package via composer:

composer require dniccum/nova-documentation

You will then need to publish the package's configuration and blade view files to your applications installation:

php artisan vendor:publish --provider="Dniccum\NovaDocumentation\ToolServiceProvider"

Finally, you will need to register the tool within the NovaServiceProvider.php:

use Dniccum\NovaDocumentation\NovaDocumentation;

...

/**
 * Get the tools that should be listed in the Nova sidebar.
 *
 * @return array
 */
public function tools()
{
    return [
        // other tools
        new NovaDocumentation,
    ];
}

Upgrading from version 1

If you are upgrading from version 1, you will need to do the following things:

Add YAML configuration

If you published the configuration from this package using the vendor:publish command, you will need to add the following code your novadocumentation.php configuration file's array:

'parser' => env('NOVA_DOCUMENTATION_PARSER', 'yaml'),

Set environment variable

If you are planning on not refactoring your markdown files to NOT take advantage of the new YAML configuration options, you will need to either modify your configuration file accordingly, or simply set the following environment variable:

NOVA_DOCUMENTATION_PARSER=markdown

Remove dashed horizontal rules

If you have any --- horizontal rules in your markdown files and your are using the yaml parser, you will need to convert those to use *** instead as this will cause the YAML processing to error.

Using this tool

  • After all of this tool's assets have been published, there should be two .md (markdown) files placed within a documentation directory at the base of your resources directory.
    • If you would like to change this directory, change the config('novadocumentation.home') configuration definition.
    • By default, the "home page" entry point is home.md. Again if you would like to change that, be sure that you alter the config('novadocumentation.home') configuration.
  • If using the markdown setup, the sidebar navigation is constructed using two different elements: the name of the file and the title of within the file. This title is dynamically pulled from the first # title in each file.

Page YAML configuration/customization

If you are using the yaml parsing method, you have the OPTIONAL ability to customize how each page is built and shown within the sidebar. You can modify the following attributes:

  • title - The title of the page within the sidebar
  • path - The path/route/link of the page. Provide a valid URL
  • order - The order in which this page will appear in the sidebar

Adding configuration to your pages

If we wanted to customize a page of documentation we would need to add the following content to the top of the page:

---
title: "Adding Content"
path: content
order: 2
---

# Adding content to your application

...

The important thing to note is the --- element wrapping the configuration. This will not work if this is not in place. The title should be pretty self-explanatory. The path allows you to customize the route to the page.

Linking

If you would like to link to other markdown files within your body content, outside of the sidebar, be sure to use relative links that DO NOT begin with a forward slash, like so /relative. For example if you are linking from the home page to a sub-directory based file called authentication, you would link to it like so:

[authentication](authentication/base.md)

The tool will dynamically replace this link.

Relative links

If you would like to include a relative link to another location within your application or Nova itself, include a link that is prefixed with a forward slash (/), like so:

[terms and services](/terms-and-services)

Other types

Other types of links that are supported:

  • Mailto (mailto:) links
  • External http and https links

Configuration

The configuration items listed below can be found in the novadocumentation.php configuration file.

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Title
    |--------------------------------------------------------------------------
    |
    | The name/title of this tool that will appear on the home page and within
    | the navigation.
    |
    */

    'title' => 'Documentation',
    
    /*
    |--------------------------------------------------------------------------
    | Parser
    |--------------------------------------------------------------------------
    |
    | Set the parser that you would like to use to parse your documentation.
    | It is recommended to use the "yaml" parser as it allows for further
    | configuration, but may not be as user friendly to all devs/users.
    |
    | Available parsers: yaml, markdown
    |
    */

    'parser' => env('NOVA_DOCUMENTATION_PARSER', 'yaml'),

    /*
    |--------------------------------------------------------------------------
    | Markdown Flavor
    |--------------------------------------------------------------------------
    |
    | The flavor/style of markdown that will be used. The GitHub flavor is the
    | default as it supports code blocks and other "common" uses.
    |
    */

    'flavor' => 'github',

    /*
    |--------------------------------------------------------------------------
    | Home Page
    |--------------------------------------------------------------------------
    |
    | The markdown document that will be used as the home page and/or entry
    | point. This will be located within the documentation directory that resides
    | within your application's resources directory.
    |
    */

    'home' => 'documentation/home.md',

];

License

The Nova Documentation tool is free software licensed under the MIT license.

Credits

nova-documentation's People

Contributors

dniccum avatar laura-richer avatar adriaanzon avatar collins0492 avatar calvinps avatar potentweb avatar

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.