Giter Club home page Giter Club logo

niapi's Introduction

NIAPI Logo - Light NIAPI Logo - Dark

Project Status
CI/CD Latest Release ci Documentation Building CodeQL
Package PyPI - Version PyPI - Support Python Versions
Quality codecov Coverage Quality Gate Status Maintainability Rating Reliability Rating Security Rating Known Vulnerabilities
Community Twitter
Meta Litestar Framework linting - Ruff code style - Black types - Mypy License - MIT GitHub Sponsors

SonarCloud

niapi - Network Information API

Table of Contents

About

Installation

pip install niapi

Usage

Install the project:

pip install -e .

Run the project:

NOTE: From within the virtual environment

app run -r --debug

Using the CLI:

# via curl
โžœ curl --request GET \
        --url 'http://0.0.0.0:8000/calculator/ip?ip=4.8.15.16&prefix=23' \
        --header 'Content-Type: application/json'
# via App CLI
# TODO
app calculate "10.248.15.39/29"

Using the API

  1. Browse to:
  2. Use the auto-generated API docs to interact with the API

From around the web:

Browse to https://niapi.app/ and use the front page form, API, or curl to interact with the API.

Contributing

See CONTRIBUTING.rst for more information.

Start the app:

app run-all

Start the TailwindCSS watcher:

tailwindcss -i niapi/domain/web/resources/input.css -o niapi/domain/web/resources/style.css --watch

Contributors

License

MIT

Acknowledgements

Screenshots

home.png home-dark.png img.png

niapi's People

Contributors

dependabot[bot] avatar jacobcoffee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

alc-alc

niapi's Issues

Enhancement: Utilize Jinja loops to clean up `partial.html`

In https://github.com/JacobCoffee/niapi/blob/7fa00751763cffc18a1cc59024a999e4b5044858/app/domain/web/templates/partial.html - experiment with passing in the entire network info object and using Jinja template loops to access each member of the object.

We could cut down the LOC here from 100 to ~30

Example

<table class="min-w-full divide-y divide-gray-300 dark:divide-gray-600">
    <thead>
    <tr>
        <th
                scope="col"
                class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 dark:text-white sm:pl-6 hover:bg-neutral-900/40"
        >
            Field
        </th>
        <th
                scope="col"
                class="px-3 py-3.5 text-left text-sm font-semibold text-gray-900 dark:text-white hover:bg-neutral-900/40"
        >
            Value
        </th>
    </tr>
    </thead>
    <tbody>
    {% for data in network_info %}
        <tr class="hover:bg-neutral-900/40">
            <td
                    class="relative py-4 pl-4 pr-3 text-sm sm:pl-6 font-medium text-gray-900 dark:text-neutral-200"
            >
                {{ data.name }}
            </td>
            <td class="px-3 py-3.5 text-sm text-gray-500 dark:text-gray-400">
                {{ data.data }}
            </td>
        </tr>
    {% endfor %}
    </tbody>
</table>

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

Docs: Document API reference


Note

We utilize Polar.sh to engage in regular as well as pledge-based > sponsorship.

Check out all issues funded or available for funding on our Polar.sh dashboard

  • If you would like to see an issue prioritized, make a pledge towards it!
  • We receive the pledge once the issue is completed & verified
  • This, along with engagement in the community, helps us know which features are a priority to our users.
Fund with Polar

Enhancement (UI): Add checkbox functionality

The Options section doesn't have functionality tied to it to selectively show data

image

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

Fix (CI): Fix Snyk

Snyk continues to fail in CI

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

Fix (CI): Fix SonarQube

SonarQube is no longer updating

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

Enhancement (UI): Build and Add Docs Section

  1. Build docs in live deploys
  2. Add Docs link to documentation (docs/_build/html)

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

Enhancement (UI): Fill in missing pages

The following pages are missing but have links in the UI

  • About
  • open-source/{about,attributions}
  • privacy
  • terms

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

Fix (Docs): Engine Pydantic documentation

napi/docs/autodoc_pydantic.rst: WARNING: JSON schema can't be generated for 'niapi.lib.settings.TemplateSettings' because the following pydantic fields can't be serialized properly: ['ENGINE'].

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

Enhancement: Introduce rate limiting logic

Currently on production deploy, the instance is limited to 512MB of memory.

Investigate solutions to introduce rate limiting or some other mechanism (possibly but least ideal: blocking requests under a certain prefix number... e.g. < /12) to prevent crashing the instance

Funding

  • Want to see an issue completed quicker? Pledge for it!
  • You can sponsor this specific effort via a Polar.sh pledge below
  • We receive the pledge once the issue is completed & verified
Fund with Polar

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.