Giter VIP home page Giter VIP logo

esri / storymap-cascade Goto Github PK

View Code? Open in Web Editor NEW
94.0 32.0 57.0 16.06 MB

The Story Map Cascade℠ app lets you combine narrative text with maps, images, and multimedia content in an engaging, full-screen scrolling experience.

Home Page: https://storymaps.arcgis.com/en/app-list/cascade/

License: Apache License 2.0

JavaScript 79.50% CSS 11.68% HTML 2.26% Batchfile 0.01% Shell 0.07% Makefile 0.01% Smarty 0.61% Less 3.16% Handlebars 0.96% SCSS 1.54% Sass 0.20%
storymaps storymap storytelling publishing-sharing

storymap-cascade's Introduction

Note: Classic Esri Story Maps templates are in extended support on ArcGIS Online as of September 2021 and mature support on ArcGIS Enterprise 10.9.1. For the latest information on the transition from classic Esri Story Maps to ArcGIS StoryMaps, click here.

Story Map Cascade

The Story Map Cascade℠ app lets you combine narrative text with maps, images, and multimedia content in an engaging, full-screen scrolling experience. In a Cascade story, sections containing text and in-line media can be interspersed with "immersive" sections that fill the screen with your maps, 3D scenes, images, and videos. Cascade is ideal for making compelling, in-depth stories that are very easy for people to navigate.

Screenshot

View it live | Download | Cascade page on Esri Story Maps website

Latest release is version 1.23.0, which corresponds to the June 2022 release of ArcGIS Online. If you want to be informed of new releases, we recommend you watch this repository (see GitHub help). See the release page for release notes.

Help content

Introduction

A Cascade story can be created from ArcGIS Online, from the Esri Story Maps website, or from ArcGIS Enterprise. The Cascade story's data are stored in a Web Application Item. This repository provides the application source code for developers who want to customize the application.

For more information about the application, including a gallery of examples and a step-by-step tutorial, please see the Cascade page on the Esri Story Maps website.

Instructions

First, create your Cascade story in ArcGIS using the step-by-step tutorial. Once your story is ready, you have to find its ID in ArcGIS. The ID is a 32 character string that you will find in your web browser's address bar when you are viewing your story.

Screenshot

  1. Download the application
  2. Deploy the application on your webserver. See FAQ for details
  3. Edit index.html, find the configuration section on line 47 and paste in your application ID
  4. Navigate to index.html (e.g., http://127.0.0.1/Cascade/index.html)

You can continue to use the builder in ArcGIS to modify your story.

See customize the look and feel section or developer guide if you want to modify the app.

If you are using ArcGIS Enterprise, please follow the instructions at the end of app/config.js to configure the application.

Feedback / support

We would love to hear from you!

When you contact us, don't hesitate to include a link to your application to make it easier for us to understand what you are working on.

FAQ

For more answers, please see the Story Map website FAQ page; it includes a section about Cascade.

What are the supported browsers?

Cascade stories are supported on Internet Explorer 11 and above, Chrome, Firefox, Safari and the most recent tablet and smartphone devices.

Cascade authoring is supported on a desktop computer for Chrome, Firefox, and Safari. We are considering support for other browsers.

We actively test the application in all major browsers but if you experience difficulties, especially with the builder, we recommend that you use Chrome.

Tips for your content

We have posted a number of tips and tricks for authoring your Cascade app on the ArcGIS blog, as well as several "How To Cascade" tutorials using Cascade itself.

Security

Can I keep my story private?

Yes, the regular ArcGIS security model applies. By default your story is private, you can share it through Cascade builder or ArcGIS. When you share your story through the Cascade builder, its maps and layers will also be shared if you own them or have privileges to share them. You will still need to make sure webscenes and embedded apps are accessible to your audience when you share, as they are not shared automatically with the story.

Can I use private web maps or layers?

Yes.

When the story is hosted in ArcGIS Online or ArcGIS Enterprise, users who don't have access to the story or a web map used in the story will be redirected to the ArcGIS sign-in page. It is not possible to display an authentication dialog in the application when it's hosted in ArcGIS.

When the story is hosted on your web server, by default an authentication dialog will appear inside the application. But we recommend that you configure the application to use OAuth. OAuth 2.0 based authentication is available for ArcGIS Online users with developer or organizational accounts and ArcGIS Enterprise users. Follow this procedure to add and register an application to get an OAuth application ID. Once you have that application, open index.html, locate the configOptions section and fill the oAuthAppId property.

If you are using secured services but don't want users to have to authenticate, you can use a proxy to store the username/password to be used, see Working with Proxy Services, and add proxy rules to specify what services need to use the proxy by editing PROXY_RULES in app/config.js.

Deployment

Deploying a Cascade story requires use of ArcGIS Online or ArcGIS Enterprise. The Cascade content must be created using the Cascade builder and will live in a Web Application Item.

Can I use the template without ArcGIS Online or ArcGIS Enterprise?

This is not a supported use case at this time. Please let us know if you are interested in such a scenario.

Where is the data stored?

The Cascade data are stored in a Web Application Item in ArcGIS Online or an ArcGIS Enterprise portal. This includes the narrative content, reference to any media used (web maps, web scenes, pictures, audio, videos, web pages), and app-wide settings.

The images, audio, and videos that you include in your story using the builder are not loaded into ArcGIS unless you upload them through the ArcGIS option. You have to make sure that those medias that are stored on other services are, and will remain, accessible to your audience.

Can I deploy Cascade using ArcGIS Enterprise?

Yes, Cascade is included with ArcGIS Enterprise starting at version 10.5.1.

Can I use the builder if I host the app on my own web server?

Yes, when the story is configured with an application ID, adding the URL parameter edit will open the builder. You will be prompted for user authentication.

How do I deploy the application on a web server?

If you are not familiar with web servers, here are some solutions:

  • Use the web server that comes with your Operating System. On Windows, this is Internet Information Services (IIS); if you have a C:\inetpub\wwwroot folder on your computer, you should be able to access its content using http://localhost
  • On Windows or Mac OS, use a simple web server like Mongoose (not recommended for production)

If you are experiencing some rendering issues like improper symbols appearing instead of icons, you will have extra configuration to perform. Some servers require the configuration of a new mime type to be able to serve Cascade fonts correctly. See the following links for more information:

Can I use a single deployment of Cascade for multiple stories?

Yes. If you have customized the application and deployed it on your server, you don't need to copy it multiple times, edit index.html and paste a different application ID for each story you want to publish.

Instead edit index.html, locate the configOptions section and fill the authorizedOwners property with the ArcGIS Online or for ArcGIS login of the owner(s) of the story you want to use. This makes it possible for the application to display any of stories created by the specified user(s) through a URL parameter.

Example of the same application displaying two stories:

Configuration

In addition to the configuration offered by the builder, the file app/config.js provides various additional settings. This is for example the place where you can override some settings like the list of Geocoder services to be used (changes override ArcGIS Online or your Organization default settings). See the documentation provided in that file for more details.

Customize the look and feel

Cascade currently offers a light and dark theme and the option to choose between four different fonts. Other look and feel customizations can be done using the regular application download and including the css/html overrides directly into index.html. A style tag is already present for you in index.html (search for /* CUSTOM CSS RULES */).

As the application Javascript and CSS are minified, we don't recommend that you directly edit those files (e.g. viewer-min.css, viewer-min.js, ...). In addition to being hard to edit, this will make application update complex for you.

If you want to change the behavior of one functionality or want to add new one, follow the developer guide below.

The easiest way to find the ID or path of a DOM element that you want to customize is to use your browser's developer tools -- read the documentation for Chrome, Safari, Firefox.

Developer guide

This developer guide is intended for developers who want to modify the behavior of, or add new functionalities to, the Cascade application. It requires knowledge of HTML, Javascript and CSS languages.

For more infomation about using and customizing Esri's Storytelling Apps follow the Story Maps Developers' Corner.

Application life cycle

Cascade fires events that allow customization with loose integration. This means that you don't need to understand the application internals to implement simple extensions.

To try those events, look in the file src/app/custom-scripts.js.

require(['dojo/topic'], function(topic) {
  /*
   * Custom Javascript to be executed while the application is initializing goes here
   */

  // The application is ready
  topic.subscribe('tpl-ready', function() {
    /*
     * Custom Javascript to be executed when the application is ready goes here
     */

    // console.log('Cascade is ready');
  });

  /*
   * Custom Javascript to be executed when a section becomes active
   */
  topic.subscribe('story-navigated-section', function(/*cfg*/) {
     // console.log('The section', cfg.index, 'is now active');
  });

});

Developer helpers

In addition to the events described above, the story data, configuration and useful helpers functions can be accessed through the global variable app.

console.log("Story title", app.Controller.getStoryTitle());
console.log("Sections objects", app.data.sections);
console.log("First section bookmark", app.data.sections[0].getBookmark());
console.log("First section text preview", app.data.sections[0].getPreviewText());
console.log("Sections display informations", app.display.sections);
console.log("Second section vertical position (px)", app.display.sections[1].top);
console.log("IDs of all the ArcGIS content in the story", app.Controller.getArcGISContent());

Environment setup

Clone the repository or download a copy of the repository as a zip file.

To build a production version of the application from the source code, you first need to install Node.js.

Then initialize the environment by running the following commands in the Cascade folder:

  • npm install
  • npm install –g grunt-cli

This will create a new node-modules folder in your project root with all the tools required to build the application. If you have trouble running the second command, see this documentation on how to install grunt-cli locally.

How to use the application from the source code

  • Make accessible the Cascade folder on a web server. Use your favorite server or run one with grunt server; this will start a server on port 8080
  • If using an ArcGIS Enterprise portal, configure the DEFAULT_SHARING_URL property in app/config.js (close to the bottom of the file)
  • Run the following command: grunt dev
  • Navigate to index.html using the URL parameter appid to specify the web item to be loaded, e.g.: http://localhost:8080/index.html?appid=ABCD (configuring index.html > configOptions.appid is not supported in development mode)
  • If you want to use a non-public story or the builder you need to configure an oAuth ID in index.html. Follow this procedure to add and register an application to get an OAuth application ID. Once you have that application, open index.html, locate the configOptions section and fill the oAuthAppId property.

How to build the application from the source code

  • Open a terminal and navigate to the Cascade folder
  • Run the following command: grunt

The deploy folder now contains the built application that you can deploy to your web server.

Issues building the application

The build script performs code validation through ESLint. You can disable those validations by editing Gruntfile.js -- look for the following comments /* Comment out to disable code linting */.

Design

Cascade relies on AMD and Dojo loader AMD for its application structure. Most of the viewer uses ES2015, and some builder components use React. The build chain is based on Grunt, r.js and Babel.

The application is structured as follows:

Path Contains
Gruntfile.js Build configuration
src/ Main source code folder with index.html
src/app/ Javascript and CSS source code
src/app/config.js App configuration file (loaded at execution time)
src/app/storymaps/tpl/ Cascade modules (build configuration files in the root)
src/app/storymaps/tpl/builder/ Builder modules (main modules are Builder.js, BuilderView.js)
src/app/storymaps/tpl/core/ Core modules (main modules are Core.js, MainView.js)
src/app/storymaps/tpl/print/ Print modules
src/app/storymaps/tpl/view/ UI components of the viewer and builder
src/app/storymaps/tpl/view/media/ Map, Scene, Image, Audio, Video, WebPage, Text
src/app/storymaps/tpl/view/section/ Cover, Sequence, Immersive and Title sections
src/app/storymaps/tpl/view/ui/ Header
src/app/storymaps/tpl/utils/ Utils, sharing, some external libraries
src/app/storymaps/issue-checker/ Issue checking utility (finds errors in story)
src/lib/ Dependencies (included in the final app)
src/lib-build/ Dependencies used by the build (not included in final app)
src/resources/ Static resources

The main dependencies are:

The application Javascript and CSS are minified into six files:

File
app/viewer-min.css Compressed CSS loaded when accessing the story as a viewer
app/viewer-min.js Compressed Javascript loaded when accessing the story as a viewer
app/builder-min.css Compressed CSS loaded when accessing the story as an author
app/builder-min.js Compressed Javascript loaded when accessing the story as an author
app/print-min.css Compressed CSS loaded when accessing the story in print mode
app/print-min.js Compressed Javascript loaded when accessing the story in print mode

Depending on the URL parameters, index.html will load the corresponding files.

Issues

Find a bug or want to request a new feature? Please let us know by submitting an issue.

Contributing

Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.

Licensing

Copyright © 2016-2018 Esri

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

A copy of the license is available in the repository's LICENSE.txt file.

Some open-source components of this project are licensed under other License terms, see src/lib/ folder for respective license files.

Library License
Bootstrap MIT
jQuery MIT
MediumEditor MIT
React BSD with patent grant
React-redux MIT
Redux MIT
vimeo-player-js MIT
youtube-api N/A
Clipboard.js MIT
ProgressJS MIT
FastClick MIT
Font Awesome SIL/MIT
Sortable MIT
React-Bootstrap MIT
Loader MIT
Hermite-resize MIT
Babel Polyfill MIT
jquery-mousewheel MIT
Color Thief MIT

Additionally, The Unite Gallery open-source library is located at src/app/storymaps/tpl/utils/UniteGallery.js. It is licensed MIT; those portions modified by the Story Maps team are licensed Apache 2.0 with the rest of this project.

storymap-cascade's People

Contributors

asizer avatar oevans avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

storymap-cascade's Issues

grunt dev not work

In the product mode the program can run perfectly, but there are errors in the development mode, the error message is as follows:
error

Autoplay settings

Hi,
I know this issue is not directly related to the storymap-cascade but i can't find any information on how to setup the default timeout for the autoplay.
If I append the &autoplay=1 in the url, my project is loading with autoplay but default to 10 sec. I would like to have a default of 5 sec.

Is it possible to change the default timeout in JS once loaded?

Thanks

Video Playback Control - Auto Play or Manual

Can a feature be added to the Cascade Story Map where a creator of the app can choose to make a video play automatically or require a response from a user to manually play a video?

This option would work for all video playback including in cover and immersive background videos, video added to the immersive "floating box" or video in the "Media" section where you can currently control the size of the video.

Latin Extended fonts

It seems that the project depends on Open Sans and Droid Serif webfonts without extended Latin character set. Are there any plans for subsituting current fonts with extended ones?
I've noticed that latin-ext is not available for Droid Serif so it would require to choose different font for sections.

Update developer build instructions

Building per the instructions in the readme (V1.8.3), left me with errors because the vimeo player was not installed. This appears to be listed in bower.json, but not package.json file. Installing bower and then running bower install seemed to do the trick.

Also npm install generated errors because the prebuilt binary for [email protected] was unavailable for darwin (mac osx). yarn install worked fine. This could be a transient error, but I'm left wondering what the correct build process is.

Build fails because clipboard.js missing

After npm install, grunt fails:

$ grunt
....
Running "requirejs:builder" (requirejs) task
Error: ENOENT: no such file or directory, open '/Users/regan/wwwroot/StoryMaps/storymap-cascade/src/lib//clipboard/dist/clipboard.js'
In ... storymaps/common/ui/share/ShareURLPanel
....

This is likely due to the fact that dist/ is in the python section of your .gitignore file, so these files may be in your local files, but never made it into the repo.

Issue hosting code on my AWS machine instance

For some reason when I run the node cmd prompt commands on an AWS machine I've set up, the "deploy" folder does not populate with the correct files and directories.

When I do the same workflow on my laptop it works fine and I can host the index.html and access it via "localhost". Not sure what could be happening here. Any ideas?

Substitute Image Not Showing on Mobile Devices

We have noticed bug with background videos that seems to be unique to the Cascade template. On mobile devices, the substitute images don't show up in place of the videos. Instead, it says "Sorry, this content is not accessible." I've confirmed this on actual android and apple devices, and it's reflected in Chrome's mobile device simulations as well. Here are test URL's showing the behavior:

Used an iPhone and navigated to the "Why Is Petrified Forest a Great Place to Study Birds?" section:
http://www.arcgis.com/apps/Cascade/index.html?appid=0e0b07b70d4c4c16b320a34495fa64ce

How to get h2 in transition

Hi, it's not a issue, i'm wondering how to select the currect section's transition h2. I want to replace it in jquery but i'm not able to properly access it.

image

from the documentation I see the getBookmark and getPreviewText methods but nothing else...

Thanks for the input

Nothing publishes to the "story-scroll-section" topic.

This section never fires, because nothing publishes to the "story-scroll-section" topic.

topic.subscribe("story-scroll-section", function(cfg){
console.log("The section", cfg.index, "is now active");
});

It works just fine subscribing to the "story-navigated-section" topic, though. Should be an easy fix in either direction.

Option to Remove Title Box from Cover Slide

I think that it would be beneficial to have the option to remove the title box from the cover slide so that you can have a video without having a period in the center as a filler to the title. Basically I would like the title of the app not have to be linked to the title box in the cover slide.

Media Types

I'm interested in building a custom media type... another option for adding a custom chart control in an immersive section. Am I able to do this. Do you have documentation for this?

Adding audio to a background video

Hi,

I'd like to unmute the audio on a background Vimeo video I'm using in my Cover section. According to the Vimeo docs, this can be achieved by add the the param &mute=0 to the video url alongside background=1. However, this is not working with storymap-cascade.

On line 196 of Video.jsx, where Vimeo iFrames are constructed, a player Id is added to the URL string: &player_id=player-' + this._domID. It seems to be this player ID that overrides the &mute=0 param. Assuming that Esri has a custom player that is being loaded with this ID and is muting the audio, is there anyway that the muting functionality could be turned back over to the developer? Any other suggestions?

Thanks for any help.

Aborted (core dumped) when running "requirejs:builder" when building

I'm having trouble building the application from source code.

All I've done is clone the repository, run npm install and npm install –g grunt-cli and then run the grunt command. Here is a log:

$ grunt
Running "jshint:nls-en" (jshint) task
>> 2 files lint free.

Running "jshint:nls-all" (jshint) task
>> 74 files lint free.

Running "eslint:target" (eslint) task

/home/vince/github/storymap-cascade/src/app/storymaps/tpl/print/media/Text.jsx
  39:21  warning  Dangerous property 'dangerouslySetInnerHTML' found  react/no-danger
  43:35  warning  Dangerous property 'dangerouslySetInnerHTML' found  react/no-danger

/home/vince/github/storymap-cascade/src/app/storymaps/tpl/print/PrintViewReact.jsx
  258:20  warning  Dangerous property 'dangerouslySetInnerHTML' found  react/no-danger

✖ 3 problems (0 errors, 3 warnings)


Running "clean:build" (clean) task
>> 0 paths cleaned.

Running "clean:deploy" (clean) task
>> 0 paths cleaned.

Running "clean:jsapioptim" (clean) task
>> 0 paths cleaned.

Running "clean:fonts" (clean) task
>> 0 paths cleaned.

Running "mkdir:all" (mkdir) task
Creating "deploy/app"...OK
Creating "build"...OK

Running "copy:fonts" (copy) task
Copied 40 files

Running "copy:fonts2" (copy) task
Copied 9 files

Running "copy:fonts3" (copy) task
Copied 6 files

Running "copy:youtube" (copy) task
Copied 1 file

Running "copy:calcite-vars" (copy) task
Copied 2 files

Running "copy:less-in-react" (copy) task
Copied 116 files

Running "copy:hbs-in-react" (copy) task
Copied 63 files

Running "babel:dev" (babel) task

Running "copy:commonResources4react" (copy) task
Created 102 directories, copied 267 files

Running "requirejs:builder" (requirejs) task
grunt[44027]: ../src/node_contextify.cc:649:static void node::contextify::ContextifyScript::New(const v8::FunctionCallbackInfo<v8::Value>&): Assertion `args[1]->IsString()' failed.
 1: 0x7f06d7cb0a7c node::Abort() [/lib64/libnode.so.72]
 2: 0x7f06d7cb0b17  [/lib64/libnode.so.72]
 3: 0x7f06d7ca3188 node::contextify::ContextifyScript::New(v8::FunctionCallbackInfo<v8::Value> const&) [/lib64/libnode.so.72]
 4: 0x7f06d806a5d5 v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) [/lib64/libnode.so.72]
 5: 0x7f06d806b67f  [/lib64/libnode.so.72]
 6: 0x7f06d806b968  [/lib64/libnode.so.72]
 7: 0x7f06d806bc9d v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [/lib64/libnode.so.72]
 8: 0x7f06d8b30ab9  [/lib64/libnode.so.72]
Aborted (core dumped)


Immersive Section: Alternative Text for Views Not Custom

I have added an Immersive Section to my story map and would like to associate alternate text with the views that I am adding. I built my story map and added an immersive section that included 3 views with video. When I add the alternative text, and save each view the alternative text is still visible. When I save the story map and view it publicly the tags cannot be found when I search the code using Inspect tools in Google Chrome. You can see my working example here that the views no longer have alternative text associated with them.

where to add proxy settings to bypass login screen?

I have been able to configure all of my other story maps (tour, shortlist, series, journal) to use proxy settings (either in the index.html, config.js ) to bypass log in screen for private maps and/or secure services, but cannot figure out where to apply them in the cascade files. All of the previous things I tried are not working with cascade.

I also have an OAuth app ID, but even reading the index.html, it seems that will not bypass as the comments read "When specified, sign-in is mandatory even if your story is public." I have added my appID and yes the login screen appears, which defeats my purpose.

How and where can I add the proxy rules code in the downloaded app? I am using non-developer download ZIP.

Story Map Cascade hosted on web server does not load in browser

Cannot get Story Maps Cascade to go beyond the loading GIF after being deployed on web server. I worked with Esri Technical Support who suggested I raise the issue here after they were able to replicate the issue with multiple deployments on several different machines. Don't have a ton of additional information, but the bootstrap-overide.less is giving me a 404 error. Let me know if you need any additional information. Thanks!

Deploy file not being created

After running npm Install and npm install –g grunt-cli I went to the index.html to enter in the App id. Then, I run the grunt command and I get to the point where the CMD prompt stops at Running "watch" task : Waiting.... Nothing is happening after that, its just stuck there waiting. I have successfully installed Map Series and have been able to get the deploy file but I cant get Cascades to work. I tried the same process with an older version of cascades , version 1.9.1, but was still unable to run grunt successfully.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.