This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/royale-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a7dd22  finish update app tutorial fixes and changes to use permalinks
6a7dd22 is described below

commit 6a7dd22c5c3525535c68c7f7decc1ad775e6aed6
Author: Carlos Rovira <[email protected]>
AuthorDate: Wed Sep 4 00:39:16 2019 +0200

    finish update app tutorial fixes and changes to use permalinks
---
 create-an-application/application-tutorial.md      | 16 ++--
 .../application-tutorial/data-model.md             |  2 +-
 .../application-tutorial/debug.md                  |  2 +-
 .../application-tutorial/filters.md                |  8 +-
 .../application-tutorial/local-storage.md          |  8 +-
 .../application-tutorial/locales.md                |  8 +-
 .../application-tutorial/production.md             | 35 +++++----
 .../application-tutorial/routing.md                |  8 +-
 .../application-tutorial/security.md               | 10 ++-
 .../application-tutorial/value-objects.md          | 89 +++++++++++-----------
 features/loading-external-data/json.md             |  6 +-
 get-started/frameworks.md                          |  2 +-
 12 files changed, 113 insertions(+), 81 deletions(-)

diff --git a/create-an-application/application-tutorial.md 
b/create-an-application/application-tutorial.md
index 9714eff..86a6a0c 100644
--- a/create-an-application/application-tutorial.md
+++ b/create-an-application/application-tutorial.md
@@ -56,20 +56,20 @@ The next four segments will discuss further improvements 
needed to make a produc
 
 7. [Debugging](create-an-application/application-tutorial/debug) This segment 
introduces a couple of techniques for figuring out why your app isn't working 
as expected.
 
-8. [Security](create-an-application/application-tutorial/security.html) This 
segment discusses how to deal with network access to other domains.
+8. [Security](create-an-application/application-tutorial/security) This 
segment discusses how to deal with network access to other domains.
 
-9. [Production](create-an-application/application-tutorial/production.html) 
This segment discusses the differences between a development version and a 
production version of an app.
+9. [Production](create-an-application/application-tutorial/production) This 
segment discusses the differences between a development version and a 
production version of an app.
 
-10. [Value 
Objects](create-an-application/application-tutorial/value-objects.html) This 
segment explains how Value Objects (Data Classes) are useful in development and 
production.
+10. [Value Objects](create-an-application/application-tutorial/value-objects) 
This segment explains how Value Objects (Data Classes) are useful in 
development and production.
 
-The remaining segments will discuss further improvements needed to add 
additional common functionality. *Note*: These pages are not yet complete.
+The remaining segments will discuss further improvements needed to add 
additional common functionality. (*Note: These pages are not yet complete.*)
 
-11. [Localization](create-an-application/application-tutorial/locales.html) 
This segment adds the ability to show the user-interface prompts in different 
languages.
+11. [Localization](create-an-application/application-tutorial/locales) This 
segment adds the ability to show the user-interface prompts in different 
languages.
 
-12. [Filters](create-an-application/application-tutorial/filters.html) This 
segment adds the ability to filter what commits are shown.
+12. [Filters](create-an-application/application-tutorial/filters) This segment 
adds the ability to filter what commits are shown.
 
-13. [Local 
Storage](create-an-application/application-tutorial/local-storage.html) This 
segment shows how to store information in a cookie or equivalent in order to 
retain some of the state of the app between runs.
+13. [Local Storage](create-an-application/application-tutorial/local-storage) 
This segment shows how to store information in a cookie or equivalent in order 
to retain some of the state of the app between runs.
 
-14. [Routing](create-an-application/application-tutorial/routing.html) This 
segment shows how to map URL parameters to different initial values in the 
application, and _vice versa_.
+14. [Routing](create-an-application/application-tutorial/routing) This segment 
shows how to map URL parameters to different initial values in the application, 
and _vice versa_.
 
 This is going to be fun!
