
Show HN: JSON storage bins with schema validation - azirbel
https://www.npoint.io/
======
azirbel
Hi HN! This is a side project I've been working on for a while now.

It's similar to [https://jsonbin.io](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](http://json-schema.org)).

More background info:
[http://alexzirbel.com/npoint](http://alexzirbel.com/npoint)

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

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

~~~
peterwwillis
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.

~~~
azirbel
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.

------
koolba
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...](https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-
_ReDoS)

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

------
zerkten
"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.

~~~
azirbel
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.

~~~
ak47-1984
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

------
andrenotgiant
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](http://my-static-chart-
app.com/#4aed7cea56ece156c705)

~~~
azirbel
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...](https://beta.observablehq.com/@azirbel/npoint-io-charting-demo)

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.

------
baus
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.

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

~~~
azirbel
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](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.

~~~
dwilding
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](https://github.com/dwilding/trello-kb)

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

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

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

