-
Notifications
You must be signed in to change notification settings - Fork 352
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit ac6ba98
Showing
1,023 changed files
with
219,319 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# Mac OS X Finder and whatnot | ||
.DS_Store | ||
|
||
# XCode (and ancestors) per-user config (very noisy, and not relevant) | ||
*.mode1 | ||
*.mode1v3 | ||
*.mode2v3 | ||
*.perspective | ||
*.perspectivev3 | ||
*.pbxuser | ||
xccheckout | ||
xcuserdata/ | ||
project.xcworkspace/ | ||
|
||
# Generated files | ||
VersionX-revision.h | ||
*.orig | ||
|
||
# build products | ||
build/ | ||
build/*.[oa] | ||
|
||
# Other source repository archive directories (protects when importing) | ||
.hg | ||
.svn | ||
CVS | ||
|
||
# automatic backup files | ||
*~.nib | ||
*.swp | ||
*~ | ||
*(Autosaved).rtfd/ | ||
Backup[ ]of[ ]*.pages/ | ||
Backup[ ]of[ ]*.key/ | ||
Backup[ ]of[ ]*.numbers/ | ||
|
||
Documents/Test[ ]Runs/ | ||
|
||
Carthage |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# How to contribute to Jasonette | ||
|
||
## **Do you have a bug report or a feature request?** | ||
|
||
* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/Jasonette/JASONETTE-iOS/issues). | ||
|
||
* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/Jasonette/JASONETTE-iOS/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample** or an **executable test case** demonstrating the expected behavior that is not occurring. | ||
|
||
|
||
## **Did you write a patch that fixes a bug?** | ||
|
||
* Open a new GitHub pull request with the patch. | ||
|
||
* Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable. | ||
|
||
## **Did you write a cool extension?** | ||
|
||
Feel free to fork the project and [write your own extension](https://jasonette.github.io/documentation/advanced) | ||
|
||
If you wrote a cool extension, please share it with the community in the [slack channel](https://jasonette.herokuapp.com). | ||
|
||
## **Do you have other types of questions?** | ||
|
||
* Ask any question about how to use Jasonette on the [Jasonette Slack channel](https://jasonette.herokuapp.com). | ||
|
||
## **Project Structure** | ||
|
||
### Class hierarchy | ||
![hierarchy](https://raw.githubusercontent.com/gliechtenstein/images/master/hierarchy.png) | ||
|
||
Here's a brief walkthrough of how the project is structured: | ||
|
||
- **Launcher**: You can ignore this, just some files that launches the app. | ||
- **Config**: Normally these are the only files you will ever need to touch. | ||
- `Info.plist`: App setting. Normally don't need to touch this unless you're manually setting up stuff. | ||
- `settings.plist`: **This is the only file you will ever need to change.** Set the `url` attribute to embed that URL into the app. | ||
- **Core**: Core logic that handles command processing (via stack, memory, etc.), view construction, templating, and some native system actions. | ||
- `Jason`: The brain of Jasonette. Everything revolves around this class. Makes use of JasonStack and JasonMemory for remembering and executing actions. | ||
- `JasonStack`: Stack for remembering instructions (actions). | ||
- `JasonMemory`: Used to store actions to be executed, through stack (JasonStack) and register. | ||
- `JasonParser`: Parser module that calls the `Core/Lib/parser.js` file for parsing json templates. | ||
- `RussianDollView`: A JasonViewController protocol, you can ignore this. | ||
- **Assets**: You can ignore this, just some images and audio clips used by the app | ||
- **Lib**: Includes Javascript libraries used to execute JSON native actions. | ||
- `parser.js`: The main JSON parser that takes a JSON template expression and generates a final static JSON using the current register value | ||
- `csv.js`: CSV parser | ||
- `rss.js`: RSS parser | ||
- **Action**: Where all [actions](https://jasonette.github.io/documentation/actions/) are implemented. The implementation follows [the convention described here](https://jasonette.github.io/documentation/advanced/#2-extend-actions). | ||
- To build your own action extension, you can create your own custom group here and implement your own classes. | ||
- **View**: All view related classes. | ||
- `JasonViewController`: The main JSON-powered view controller. Everything view-related revolves around this class. | ||
- **Layer**: Implements [layers](https://jasonette.github.io/documentation/document/#bodylayers) | ||
- **Section**: Implements [sections](https://jasonette.github.io/documentation/document/#bodysections) | ||
- **Layout**: Implements [vertical and horizontal layouts](https://jasonette.github.io/documentation/layout/) that can be used inside [sections](https://jasonette.github.io/documentation/document/#bodysections) | ||
- **Component**: Implements [componenets](https://jasonette.github.io/documentation/components/), following [the convention described here](https://jasonette.github.io/documentation/advanced/#1-extend-ui-components). | ||
- To build your own component extension, just create your own group here and write your classes. | ||
- **Helper** | ||
- Various helper class methods used across various classes. | ||
|
||
### What files you will be touching | ||
|
||
####User | ||
In most cases, the only thing you will ever need to touch is the `Config/settings.plist` file. This is where you set the main url your app will launch from. | ||
- But even this can be automatically done using the [Setup command](https://jasonette.github.io/documentation/#step-2-setup), which means **you will never need to touch anything inside XCode** to build an app. | ||
|
||
####Advanced | ||
Sometimes you may want to write an [extension](https://jasonette.github.io/documentation/advanced/#extension). In this case you may need to deal with: | ||
- `Action`: To write action extension | ||
- `View/Component`: To write UI component extension | ||
|
||
####Guru | ||
If you find a bug **anywhere in the code**, or have any improvements anywhere else, please feel free to: | ||
1. Fork the `develop` branch | ||
2. Create a feature branch | ||
3. Fix | ||
4. Send a pull request |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
[![logo](https://raw.githubusercontent.com/gliechtenstein/images/master/jasonette.png)](http://www.jasonette.com) | ||
|
||
# [Jasonette](https://www.jasonette.com) | ||
|
||
[https://www.jasonette.com](https://www.jasonette.com) | ||
|
||
Create your own native iOS app with nothing but JSON. Then send it over the Internet. | ||
|
||
##★ Jasonette fetches this JSON markup from a server: | ||
|
||
![json](https://raw.githubusercontent.com/gliechtenstein/images/master/json.png) | ||
|
||
##★ And self-constructs into the following app, in realtime: | ||
|
||
![instagram](https://github.com/Jasonette/Instagram-UI-example/blob/master/images/instagram.gif) | ||
|
||
<br> | ||
|
||
#Cool things about Jasonette | ||
|
||
- **App loads over HTTP**: Your app exists 100% as JSON, and loads from the cloud. No more hard-coding. | ||
- **An app in 30 minutes**: No kidding, build an app in 30 minutes. | ||
- **Lowest possible learning curve**: No programming experience required. There's only one thing you need to know: JSON. Which means you can build an app without "becoming a programmer". | ||
|
||
<br> | ||
|
||
# [Quickstart](https://www.jasonette.com) | ||
Visit [the website](http://www.jasonette.com) to get started. | ||
|
||
<br> | ||
|
||
# More Examples | ||
Try playing these on Jasonette and watch them turn into native apps in front of your eyes! | ||
|
||
* [Jasonpedia](https://github.com/Jasonette/Jasonpedia) Tutorial demo app that includes all Jasonette feature implementations. | ||
* [Instagram](https://github.com/Jasonette/Instagram-UI-example) An Instagram UI, 100% powered by JSON. | ||
* [Twitter](https://github.com/Jasonette/Twitter-UI-example) A Twitter UI, 100% powered by JSON. | ||
|
||
<br> | ||
|
||
# Technical Highlights | ||
|
||
##1. One JSON to rule them all | ||
|
||
Jasonette simplifies the entire app building process down to nothing more than: | ||
|
||
1. Write a JSON markup | ||
2. Add the JSON url to Jasonette | ||
3. Press `play` | ||
|
||
This is possible because Jasonette came up with a way to **fit an entire app worth of logic into a single declarative JSON that just works™.** This JSON grammar is used to express **every aspect of your app**, such as: | ||
|
||
1. Draw sophisticated [**views**](https://jasonette.github.io/documentation/document) | ||
2. Call [**device API methods**](https://jasonette.github.io/documentation/actions/#api) | ||
3. Chain method calls to [**perform complex logic**](https://jasonette.github.io/documentation/actions/#b-handling-another-actions-result) | ||
4. Respond to [**system events**](https://jasonette.github.io/documentation/actions/#system-events) and [**user interaction**](https://jasonette.github.io/documentation/actions/#a-handling-user-interaction) | ||
5. Even change the JSON itself dynamically using [**templates**](https://jasonette.github.io/documentation/templates). | ||
|
||
<br> | ||
|
||
##2. App-over-HTTP | ||
Until now, the only thing JSON could send over the Internet was raw data. Normally apps would fetch remote data from the server for a connected experience, but the actual app logic would be hard-coded on the client side. This makes it hard to update and extend apps. | ||
|
||
But what happens when you can express an entire app logic as JSON? | ||
|
||
**Then apps can be stored, processed, shared, and sent over the Internet just like any other JSON.** Watch below where we update the JSON on a [JSON pastebin server](https://www.jasonbase.com), and the app changes immediately to reflect the new markup: | ||
|
||
![remote control](http://i.giphy.com/3o7TKrdmlX5uD7RszK.gif) | ||
|
||
<br> | ||
|
||
##3. Designed to be extended or integrated | ||
Currently Jasonette covers all the essential native APIs and components, which means you can build pretty much any app you can imagine. But Jasonette is very flexible. | ||
|
||
###A. Extensible | ||
If you don't see a feature you want, you can simply [extend Jasonette](https://jasonette.github.io/documentation/advanced/#extension-vs-integration). If it's useful for the general public, we can even merge it into the core. | ||
|
||
###B. Integrate existing code | ||
You can even [integrate Jasonette with your existing iOS project](https://jasonette.github.io/documentation/advanced/#extension-vs-integration) if you want. This way you can use Jasonette for just a small part of your app without having to completely switch to a new way of programming. | ||
|
||
<br> | ||
|
||
# Bugs and feature requests | ||
|
||
Have a bug or a feature request regarding the Jasonette code itself? [Please open a new issue](https://github.com/Jasonette/JASONETTE-iOS/issues/new). | ||
|
||
<br> | ||
|
||
# Questions and Support | ||
For questions and support, please use the [Slack chatroom](https://jasonette.herokuapp.com) | ||
|
||
[![slack](https://raw.githubusercontent.com/gliechtenstein/images/master/slack.png)](https://jasonette.herokuapp.com) | ||
|
||
<br> | ||
|
||
# Stay in touch | ||
To keep updated on latest releases and announcements, | ||
|
||
- Follow on Twitter [@jasonclient](https://twitter.com/jasonclient) | ||
- [join our slack](https://jasonette.herokuapp.com) | ||
|
||
<br> | ||
|
||
# Contribute | ||
There are many ways to contribute. But first, please [read the contributing guideline](CONTRIBUTING.md) | ||
|
||
<br> | ||
|
||
# License | ||
Jasonette is released under the [MIT License](http://www.opensource.org/licenses/MIT). |
Oops, something went wrong.