## Overview This is the official git repository hosting the source code for the [ScratchJr](http://scratchjr.org/) project. ScratchJr can be built both for iOS and Android. A pure-web version or Chrome-app version is planned to follow at some point in the future. Platform | Status -------- | ------------- iOS | Released in App Store Android | Released in Google Play and Amazon store ## Release Schedule As of this writing, the Android version now supports Android 4.4 and above. ## Architecture Overview The diagram below illustrates the architecture of ScratchJr and how the iOS (functional), Android (functional) and pure HTML5 (future) versions share a common client. ![Scratch Jr. Architecture Diagram](doc/scratchjr_architecture.png) ## Directory Structure and Projects This repository has the following directory structure: * src/ - Shared JavaScript code for iOS and Android common client. This is where most changes should be made for features, bug fixes, UI, etc. * editions/ - Assembly directories for each "flavor" of ScratchJr. These symlink to src for common code, and could diverge in settings and assets. * free/ - Free edition JavaScript, including all shared code for all releases * android/ - Android port of Scratch Jr. (Java, Android Studio Projects) * ScratchJr/ - Android Studio Project for ScratchJr Android Application * bin/ - Build scripts and other executables * doc/ - Developer Documentation * ios/ - XCode project for iOS build. (Make sure to open ScratchJr.xcworkspace not ScratchJr.xcodeproj) ## Building ScratchJr ### Initial setup Regardless of whether you are doing iOS development or Android development, you should do these steps. *These instructions assume you are building both versions on Mac OSX, with [Homebrew](http://brew.sh) installed.* 1. Clone or update the code for this repo 2. Ensure you have node and npm [installed](http://blog.npmjs.org/post/85484771375/how-to-install-npm). 3. Run sudo easy_install pysvg to install python svg libraries 4. Run brew install librsvg to install commandline `rsvg-convert` 5. Run brew install imagemagick to install commandline `magick` 6. In the top level of the scratchjr repo directory, install npm dependencies for bundling the JavaScript: npm install ### iOS 1. To build the iOS version, you need to have a Mac with XCode 2. Run brew install cocoapods to install CocoaPods 3. Run pod install to install the Firebase Analytics dependencies 4. Open XCode 5. In XCode, open ios/ScratchJr.xcworkspace ### Android 1. Install or update Android Studio 2. In Android Studio, open the project android/ScratchJr 3. Choose the appropriate flavor/build variant in Android Studio *Note: you can still do Android development on Ubuntu. Instead of the install commands above, run:* 1. sudo easy_install pysvg to install python svg libraries 2. sudo apt-get install librsvg2-bin to install rsvg-convert 3. sudo apt-get install imagemagick to install ImageMagick ## Where and how to make changes All changes should be made in a fork. Before making a pull request, ensure all changes pass our linter: * npm run lint For more information, see [CONTRIBUTING.md](CONTRIBUTING.md). ## Code credits ScratchJr would not be possible without free and open source libraries, including: * [Snap.svg](https://github.com/adobe-webplatform/Snap.svg/) * [JSZip](https://github.com/Stuk/jszip) * [Intl.js](https://github.com/andyearnshaw/Intl.js) * [Yahoo intl-messageformat](https://github.com/yahoo/intl-messageformat) ## Acknowledgments ScratchJr is a collaborative effort between: * [Tufts DevTech Research Group](http://ase.tufts.edu/devtech/) * [Lifelong Kindergarten group at MIT Media Lab](http://llk.media.mit.edu/) * [Playful Invention Company](http://www.playfulinvention.com/) * [Two Sigma Investments](http://twosigma.com)