diff --git a/create-an-application/application-tutorial/data-model.md 
b/create-an-application/application-tutorial/data-model.md
index 1550523..9a48f3b 100644
--- a/create-an-application/application-tutorial/data-model.md
+++ b/create-an-application/application-tutorial/data-model.md
@@ -45,7 +45,7 @@ public var repos:Array;
 public var projectName:String;
 ```
 
-Next, we need to get the values for these arrays. Let's use a 
[JSON](https://www.json.org){:target='_blank'} file, called `project.json`, to 
configure which repos to use and the project name. The file contents look like:
+Next, we need to get the values for these arrays. Let's use a 
[JSON](features/loading-external-data/json) file, called `project.json`, to 
configure which repos to use and the project name. The file contents look like:
 
 ```json
 { 
diff --git a/create-an-application/application-tutorial/debug.md 
b/create-an-application/application-tutorial/debug.md
index 3c774d5..d229fdf 100644
--- a/create-an-application/application-tutorial/debug.md
+++ b/create-an-application/application-tutorial/debug.md
@@ -48,5 +48,5 @@ Back to the topic of debugging for a moment. Most browsers 
also have debuggers w
 Anyway, to get this application to access GitHub, we have to make the 
application available on a web server and learn a bit about security.
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/deploy) \| [Next 
Page](create-an-application/application-tutorial/security.html)
+[Previous Page](create-an-application/application-tutorial/deploy) \| [Next 
Page](create-an-application/application-tutorial/security)
 
diff --git a/create-an-application/application-tutorial/filters.md 
b/create-an-application/application-tutorial/filters.md
index b9c07c8..873ce8c 100644
--- a/create-an-application/application-tutorial/filters.md
+++ b/create-an-application/application-tutorial/filters.md
@@ -16,12 +16,16 @@
 
 layout: docpage
 title: Filters
+description: About Filters
+permalink: /create-an-application/application-tutorial/filters
 ---
 
 # Filters
 
-Instructions and sample code will go here to show how you can filter the data 
you pulled to show just the material you want.
+About Filters
+
+*Instructions and sample code will go here to show how you can filter the data 
you pulled to show just the material you want.*
 
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/locales.html) \| 
[Next Page](create-an-application/application-tutorial/local-storage.html)
+[Previous Page](create-an-application/application-tutorial/locales) \| [Next 
Page](create-an-application/application-tutorial/local-storage)
diff --git a/create-an-application/application-tutorial/local-storage.md 
b/create-an-application/application-tutorial/local-storage.md
index 905e46f..81a7b95 100644
--- a/create-an-application/application-tutorial/local-storage.md
+++ b/create-an-application/application-tutorial/local-storage.md
@@ -16,12 +16,16 @@
 
 layout: docpage
 title: Local Storage
+description: About Local Storage
+permalink: /create-an-application/application-tutorial/local-storage
 ---
 
 # Local Storage
 
-Instructions and sample code will go here to show you how you can store key 
data in a cookie or similar structure on the user's computer to retain some of 
the app's state between sessions.
+About Local Storage
+
+*Instructions and sample code will go here to show you how you can store key 
data in a cookie or similar structure on the user's computer to retain some of 
the app's state between sessions.*
 
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/filters.html) \| 
[Next Page](create-an-application/application-tutorial/routing.html)
+[Previous Page](create-an-application/application-tutorial/filters) \| [Next 
Page](create-an-application/application-tutorial/routing)
diff --git a/create-an-application/application-tutorial/locales.md 
b/create-an-application/application-tutorial/locales.md
index 5487e55..9de9d92 100644
--- a/create-an-application/application-tutorial/locales.md
+++ b/create-an-application/application-tutorial/locales.md
@@ -16,12 +16,16 @@
 
 layout: docpage
 title: Localization
+description: About localization
+permalink: /create-an-application/application-tutorial/locales
 ---
 
 # Localization
 
