Hacker News new | comments | show | ask | jobs | submit login
Show HN: JSON storage bins with schema validation (npoint.io)
74 points by azirbel 88 days ago | hide | past | web | favorite | 19 comments



Hi HN! This is a side project I've been working on for a while now.

It's similar to https://jsonbin.io (which was an inspiration!), but focuses on the second step of prototyping with data - once you're editing JSON online, how do you make sure you don't break your app? npoint.io lets you enforce a structure using JSON schema (http://json-schema.org).

More background info: http://alexzirbel.com/npoint

Also, it's open source! https://www.github.com/azirbel/npoint

All feedback is super welcome. Also happy to answer any questions here.


Could you add that to your FAQ? I was like, what the heck is a json bin, what is actually validating this schema, is this something I run on my machine or in the cloud, is this self-hostable, how am I supposed to actually use any of this, what am I suposed to use it for, etc. Cloning jsonbin's about page would be great.


Sounds like the homepage copy could use some work. Thanks for the list of questions you had, that's very useful. jsonbin definitely does a good job of explaining it.


I'm getting http 500 internal server errors if the api attempts to access objects that don't exist.

https://api.npoint.io/doesnotexist


Looks nice. Having the immediate "Click here" that leads into the edit page with the double paned edit window is particularly cool.

Watch out with providing a hosted version of something like this with totally untrusted user input. JSON schema allows for arbitrary regexes for field validation which means a malicious user could easily bring down the site with a nasty regex[1]. Not a concern for anything privately hosted but sadly there are plenty of jerks in the world.

[1]: https://www.owasp.org/index.php/Regular_expression_Denial_of...


Ouch, that would suck. Thanks for the heads-up.


"Once a bin is locked, it cannot be deleted and none of its data can ever be changed."

I can understand why there is good reason for the data to never change, but if your product gets popular, or you are unlucky, then this could turn out to be a bad design choice i.e. Bob copies and pastes data containing customer PII in instead of the data they meant to include.

An option for data to be deleted, even if it's after multiple prompts, or a streamlined support flow.


That's a good point. Since I don't have that feature, I'll be happy to remove data manually if it ever comes up.


In light of the upcoming GDPR laws in Europe and the right to be forgotten, that’s quite short sighted and could stop a number of developers using your system- I know I certainly couldn’t use it without this available via API or console


interesting - If I understand it right, I ran into a possible use-case for n:point recently...

I was building a pretty simple charting app that used React and Redux, so the structure of a chart was 100% defined via a JSON "state".

I didn't want to bother with a server so I just stored the state in browser localstorage.

BUT when I put the app online via static hosting, I needed to give users a way of deeplinking to and sharing a diagram they created.

Could I use n:point via API to set and get json state and then add your identifiers in an anchor tag like:

http://my-static-chart-app.com/#4aed7cea56ece156c705


That sounds like a perfect way to use it.

Here's an example of charting data, using npoint.io as the data storage "backend":

https://beta.observablehq.com/@azirbel/npoint-io-charting-de...

If you made a charting app that used an anchor tag to load data like you described, and made the resulting chart embeddable, I'd actually be interested in using it to power charts in blog posts. Cool idea.


Interesting idea. I read your blog post on the project, and understand your point on user management. I've hit the same stumbling block with projects I've been working on -- too much time spent on user management. There seems to be few off-the-shelf solutions for writing user management for SPAs and everyone recreates the wheel.


neat, i like the design. Just wondering how would you monetize such an app. maybe you can add ads here and there.


Easy - I'll just inject text-based ads into the saved data!

(Kidding, of course...)

I think it's unlikely that this site can be monetized, so I don't have my hopes up. The clearest direction would be to move up the "backend-as-a-service" spectrum into Headless CMS land (which I have a diagram for here: http://alexzirbel.com/npoint). But I think it would be hard to balance that with the quick setup / unstructured data nature of the project.

One feature (maybe a premium feature) I'd love to add is form-based data editing. Theoretically you could generate the right kind of input fields (text, date, number) from the JSON schema and expose that as alternative editing interface. That would make the tool more like a CMS.


For my side project, I've been coming at essentially the same problem from the CMS angle. n:point is very neat by the way - great job!

I'm building a service that makes it possible to quickly create reusable content objects using Trello. The flow is: you write your content objects as cards in Trello, then you hit my service to get an array of self-contained JSON objects.

In terms of monetization, I'm building the service on stdlib.com. This means that I can charge a very small fee for each API request. (My service is not intended to be called from front end code.) Each user will also have an allowance of free calls. And I've already open-sourced the core functionality [1]. Definitely open to suggestions on this approach, though.

I keep thinking about adding support for schema validation. Your project has given me more to think about on that front! However, my immediate goal is to get the MVP ready to share.

Right now the MVP is live, but the landing page is not done yet. Feel free to get in touch if you're interested in more details - my email is in my profile.

[1]: https://github.com/dwilding/trello-kb


Maybe this can help:

http://schemaform.io/examples/bootstrap-example.html

It's quite cool actually (depending on how much you love/hate Angular though).

Something like that might be good to have as a premium feature, albeit I would think not something you could charge an arm and a leg though... or perhaps you can, if you add something like schema versioning perhaps?


Random question... where did you get the art you used to make the website? Did you do it yourself?


Made it myself in Sketch! It took me forever, I'll probably find a real illustrator next time.


The art is actually really nice. Great job on the clear landing page, and thanks for sharing!




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: