Giter Site home page Giter Site logo

jasper-render's Introduction

Hi there ๐Ÿ‘‹, I'm Marcus

an all-round IT professional who loves solving diverse and complex problems

  • ๐Ÿ’ป My expertise spans a broad range from 3D games to data processing and IoT projects

  • ๐Ÿ”ฌ In my free time I learn new technologies by working on pet projects. I built a digital Shadowrun 6 character sheet to learn VueJS and a complexity poker app to experiment with Rust and Svelte.

  • ๐Ÿ” I also built and am still extending keedrop.com, a tool that helps you to avoid posting passwords via plain-text chat

  • โŒจ On top of that, I like contributing to open-source software to improve the overall quality of digital ecosystem

My preferred languages & tech stack components:

kotlin rust linux svelte typescript aws html5 postgresql rails redis nginx vuejs

milgner

jasper-render's People

Contributors

milgner avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

jasper-render's Issues

Docker support

It might be useful to add a Dockerfile that builds a container image with all reports, fonts etc and that can be easily deployed.

Details will have to be eked out. It could statically generate the fonts extension as described in #8, too.

Report versioning

Over time a report might evolve and receive new properties, fields or rename any of these.

For this, it would be useful to support multiple versions of one report.
Exact requirements & API still TBD.

Authentication Support

It should be possible to check whether the client is authorized to render reports.
It could be either a fixed, pre-shared token or a JWT for which the public signing key is set up in the configuration.

Add request validation

This is a possible approach:

  • check the existence of the report name and return 404 if not found
  • check the JSON so that it
    • contains the report name as top-level key
    • contains a key for all report parameters that don't have a defaultValueExpression set
    • contains an Items key (even if it might be an empty array)
    • does not contain any other keys that can't be mapped to a report property
    • return 422 if any of these conditions aren't met
  • check the existence of the letterhead, if specified, return 404 if not found

API to upload new reports & report versions

Might be nice, but I'm not sure whether it's required or whether it just creates potential for unexpected behaviour. If the report structure changes with the new upload, it might result in other clients that are trying to process a request while the upload is happening unable to handle the render.

This would require versioning first. See #13

Batch rendering support

It might be useful to render different reports in a batch, returning a concatenated PDF from all reports.
In that case, instead of receiving a simple JSON object in the form of

{
  "reportName": {}
}

which is sent to /render/:reportName, it would receive

[
  {
    "reportName": {}
  },
  {
    "anotherReportName": {}
  }
]

to a separate /renderBatch endpoint.

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.