-Instructions and sample code to help you localize your app into multiple 
languages will be available soon.
+About localization
+
+*Instructions and sample code to help you localize your app into multiple 
languages will be available soon.*
 
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/value-objects.html) 
\| [Next Page](create-an-application/application-tutorial/filters.html)
+[Previous Page](create-an-application/application-tutorial/value-objects) \| 
[Next Page](create-an-application/application-tutorial/filters)
diff --git a/create-an-application/application-tutorial/production.md 
b/create-an-application/application-tutorial/production.md
index a4695ad..38fe4e6 100644
--- a/create-an-application/application-tutorial/production.md
+++ b/create-an-application/application-tutorial/production.md
@@ -17,41 +17,48 @@
 layout: docpage
 title: Making a production version
 description: Releasing an application for consumers
+permalink: /create-an-application/application-tutorial/production
 ---
 
 # Making a production version
 
 Releasing an application for consumers
 
-The version in the "js-debug" folder is considered a "debug version" or 
"development version".  If you looked at all of the files in the folder or 
copied them to a web server, you probably noticed there are quite a few, and 
that each takes time to load.
+The version in the `js-debug` folder is considered a "debug version" or 
"development version". If you looked at all of the files in the folder or 
copied them to a web server, you probably noticed there are quite a few, and 
that each takes time to load.
 
-These versions are designed to be more easily debugged. Each source file has 
an equivalent .js file with nice, readable variable and function names. If the 
files are small enough and fast enough, it is perfectly fine to deploy the 
development version.
+These versions are designed to be more easily debugged. Each source file has 
an equivalent `.js` file with nice, readable variable and function names. If 
the files are small enough and fast enough, it is perfectly fine to deploy the 
development version.
 
