## AweSim on Open OnDemand Documentation
1. [Developing on apps-test.awesim.org](Developing on apps-test.awesim.org)
2. [Porting an existing app to OOD](Port-an-existing-app-to-OOD)
3. [Sharing apps in OOD](Sharing-apps-in-OOD)
4. [OOD Gem Changes](ood-gem-changes)
5. Building new apps - see https://github.com/AweSim-OSC/rails-application-template/ - we will update this soon

## Tutorials

1. [[Python 2.7 Hello World App]]
2. Avoid AJAX Requests redirect to authenticate: `set header 'X-Requested-With': 'XMLHttpRequest'`

## Legacy documentation

**Some of these links are on GitHub (external to AweSim) and require [permission to access](https://github.com/orgs/AweSim-OSC/teams/awesim-external-developers_ro/repositories). If you do not have access, GitHub will hide the page with a "404". This is not a broken link. Please [contact OSC Help](https://www.osc.edu/supercomputing/support) if you want access granted.**

---
### Getting started

* [Onboarding OSC systems](Onboarding-OSC-systems) - Familiarize yourself with OSC's systems
* [Getting started with dev sandbox](Getting-started-with-the-dev-sandbox)
* [Create a new app with AppKit 1.0](Create-a-new-app-with-AppKit-1.0) - Tutorial on building a simple app

* [Rationale for RAILS_DATAROOT](Rationale-for-RAILS_DATAROOT) - how shared applications run as the user and store the user's data in their own space

### Sharing Apps

1. [Use the awesim CLI to share an app](Use-the-awesim-CLI-to-share-an-app) using `awesim setup` and `awesim lint`
2. [Manage access to a shared app](Manage-access-to-a-shared-app) using `awesim permission`
3. [Update a shared app](Update-a-shared-app) - using `awesim update`, `awesim restart`, and `awesim maintenance`

### How to

* [Fixing broken links to results files](Fixing-broken-links-to-results-files)
* [Adding File Upload Caching for File Attachments](Adding-File-Upload-Caching-for-File-Attachments)
    - this will eventually be merged as a feature in a future version of the app kit
* [Accessing Output and Error files](Accessing-Output-and-Error-files)
    - best practice for making job log files available to users through your app
* [Where to store results and how to make them URL accessible](Where-to-store-results-and-how-to-make-them-URL-accessible)
* [Resolving the file path to a results file of a simulation](Resolving-the-file-path-to-a-results-file-of-a-simulation)
* [Resolving the URL to a results file of a simulation](Resolving-the-url-to-a-results-file-of-a-simulation)
* [Validating the results of a simulation](Validating-the-results-of-a-simulation)
* [Managing `public/.htaccess`](Managing-htaccess)
    - **do this after cloning an app or creating a new app under ~/awesim_dev/**
* [Setting and modifying the application root](Setting-and-modifying-the-application-root)
* [Updating an App to Enable Sharing](Updating-an-App-to-Enable-Sharing)
    - Do this if you built an app before app sharing was introduced (pre App Kit 1.0).

### Troubleshooting

* [Problem submitting jobs from command line or rails console](Problem-submitting-jobs-from-command-line-or-rails-console) - _temporary issue till we switch to new web infrastructure in the Spring_

* [Sandbox app is running in production mode](Sandbox-app-is-running-in-production-mode) - how to ensure your sandbox/development (rails1-9) is running in development mode
* [Problems accessing shared app](Problems-accessing-shared-app) - your app works in sandbox/development but when you share the app you experience problems accessing it
* Results are not accessible from the app - make sure to [save user's results files to the right place](Where-to-store-results-and-how-to-make-them-URL-accessible)! 
* [Assets not loading in production](Assets-not-loading-in-production)

### App Kit 1.0

* **[Release Notes for AppKit 1.0](Release-Notes-for-AppKit-1.0)**
* **[Porting an existing app to AppKit 1.0](Port-an-existing-app-to-AppKit-1.0)**


### Gems

For building a web app:

* [osc_machete_rails gem](https://github.com/AweSim-OSC/osc_machete_rails) -  [docs](http://www.rubydoc.info/gems/osc_machete_rails/) - enable Rails apps to manage batch simulations using simulation templates
  * [osc_machete_rails stages simulations to a unique directory](osc_machete_rails-stages-simulations-to-a-unique-directory)

* [ood_appkit](https://github.com/OSC/ood_appkit) - Provides dataroot and application and numerous helper methods for system accessibility applications.

* [awesim_branding](https://github.com/AweSim-OSC/awesim_branding) Provides an AweSim branded header and backward compatibility for applications created with `awesim_rails` gem.
* [awesim_rails](https://github.com/AweSim-OSC/awesim_rails/) **DEPRECATED** AweSim branding and dataroot manipulation. Replaced by `ood_appkit` and `awesim_branding`
* [awesim_rails_logging](https://github.com/AweSim-OSC/awesim_rails_logging) - provide custom formatter to tag production logs with user and app token. We will eventually use this to provide developers access to logs of the users of their apps.
* [rails-application-template](https://github.com/AweSim-OSC/rails-application-template) - use to generate a new app using the command `awesim rails new`

Utility:

* [osc-vnc gem](https://github.com/AweSim-OSC/osc-vnc) - [docs](http://www.rubydoc.info/gems/osc-vnc) - help launch vnc sessions on compute nodes and Oxymoron cluster
* [osc-reservations gem](https://github.com/AweSim-OSC/osc-reservations) - [docs](http://www.rubydoc.info/gems/osc-reservations) - **this is currently broken** - provide read-only information about the reserved nodes you have access to

Dependencies:

* [osc-machete gem](https://github.com/AweSim-OSC/osc-machete) - [docs](http://www.rubydoc.info/gems/osc-machete/) - submit, check the status, setup dependencies, and stop batch jobs; a generic interface that sits in front of pbs-ruby 
* [osc_machete_rails gem](https://github.com/OSC/osc_machete_rails/) - [docs](http://www.rubydoc.info/gems/osc_machete_rails/) - Build and manage simulation workflows.
* [pbs-ruby gem](https://github.com/AweSim-OSC/pbs-ruby) - [docs](http://www.rubydoc.info/gems/pbs) - provide Ruby interface to Torque libraries



### Example Apps

* [containerfillsim](https://github.com/AweSim-OSC/containerfillsim) - example Rails app that uses osc-machete to submit simulation templates and osc-vnc to visualize results using Paraview