
Show HN: Make an app by adding JSON to this app - gliechtenstein
https://github.com/Jasonette/JASONETTE-iOS?hn
======
swframe
I've built similar platforms. Naturally, I think they are awesome. They are a
core part of very valuable products like SAP, Salesforce, etc. You will get a
lot of push back from high developers who prefer direct access to the native
api or html. Please don't let them discourage you. My response to them is that
they can build reusable components that are driven by your json layer (win-
win). There are enough developers who will benefit. Try to get funding sooner
than later. I waited too long. You can't keep up building this by yourself.

~~~
gliechtenstein
Thank you for the advice! Honestly it means a lot!

~~~
throwaway43
Don't listen to the haters. This is extremely valuable. Especially in
E-commerce.

Like when you have an ever expanding product line and new categories are being
added all the time. Ever wondered why Amazon uses web views all over ?

Many E-commerce companies would love to be able to do extensive A/B testing or
add analytics on the fly but are crippled by the App store and the limitations
of native apps. Some have even built versions of this themselves.

What we need is an Android port of this and then this will be some hot shit. I
am willing to help on the iOS side in any way I can.

~~~
gliechtenstein
Thank you! Please follow the project and join the Slack channel if you can :)

~~~
throwaway43
But my personal view is that we should support a syntax that is a subset or
derivative of HTML while being performant so that any existing web framework
can generate smooth native apps (while also side stepping Apples rules against
implementing a browser engine :P).

It sounds stupid but I work in E-commerce and have wished for this many times.

~~~
kgc
That sounds like React Native: [https://facebook.github.io/react-
native/](https://facebook.github.io/react-native/)

------
gliechtenstein
Guys, the author here. This is my first open source project and I worked
really hard on it for 5 months.

I think it's really cool, and I hope you guys like it. I would appreciate any
kind of feedback!

~~~
Ecio78
Hi Ethan, it looks very interesting, one feedback and one question: Feedback:
you should try to slow down the gif demos, at least in my Chrome/laptop they
are quite fast and the viewer can't really appreciate it completely

Question: I see that XCode is required, I don't have a Mac only an iPhone).
Any possible way to use Jasonette without a Mac? I've seen some services like
Mac in a cloud but I was more thinking about alternative methods. For example,
as the only setup required is to provide the URL, couldn't you create a
generic Jasonette test/dev app where you can provide the url and do the
testing/development directly only on the json side?

~~~
downandout
You can run the latest MacOS in VMware on Windows. It works perfectly - Google
"VMware Unlocker" as a starting point. This setup actually runs faster than
the older Mac Mini I bought specifically to develop for iOS, and it's
obviously much more convenient to be able to use a Mac from Windows whenever
needed. Both Xcode and a $99 Apple Developer subscription are required if you
wish to distribute the app anyway, so I'd suggest you go the VMware route if
you don't want to buy Mac hardware or use a cloud service.

~~~
Ecio78
I heard that running MacOS on a non-Apple hardware was not considered a legal
solution. Am I wrong?

I thought my idea of having a test Jasonette app where you put the url from
the app after the boot to do your testing could be very easily doable and way
not it could allow also to test the various existing apps that OP created: he
could create a test app that downloads a list of his demo apps (so it is
always up to date), show a dropdown or similar to choose the demo app + allow
you to specify your own custom test url using the keyboard of the device. In
this way you have both a demo and a test application :)

~~~
downandout
IANAL but I'm fairly certain that given Apple's resources, if they wanted to
stop this practice, they'd have obliterated VMWare Unlocker from the map. It's
been around for years, they certainly know about it, and they haven't done
anything about it. So if not expressly legal, they certainly don't seem to
have a problem with it.

------
mpweiher
Instead of JSON, you could also consider sending XML markup. Oh wait, or maybe
reuse an existing SGML/XML standard called...HTML.

And then you could add scripting...

~~~
throwaway43
Hey everyone ,

I've thought of making a Native renderer for some subset of HTML like Google
AMP that would work on both Android and iOS. That way all existing web
frameworks could generate native apps.