-A production version will combine just about all of the .js into a single .js 
file, renaming variables and function names from things like "Application" to 
just "aa". This is done using the [Google Closure Compiler 
(GCC)](https://developers.google.com/closure/compiler/){:target='_blank'} and 
the results are easier to manage (fewer files to copy) and also should load 
more quickly (because there are fewer requests for files and smaller total file 
sizes).
+A production version will combine just about all of the `.js` into a single 
file, renaming variables and function names from things like "Application" to 
just "aa". This is done using the [Google Closure Compiler 
(GCC)](https://developers.google.com/closure/compiler/){:target='_blank'} and 
the results are easier to manage (fewer files to copy) and also should load 
more quickly (because there are fewer requests for files and smaller total file 
sizes).
 
-If you are using an IDE, it probably provides an option for creating a 
production version. On the command line, to create a production version, don't 
set debug=true. The compiler will still produce the js-debug folder, but it 
then will pass it to the Google Closure Compiler that will generate a 
production or "release" version in a "js-release" folder. 
+If you are using an [IDE](get-started/development-tools), it probably provides 
an option for creating a production version. On the command line, to create a 
production version, don't set `debug = true`. The compiler will still produce 
the `js-debug` folder, but it then will pass it to the **GCC** that will 
generate a production or "release" version in a `js-release` folder. 
 
-The build process will take longer as the Google compiler crunches through all 
of the files.  There may be additional warnings, and hopefully, no errors.  If 
there is an error, then the production version will probably not run.
+The build process will take longer as the Google compiler crunches through all 
of the files. There may be additional warnings, and hopefully, no errors. If 
there is an error, then the production version will probably not run.
 
 On the command line, create a production version by running:
 
-`<path to Royale SDK>/royale-asjs/js/bin/mxmlc GitHubCommitsViewer.mxml`
+```sh
+<path to Royale SDK>/royale-asjs/js/bin/mxmlc GitHubCommitsViewer.mxml
+```
 
 If you've used [NPM](https://www.npmjs.com/){:target='_blank'} to install 
Royale, you can just run:
 
-`mxmlc GitHubCommitsViewer.mxml`
+```sh
+mxmlc GitHubCommitsViewer.mxml
+```
 
-Then if your browser worked when you viewed the application in the js-debug 
folder, you can review the production version the same way in the js-release 
folder; or you can copy the js-release folder to your webserver.
+Then if your browser worked when you viewed the application in the `js-debug` 
folder, you can review the production version the same way in the `js-release` 
folder; or you can copy the `js-release` folder to your webserver.
 
-You will probably not see any rows of commits.  And if you look in the 
console, you may see an error that looks like:
+You will probably not see any rows of commits. And if you look in the console, 
you may see an error that looks like:
 
-`TypeError: undefined is not an object (evaluating 'e.Vf.Qf')`
+```sh
+TypeError: undefined is not an object (evaluating 'e.Vf.Qf')
+```
 
-Why is the production version not working? Because as the Google Closure 
Compiler renamed variables, it also renamed variables in the code that fetches 
fields from the data.
+Why is the production version not working? Because as the **GCC** renamed 
variables, it also renamed variables in the code that fetches fields from the 
data.
 
-How do you prevent certain variables from being renamed?  One way is by not 
using as many plain objects, especially when those objects come from an 
external source. If a plain object is used entirely internally, then the Google 
Closure Compiler can rename all references to a property like "message" to just 
"mm". Google doesn't know or have a way to know that the objects in this 
tutorial are coming from a server.  
+> How do you prevent certain variables from being renamed?  One way is by not 
using as many plain objects, especially when those objects come from an 
external source. If a plain object is used entirely internally, then the 
**GCC** can rename all references to a property like "message" to just "mm". 
**GCC** doesn't know or have a way to know that the objects in this tutorial 
are coming from a server.  
 
-There is more than one way to keep Google Closure Compiler from renaming 
variables, but not using plain objects has other advantages as we'll see in the 
next section.
+There is more than one way to keep **GCC** from renaming variables, but not 
using plain objects has other advantages as we'll see in the next section.
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/security.html) \| 
[Next Page](create-an-application/application-tutorial/value-objects.html)
+[Previous Page](create-an-application/application-tutorial/security) \| [Next 
Page](create-an-application/application-tutorial/value-objects)
diff --git a/create-an-application/application-tutorial/routing.md 
b/create-an-application/application-tutorial/routing.md
index b4967a2..c2a0976 100644
--- a/create-an-application/application-tutorial/routing.md
+++ b/create-an-application/application-tutorial/routing.md
@@ -16,12 +16,16 @@
 
 layout: docpage
 title: Routing
+description: About Routing
+permalink: /create-an-application/application-tutorial/routing
 ---
 
 # Routing
 
-Instructions and sample code will appear here soon to show how you can map URL 
parameters to different initial values in the application, and vice versa.
+About Routing
+
+*Instructions and sample code will appear here soon to show how you can map 
URL parameters to different initial values in the application, and vice versa.*
 
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/local-storage.html)
+[Previous Page](create-an-application/application-tutorial/local-storage)
diff --git a/create-an-application/application-tutorial/security.md 
b/create-an-application/application-tutorial/security.md
index 5eaba4a..e6a484b 100644
--- a/create-an-application/application-tutorial/security.md
+++ b/create-an-application/application-tutorial/security.md
@@ -16,10 +16,14 @@
 
 layout: docpage
 title: Application security
+description: Control access to application and the data
+permalink: /create-an-application/application-tutorial/security
 ---
 
 # Application security
 
+Control access to application and the data
+
 There are two sides to security:  
 
 1. How do you access and get data or other material from an external source?
@@ -27,9 +31,9 @@ There are two sides to security:
 
 There is a separate section that deals with both topics in more detail, but 
the most common problem, especially for applications that mainly present data 
instead of collecting data, is how to access an external resource.
 
-It is up the external resource to decide whether you can access it or not. And 
even if the external resource intends to let others access it, there may be 
rules and restrictions about who can get permission, and under what conditions. 
 If you run into an access problem, look for documentation on "Cross-Origin 
Resource Sharing" or "CORS".
+It is up the external resource to decide whether you can access it or not. And 
even if the external resource intends to let others access it, there may be 
rules and restrictions about who can get permission, and under what conditions. 
If you run into an access problem, look for documentation on "Cross-Origin 
Resource Sharing" or 
[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing){:target='_blank'}.
 
-Fortunately, for this tutorial, GitHub's APIs are very permissive. Once you 
have your application on a website it should now show rows of commits even if 
it wasn't when running from file://.
+Fortunately, for this tutorial, GitHub's APIs are very permissive. Once you 
have your application on a website it should now show rows of commits even if 
it wasn't when running from `file://`.
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/debug) \| [Next 
Page](create-an-application/application-tutorial/production.html)
+[Previous Page](create-an-application/application-tutorial/debug) \| [Next 
Page](create-an-application/application-tutorial/production)
diff --git a/create-an-application/application-tutorial/value-objects.md 
b/create-an-application/application-tutorial/value-objects.md
index d18e83e..c03daa7 100644
--- a/create-an-application/application-tutorial/value-objects.md
+++ b/create-an-application/application-tutorial/value-objects.md
@@ -17,82 +17,83 @@
 layout: docpage
 title: Value Objects
 description: Plain ActionScript Objects with properties or arrays
+permalink: /create-an-application/application-tutorial/value-objects
 ---
 
 # Value Objects
 
 Plain ActionScript Objects with properties or arrays
 
-Queries for data to many servers return JSON, which is a plain object or array 
often referencing other plain objects and arrays. In ActionScript there are 
advantages to using something called "data classes" or "value objects" (also 
sometimes "ValueObjects").
+Queries for data to many servers return 
[JSON](features/loading-external-data/json), which is a plain object or array 
often referencing other plain objects and arrays. In ActionScript there are 
advantages to using something called "data classes" or "value objects" (also 
sometimes "ValueObjects").
 
-Value Objects tell the compiler that your data has a fixed set of properties 
of a given type. If you misspell the name of a field in the data, the compiler 
will catch it. Some IDEs know how to complete the field name as you type it and 
only offer completions for that data object instead of all strings used in the 
file.
+Value Objects tell the compiler that your data has a fixed set of properties 
of a given type. If you misspell the name of a field in the data, the compiler 
will catch it. Some [IDEs](get-started/development-tools) know how to complete 
the field name as you type it and only offer completions for that data object 
instead of all strings used in the file.
 