But you'd have to do something like this to ensure that you're not breaking
Apples rule of not making your own browser engine.

~~~
mattnewton
Easy- transpile it ahead of time. The ban is on runtimes.

------
ajhit406
I found it interesting that the author has actually submitted the same idea 4
times to varying degrees of interest:

[https://news.ycombinator.com/submitted?id=gliechtenstein](https://news.ycombinator.com/submitted?id=gliechtenstein)

It’s easy to forget that good ideas take a lot of time and iterations until
they become magical. Great things do not happen overnight and without much
sacrifice. The majority of people would give up the first time the community
dismissed their prototype.

Big props for not giving up.

~~~
v512
Exactly my thought. You need a bit of luck along with good project to get
viral on HN. Otherday I saw simple PDF memo generator got lots of traction
while so many other cool apps didn't even surface up.

------
vvanders
Very cool.

For what it's worth most med-high profile games are built on similar
techniques albeit at a larger scale. You're largely building tools and
reusable components that let designers, artists and animators define behavior,
look & feel.

It goes by a couple different names but the most common one I see is "Content
Driven Development". As you've noticed it has all sorts of benefits like fast
iteration time, updates on the fly and ability to allow non-coders to bring in
their perspectives to build experiences.

Don't let the ivory tower haters get you down, it's a very powerful and valid
approach in the appropriate domains.

~~~
gliechtenstein
Thank you for the encouraging words!! { ˃̵̑ᴥ˂̵̑}b

~~~
hakcermani
Taking this a step further, perhaps this can become a quick mock up tool ?

------
hex13
Been there, done that. When I coded games, I made some simple JSON based file
format and almost whole game was in form of JSON. I even implemented
conditional and loops in JSON.

But It can easy lead to inner platform effect. Not needed complexity. And in
JSON you can't write JS code (needed for e.g. event handlers).

So I switched to JS. Still data-driven approach (simple hierarchical objects
with data), but with power of JS (and if you're use Babel, you could use JSX
for your DSL).

So: I don't think JSON is best format for what you try to achieve. It's just
so limited.

Besides what is added value of Jasonette? When I look on Jasonette I have
feeling that it's just reinvents ReactJS but in JSON not JSX. Not sure if
there is much profit with JSON format alone.

~~~
gliechtenstein
[https://jasonette.github.io/documentation/actions/](https://jasonette.github.io/documentation/actions/)

~~~
hitekker
Please consider reading this.

[https://en.wikipedia.org/wiki/Inner-
platform_effect](https://en.wikipedia.org/wiki/Inner-platform_effect)

I, too, went down the path of JSON -> Compiler -> Code, and I essentially just
made a worse version of what I was looking to simplify.

~~~
gliechtenstein
Thanks for the article. I am sorry to hear what happened to your project, but
I think, in my case because I didn't build this from scratch, but it was
extracted out from an existing app, I was able to get this to a point where
I'm very satisfied with the result.

My goal was to make something that will help myself build, iterate, extend my
existing app much faster, and it really did, so that's when I realized it
would be great if I can open this up so others can use it as well.

To be more specific, nowadays I can build, iterate, and extend apps
significantly faster, as in what used to take couple of days I can now build
in 30 minutes. Maybe it's just me but I'm sure if I can do it, anyone can do
it.

------
mentos
Really great stuff!

What is the most advanced application you have created with this? What
functionality do you think is still lacking?

If you were to try to create a full featured app I imagine you'd find that
working in Swift is the better option.

What this reveals to me is that the App Store submission and update process is
so time consuming you would rather write your logic in Json than in native
Swift/ObjC.

If Xcode let you instantaneously push app binary updates would this be as
useful?

~~~
gliechtenstein
There's an issue thread where we're discussing this:
[https://github.com/Jasonette/JASONETTE-
iOS/issues/4](https://github.com/Jasonette/JASONETTE-iOS/issues/4)

~~~
mentos
The advantages of creating your own wysiwyg editor is that you can control
exactly what functionality Jasonette supports and allow developers to create
views across different platforms (right now Xcode is Mac only). But have you
considered starting with Interface Builder and creating a tool to convert IB
views to JSON? Interface Builder is home to a lot of developers who already
understand how to use that tool, asking devs to work in a new half baked
editor would probably be frustrating and add more complexity/moving parts
which is your enemy as a new project/endeavor.

If you create a tool that just converts IB views to JSON you can demonstrate
progress much faster and learn and experiment with what the requirements of
the final editor are. It will be much easier to stand up and way less effort
than maintaining your own editor codebase while the project is young. Your
time is the most valuable thing you have so don't spend it creating a new
editor which could be its own project in itself. You want to put it towards
expanding missing functionality between JSON and native components. One day
when you find success and if you really still need to limit the user you can
move all the functions you made for converting Interface Builder views into
your own custom editor.

I think first thing I would do is take a very complicated interface view from
a native project and analyze the view hierarchy and report errors to the user
like "Warning: Nested UITableViews are not supported in Jasonette", "UIButton
delegate will be ignored", etc. Then once you create this sort of 'unit test'
that the IB is well-formatted you can then go about exporting it to JSON.

There may be a world where you actually are able to use all of the
functionality of IB and don't ever have to have your own editor.

~~~
gliechtenstein
Interesting, I haven't thought of that idea. I'll make a note so when we get
to it we'll make sure to look into the option. Thank you so much for the
advice!

------
felipeccastro
This is very interesting, although JSON is not a very comfortable format to
build manually - I think writing in YAML or CSON would be much cleaner to
read/write, and easily converted to JSON. Also, any plans on building a UI for
generating this JSON? If you have predefined components, you could make some
sort of designer that builds the JSON for the user, that could turn into a
commercial project I think.

~~~
SparkyMcUnicorn
Transpilers should be pretty straight forward. Maybe even for HTML syntax.

~~~
gliechtenstein
Yeah we were actually discussing whether we should support HJSON natively or
not [https://github.com/Jasonette/JASONETTE-
iOS/issues/5](https://github.com/Jasonette/JASONETTE-iOS/issues/5)

But as for HTML, I decided to incorporate it natively because it's def worth
it:
[https://jasonette.github.io/documentation/templates/#html](https://jasonette.github.io/documentation/templates/#html)

------
oliv__
Wow this is really impressive.

If you had enough JSON-to-native "modules", basically anyone could write a
native app in a few hours (since functionality in most apps is pretty much
standard stuff)!

Hell, if you pushed this further you could create an app store for code,
letting you buy additional modules to plug into your app like lego.

------
libeclipse
Wow that is actually a brilliant idea. Would you ever consider making an
android version?

~~~
bashtian
I had a similar idea and started with an android app [1] for creating an app
template with a simple interface directly on the device. It's not as powerful
as this, but maybe I can implement basic support for these templates. But
right now this would be only like a viewer and not something that can be used
for own apps, not sure how useful that could be.

[1]
[https://play.google.com/store/apps/details?id=com.bashtian.a...](https://play.google.com/store/apps/details?id=com.bashtian.appcreator)

------
walke
Very neat and well put together! Thank you for taking the time to prepare nice
documentation to go along with it! Congrats on your release!

~~~
gliechtenstein
Thank you! I had no idea documentation would be this hard. As a wise man said,
I learned that open source project is "1% inspiration and 99% documentation"
:)

------
lewtds
Congratulations! I think you have "discovered" QML, my favorite environment
for rapid GUI development, incredibly intuitive. You may want to to look into
that for inspiration.

------
sintaxi
This is really cool.

Why not also support the web? With an Immutable store you could easily use
react to display this app on the web without needing native install.

Great job. Look forward to seeing where this goes.

------
yellowapple
What would be the feasability of an Android port? I like the concept, but hate
that it's for a platform that I refuse to touch with a ten-foot pole.

------
Xeoncross
Students (especially younger ones) often need more help seeing the light at
the end of the learning tunnel. Something like this is a great start to
teaching development and spurring them onto an actual language.

I usually don't start with CSS let alone SCSS for websites, basic HTML shows
them instant results for what they typed and gives them more endurance for the
longer learning curve (but more power) provided by CSS.

------
hyperpallium
OK, this obviously looks like a web browser (native...) using json instead of
(xml-like) html, though it's not good as a markup language.

Interesting is having declarative templates on the client side, instead of
server-side, for accessing json APIs. Of course you can do this in browsers
(and it is done), but this is cleaner and simpler, being a fresh reinvention.

------
frostymarvelous
Is anyone working on an Android port? I'd definitely want to give it a go.

Haven't checked yet, but is there a spec for the json?

------
lpasselin
Small detail I enjoyed from your website (on mobile, might be different for
desktop) : header text positioned to the right of the screen (or content div).

Position right is something we don't see often. This shows it is a great way
to make your page easier to read.

~~~
gliechtenstein
Thank you for noticing! :)

------
zupreme
I'm at a restaurant reading this so I haven't had a chance to test it out yet
but having reviewed the website I already see a massive use for this:
Programmatic app building. This is an awesome idea. I can't wait to play with
it.

------
robk
This plus Huginn will be awesome for dynamic apps

------
tzm
Looks like a new name from jasonclient.org. Previously discussed 6 months ago:
[https://news.ycombinator.com/item?id=11736817](https://news.ycombinator.com/item?id=11736817)

~~~
gliechtenstein
Yup I worked on open sourcing it for 6 months! This is the open source version
of Jasonclient

------
OOPMan
Nice to see you getting so much positive feedback, here is some negative
feedback balance it out:

* How is this different from any of the other declarative app building systems that have, as yet, failed to take the world at large by storm?

* Why JSON? I get it's universal but it's also annoying to write. Why didn't you consider YAML or , even better, HOCON?

* Do you really think loop syntax in a declarative language is a good idea, because to me it always comes across as a nasty anti-pattern to get around the fact that declarative languages don't tend to handle this well?

Otherwise, nice effort. Better than anything I've ever shown to the world :-)

------
niklaslogren
This seems similar to what is used internally at AppSpotr[1] (disclaimer: I'm
a former employee). They also use JSON to represent apps that can be rendered
in iOS/Android clients. The difference is that apps must be built using a
WYSIWYG editor rather than by editing the JSON directly.

From my experience, a JSON representation works very well for a big percentage
of all the apps out there, and you can often do without custom code. Good job
creating this open-source version, it looks very expressive and useful!

[1] [https://www.appspotr.com/](https://www.appspotr.com/)

------
macca321
So what this is, is an IOS hypermedia (AKA true REST) client, for consuming
APIs serving a custom (as opposed to generic) hypermedia format.

The format itself is designed for a particular problem domain, namely
outputting mobile-application specific controls and behaviours.

It would be an interesting exercise to extract those aspects into a custom
vocab for JSON-LD + Hydra (or Siren, or (insert) other generic hypermedia
formats).

[http://www.markus-lanthaler.com/hydra/](http://www.markus-
lanthaler.com/hydra/)

It would also be interesting to have the hypermedia format defined as a schema
somewhere.

------
amelius
Is this HTML reinvented? :)

~~~
IshKebab
Seems similar, but there are definitely advantages to this approach. HTML is
crap for making apps.

------
yla92
This is really great one. Shameless plug, we've built similar (but smaller)
concept for the filter form of our apps[0] (cross platform, natively for Web,
Android and iOS) mainly because we were tired of having to change the search
filter form fields and logics in every app update. Now, we just have to change
the configuration and the filter form changes instantly.

[0]: web version can be found at -
[https://www.99.co/singapore/rent](https://www.99.co/singapore/rent)

------
emmanvazz
This is awesome! I actually had this same idea and built a platform for non-
technical people to have the ability to build native apps. We picked
Xamarin.Forms as our mobile framework because that way we could target most of
the mobile platforms and share as much code between those project. We also
picked Drupal a CMS to give non-techies an easy framework to build things out.
I am going to keep an eye on this project for some different ideas and maybe
one day we can pick your brain with our idea/platform.

------
anupshinde
This looks very cool. And tempting at the first glance. As I read more of the
documentation, I can't help stop comparing it with React-native for the
rendering part. I remember somebody mentioning server-rendered mobile apps in
one of the early react-native apps. This is pretty much achieving that.

However, the comparison ends there. This is great! Its just too simple to make
an app and probably when the app grows one could create a transpiler to
generate this json

~~~
gliechtenstein
Thanks! You'd be pleasantly surprised to learn what's coming up, please follow
the project to stay in touch :)

------
thecrazyone
Android and web dev here, how would you compare this to nativescript and such?
Instead of learning a new dsl, isn't web to native simpler? Unless you're
developing a game I've never found native to be necessary. I'm one of those
devs who moved from native to hybrid for faster development speed

[edit] I really like how you're participating in the comments and how you
reply. I really hope you do well, you seem like a nice person :-)

~~~
gliechtenstein
Thank you! If you thought these JS based app development was fast, you're in
for a real treat! Check out these apps I wrote as exercise:
[https://github.com/gliechtenstein/botlist.json](https://github.com/gliechtenstein/botlist.json)
&
[https://github.com/gliechtenstein/kitty.json](https://github.com/gliechtenstein/kitty.json)

I built these in around 15 minutes each, and you can too, once you get used to
the markup you can too (which also is great since all you need to learn is the
consistent JSON syntax which works for actions, view layouts, and styling.
There is no real "environment setup" and "becoming a programmer" process that
most people need to go through just to get anything running).

------
tomaskafka
One use case: you have a game or app, and want to publish rich promo screens
for new features or in game events. Even to old versions of clients. We once
built a tiny in-house framework for this, based on Lua (game downloaded a
package of Lua script and image resources and displayed the promo). If there
was something ready to use (and multiplatform - at least android and ios), we
could have saved quite some development time.

------
desireco42
I know, it is too simple, people's head just exploded.

Well, there seem to be great number of uses for this. I think this is
excellent idea. Off to make an app... or two.

------
mark_wong
I tried building the instagram clone but get:

Failed to create provisioning profile. The app ID "home.master.Instagram-UI-
example.Jasonette.com.githubusercontent.raw" cannot be registered to your
development team. Change your bundle identifier to a unique string to try
again.

Anyone knows whats up? I ran the setup and inputted 2 and supplied the URL
from the Github..

~~~
mathiasrw
The app ID is alreay in use. Change the string (add your name or something)

------
babuskov
I made something very similar in 2004. Instead of JSON, you would supply PHP
arrays. The enabled to mix in some conditional code and make it more flexible
for different usage patterns. We shipped a pretty big ERP application this
way. I have since left the company, but the software still works on 200+
installations.

------
ARothfusz
How do app permissions work? Is there a way to make Jasonette request only the
permissions needed by my JSON?

~~~
gliechtenstein
what kind of app permissions?

~~~
Implicated
Push notifications/camera/photo access and such?

------
tomcam
Late to the game--where does logic go? Looping? DB access? Would they be
written in Objective C as actions?

~~~
tomcam
OK, I missed that actions can be chained through an optional 'success' action:
[https://jasonette.github.io/documentation/actions/#b-handlin...](https://jasonette.github.io/documentation/actions/#b-handling-
another-actions-result)

------
reubano
This is very cool! Do you have a spec to share? First thing i thought of is
that it would be awesome to write webapp and static site generator
implementations of the jason spec.

Im in the process of making my own static site, and im storing as much of
configuration and content as possible in json.

------
ldjb
This is a wonderful idea! Making app development faster and easier can only be
a good thing.

Now if only it were possible to place a generic version of this app on the App
Store and allow users to load in the JSON for whatever app they want. Sadly I
very much doubt Apple would allow it.

------
robk
This is quite useful with a Huginn server setup to dynamically feed JSON out
[https://github.com/cantino/huginn](https://github.com/cantino/huginn)

------
mcudich
Neat project! I've been working on something similar here:
[https://github.com/mcudich/TemplateKit](https://github.com/mcudich/TemplateKit)

------
nhorob67
Native app newbie here. Can this solution be used to present data tables?

------
markbnj
Well you do need to be a little bit of a programmer. You have loops in there,
and evaluating properties of objects, etc. Interesting idea and it looks like
you've done a nice job of it.

~~~
gliechtenstein
I think I need to make some changes to the main screenshots, those are
actually one of the most advanced features of Jasonette.

You don't really need to use those templates at all. What those templates do
is let you do advanced stuff like client-side rendering, dynamic data
processing, etc.

But you can build a full fledged app WITHOUT any of those advanced stuff.
Watch the video on the website and you'll get it immediately!

------
devcorn
Hey Buddy!, Great concept and smooth execution. Something for Android?

------
ruudk
Cool idea. But I'm wondering if this is allowed in the App Store?

~~~
gliechtenstein
Yup, in fact this was extracted from production apps on the appstore. Here's
one: www.textethan.com

The way this works is like how a web browser works, all the code you will ever
need is already in the binary, the JSON markup is just used to custom-
construct your own app to your liking in realtime.

~~~
yoz-y
What do you mean by extracted? Did those applications use something similar or
did you collaborate with the creators?

~~~
gliechtenstein
No that's me. I'm Ethan, and I created that Ethan app. Jasonette was born out
of my frustration with various aspects of working on the Ethan app. So that
app (and all other apps I have created since) currently run on Jasonette.
Sorry for the confusion with names.

------
srikz
This is nice. I always wondered why something like this isn't available. I
built a nested tab-bar menu system for an e-commerce app recently which can be
generated from a json file.

------
achairapart
What about Push Notifications? Are they supported somehow?

Great project, by the way!

------
jwebb99
Is is possible to include some kind rich text/html editor that can send data
back to a server via JSON? Is it possible to send any user data back to a
server with Jasonette?

------
ing33k
Congrats on the release !

this actually reminded me of a startup which lets you create a native app
using API documentation ( swagger ).

Edit : If I can find the bookmark, I will the link to that startup here.

------
heavy_machinery
This is awesome. Do you plan on releasing an Android version?

------
unlogic
> "text": "{{$jason.find('#about h2').text().trim()}}"

Yeah, you can only get so far being declarative. Miracles don't happen.

------
djhworld
The more I scrolled down this page the more impressed I got.

What's the performance like? Does it handle switching views back and forth?
Keep state?

~~~
gliechtenstein
Thanks! I think the best way to see is to actually jump in and try it out. I
tried my best to make the onboarding as seamless as possible, so normally it
should take like 20 seconds from download to having the app on your phone
(assuming you already have latest XCode installed)

It does handle switching back and forth and everything else you would expect
from a native app, because it _is_ native (and not an emulation) :)

------
jv22222
Great Job.

This is the next iteration of Titanium Appcelerator and Xamarin style apps
(which basically do the same thing but internally).

------
blairanderson
I would recommend adding documentation for shipping to the App Store.

Even if it's as simple as "just build and submit".

------
ethaligan
Never thought you could do that much with just JSON, this looks very promising
for students or for fast prototyping.

------
joshu
Is there support for loading more pieces of the app on demand (so the server
can generate them?)

~~~
gliechtenstein
can you elaborate?

------
jscholes
This looks really interesting. How can you localise an app's UI when using
this?

~~~
tomaskafka
I immediately thought of backing this with a simple node.js server and using
templating for this.

------
Kiro
Looks cool but what kind of apps are you supposed to build with this?

------
chaudhary27
This is great. I am new to iOS and this seems very promising.

------
jzelinskie
FWIW, the name is quite similar to
[https://github.com/google/jsonnet](https://github.com/google/jsonnet)

------
ashish348
how to make an app in 15 min | How to develop a mobile app free
[https://www.youtube.com/watch?v=tnsYachOafk](https://www.youtube.com/watch?v=tnsYachOafk)

~~~
hatsunearu
Didn't know Red Hat spams hacker news for some crappy mobile app thing!