-Value Objects keep the Google Closure Compiler from renaming references to 
fields, and allow you to have changes to fields detected or ignored by the 
DataBinding code.
+Value Objects keep the [Google Closure Compiler 
(GCC)](https://developers.google.com/closure/compiler/){:target='_blank'} from 
renaming references to fields, and allow you to have changes to fields detected 
or ignored by the DataBinding code.
 
-There is more than one way to create a Value Object for JSON objects. This 
tutorial will use the simplest, brute-force technique. There are only three 
fields we are interested in out of the many fields and nested fields in the 
GitHub server response. So instead of converting all fields or wrapping the 
JSON object and returning the nested fields, it is easier to just copy the 
three fields we need.
+There is more than one way to create a Value Object for **JSON** objects. This 
tutorial will use the simplest, brute-force technique. There are only three 
fields we are interested in out of the many fields and nested fields in the 
GitHub server response. So instead of converting all fields or wrapping the 
JSON object and returning the nested fields, it is easier to just copy the 
three fields we need.
 
-Many people prefer to keep their Value Objects in a separate folder/package. 
For simplicity in this tutorial, we will just create the Value Object in the 
main "src" folder. It will look like this:
+Many people prefer to keep their Value Objects in a separate folder/package. 
For simplicity in this tutorial, we will just create the Value Object in the 
main `src` folder. It will look like this:
 
 ```as3
 package {
-
-public class LogEntry
-{
-  public var date:String;
-  public var author:String;
-
-  [Bindable("__NoChangeEvent__")]
-  public var message:String;
-}
+  public class LogEntry
+  {
+    public var date:String;
+    public var author:String;
+
+    [Bindable("__NoChangeEvent__")]
+    public var message:String;
+  }
 }
 ```
+
 You can download this file from 
[here](https://github.com/apache/royale-asjs/blob/develop/examples/express/GitHubCommitLogViewer/src/main/royale/LogEntry.as).
 
-Notice the use of [Bindable](features/data-binding) metadata. This special 
syntax indicates to the compiler that there are no DataBinding notifications 
for the message field.  Once it is set, it will not change. We could also 
specify "message" as a "const" instead of a "var" and set up a constructor with 
parameters, but constructor parameters are not allowed for anything that wants 
to be declared in MXML.
+> Notice the use of [Bindable](features/data-binding) metadata with 
`__NoChangeEvent__`. This special syntax indicates to the compiler that there 
are no data binding notifications for the message field. Once it is set, it 
will not change. We could also specify `message` as a `const` instead of a 
`var` and set up a constructor with parameters, but constructor parameters are 
not allowed for anything that wants to be declared in MXML.
 
-Once we have the LogEntry Value Object, we use LogEntry throughout the app. In 
the conversion loop, we change it to look like this:
+Once we have the `LogEntry` Value Object, we use `LogEntry` throughout the 
app. In the conversion loop, we change it to look like this:
 
 ```as3
-        for (var i:int = 0; i < n; i++)
-        {
-            var obj:Object = results[i];
-            var data:LogEntry = new LogEntry();
-            data.author = obj.commit.author.name;
-            // clip date after yyyy-mm-dd
-            data.date = obj.commit.author.date.substr(0, 10);
-            data.message = obj.commit.message;
-            commits.push(data);
-        }
+  for (var i:int = 0; i < n; i++)
+  {
+      var obj:Object = results[i];
+      var data:LogEntry = new LogEntry();
+      data.author = obj.commit.author.name;
+      // clip date after yyyy-mm-dd
+      data.date = obj.commit.author.date.substr(0, 10);
+      data.message = obj.commit.message;
+      commits.push(data);
+  }
 ```
 
-In the data binding to the MultilineLabel, we must declare the type of the 
object in the Array so that the compilers know that the message property is 
from a LogEntry and should not be changed.
+In the data binding to the `MultilineLabel`, we must declare the type of the 
object in the Array so that the compilers know that the message property is 
from a `LogEntry` and should not be changed.
 
 ```mxml
 <js:MultilineLabel text="{LogEntry(commits[dg.selectedIndex]).message}" 
width="600" />
 ```
 
-Compiling with these changes will eliminate the warning that assignment to 
some variable cannot be detected, since the Bindable metadata has instructed 
the compiler that the "message" property will not change at runtime. But we 
find it still won't work. That's because, in the conversion loop, the JSON 
objects are also plain objects, and the Google Closure Compiler is going to 
rename expressions like obj.commit.author.name to things like "o.b.c.d".
+Compiling with these changes will eliminate the warning that assignment to 
some variable cannot be detected, since the Bindable Metadata has instructed 
the compiler that the `message` property will not change at runtime. But we 
find it still won't work. That's because, in the conversion loop, the **JSON** 
objects are also plain objects, and the **GCC** is going to rename expressions 
like `obj.commit.author.name` to things like "o.b.c.d".
 
-We could define more Value Objects like LogEntry for these GitHub API data 
types, and if we do that, we should share it with everyone else (as of this 
writing we are seeking permission to do so), but given that we only have to 
tackle these JSON object in one place in the code, this challenge presents a 
good opporunity to show another technique to deal with renaming.
+We could define more Value Objects like `LogEntry` for these GitHub API data 
types, and if we do that, we should share it with everyone else (as of this 
writing we are seeking permission to do so), but given that we only have to 
tackle these **JSON** object in one place in the code, this challenge presents 
a good opporunity to show another technique to deal with renaming.
 
-Another way to prevent the Google Closure Compiler from renaming variables is 
to use bracket notation.  To use the fewest bracket notations (because they are 
prone to mispelling) we will refactor the code a bit (which should also make it 
run a bit faster). Now the conversion loop looks like this:
+> Another way to prevent the **GCC** from renaming variables is to use bracket 
notation. To use the fewest bracket notations (because they are prone to 
mispelling) we will refactor the code a bit (which should also make it run a 
bit faster). Now the conversion loop looks like this:
 
 ```as3
-        for (var i:int = 0; i < n; i++)
-        {
-            var obj:Object = results[i];
-            var data:LogEntry = new LogEntry();
-            var commitObj:Object = obj["commit"];
-            var authorObj:Object = commitObj["author"];
-            data.author = authorObj["name"];
-            // clip date after yyyy-mm-dd
-            data.date = authorObj["date"].substr(0, 10);
-            data.message = commitObj["message"];
-            commits.push(data);
-        }
+  for (var i:int = 0; i < n; i++)
+  {
+      var obj:Object = results[i];
+      var data:LogEntry = new LogEntry();
+      var commitObj:Object = obj["commit"];
+      var authorObj:Object = commitObj["author"];
+      data.author = authorObj["name"];
+      // clip date after yyyy-mm-dd
+      data.date = authorObj["date"].substr(0, 10);
+      data.message = commitObj["message"];
+      commits.push(data);
+  }
 ```
 
-This should now work. If you look in the js-release folder, you now have a 
single .js file to deploy (along with the .css, .json and .html files). The 
.js.map file is there in case you have to debug this optimized .js file. If you 
don't deploy it, anyone trying to reverse-engineer your application is in for 
quite a challenge!
+This should now work. If you look in the `js-release` folder, you now have a 
single `.js` file to deploy (along with the `.css`, `.json` and `.html` files). 
The `.js.map` file is there in case you have to debug this optimized `.js` 
file. If you don't deploy it, anyone trying to reverse-engineer your 
application is in for quite a challenge!
 
 If you weren't really following the steps and just skimming, the file in its 
final form is available 
[here](assets/application-tutorial/index.html){:target='_blank'}.
 
@@ -103,4 +104,4 @@ src="assets/application-tutorial/index.html"></iframe>
 This concludes the set of steps required to create a not-so-simple application 
and put it into production. The next steps, which are not yet complete, add 
additional features to the application.
 
 {:align="center"}
-[Previous Page](create-an-application/application-tutorial/production.html) \| 
[Next Page](create-an-application/application-tutorial/locales.html)
+[Previous Page](create-an-application/application-tutorial/production) \| 
[Next Page](create-an-application/application-tutorial/locales)
diff --git a/features/loading-external-data/json.md 
b/features/loading-external-data/json.md
index 71a14c4..216f019 100644
--- a/features/loading-external-data/json.md
+++ b/features/loading-external-data/json.md
@@ -16,12 +16,16 @@
 
 layout: docpage
 title: JSON
-description: JSON
+description: A plain object or array often referencing other plain objects and 
arrays
 permalink: /features/loading-external-data/json
 ---
 
 # JSON
 
+A plain object or array often referencing other plain objects and arrays
+
+About [JSON](https://www.json.org){:target='_blank'} implementation in Royale
+
 *information coming soon.*
 
 
diff --git a/get-started/frameworks.md b/get-started/frameworks.md
index ffdc4ae..c021589 100644
--- a/get-started/frameworks.md
+++ b/get-started/frameworks.md
@@ -30,7 +30,7 @@ Royale provides its own framework for making simple, small 
and fast applications
 
 ## Apache Royale frameworks
 
-The first Royale framework in development is 
[Crux](https://apache.github.io/royale-docs/frameworks/crux.html), based on 
Swiz for Flex. It proposes to provide:
+The first Royale framework in development is [Crux](libraries/crux), based on 
Swiz for Flex. It proposes to provide:
 
 - Inversion of Control (IOC) / Dependency Injection (DI) with metadata
 - Event handling (metadata)

Reply via email to