├── README.md └── scripts ├── .gitignore ├── checkLinks.js └── package.json /README.md: -------------------------------------------------------------------------------- 1 | ### **Awesome Volt** [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 2 | 3 | 4 | A collection of awesome things regarding Volt ecosystem. 5 | 6 | - [Volt](#volt) 7 | - [Volt General Resources](#volt-general-resources) 8 | - [Volt Community](#volt-community) 9 | - [Volt Tools](#volt-tools) 10 | - [Volt Tutorials](#volt-tutorials) 11 | - [Volt Components](#volt-components) 12 | - [Videos](#videos) 13 | - [Demos and Apps](#demos-and-apps) 14 | - [Contribution](#contribution) 15 | 16 | --- 17 | ### Volt 18 | > A Ruby web framework where your Ruby runs on both server and client 19 | 20 | See how [you can build a Todo Tracking App in Volt in 10 minutes](https://www.youtube.com/watch?v=KbFtIt7-ge8) 21 | 22 | #### Volt General Resources 23 | * [Volt Official Site](http://voltframework.com/docs) 24 | * [Volt GitHub](https://github.com/voltrb/volt) 25 | * [Volt Official docs](http://docs.voltframework.com) in English, japanese and spanish 26 | 27 | #### Volt Community 28 | * [Volt Gitter](https://gitter.im/voltrb/volt) 29 | * [Volt StackOverflow](http://stackoverflow.com/questions/tagged/voltrb) 30 | * [Volt Twitter](https://twitter.com/voltframework) 31 | * [Volt Subreddit](https://www.reddit.com/r/voltframework) 32 | * [Volt Blog](http://voltframework.com/blog) 33 | 34 | #### Volt Tools 35 | * [Textmate bundle for Volt](https://github.com/jonah-potter/volt.tmbundle) 36 | * [BrowserIrb](https://github.com/voltrb/volt-browser_irb) Provides an irb like terminal in the browser 37 | 38 | #### Volt Tutorials 39 | * [Sample todo App](http://docs.voltframework.com/en/tutorial/a_sample_todo_app.html): step by step tutorial for a simple todo app 40 | * [Rick Carlino series](http://datamelon.io/blog/) see also [videos](#videos) below 41 | 42 | #### Volt Components 43 | * [volt-fields](https://github.com/voltrb/volt-fields) 44 | * [volt-user_templates](https://github.com/voltrb/volt-user_templates) 45 | * [volt-pagination](https://github.com/voltrb/volt-pagination) 46 | * [volt-google_maps](https://github.com/voltrb/volt-google_maps) 47 | * [volt-code_highlight](https://github.com/voltrb/volt-code_highlight) 48 | * [volt-datepicker](https://github.com/voltrb/volt-datepicker) 49 | * [volt-sql](https://github.com/voltrb/volt-sql) 50 | * [volt-redis_message_bus](https://github.com/voltrb/volt-redis_message_bus) 51 | * [volt-upload](https://github.com/alexandred/volt-upload) File upload support for Volt. Supports storing to the database, local storage and Cloudinary 52 | * [volt-upload](https://github.com/andrew-carroll/volt-upload) Drop-in file upload support 53 | * [volt-braintree](https://github.com/cbetta/volt-braintree) Unofficial Braintree component for Volt that provides you with a way to load the Braintree 54 | * [volt-highcharts](https://github.com/balmoral/volt-highcharts) 55 | * [matthew342/volt-easypiechart](https://github.com/matthew342/volt-easypiechart) Simple Volt component to use the EasyPieChart jQuery plugin 56 | * [volt-bootflat](https://github.com/voltrb/volt-bootflat) Bootflat Bootstrap theme 57 | * [volt-usa](https://github.com/heri/volt-usa) 18F US Web Design framework 58 | * [volt-foundation](https://github.com/voltrb/volt-foundation) volt component to add zurb foundation 59 | * [volt-awesome](https://github.com/heri/volt-awesome) theme based on Font Awesome 60 | * [volt-osmaps](https://github.com/heri/volt-osmaps) Volt component wrapping Leaflet.js to use OpenStreetMaps 61 | * [volt-table](https://github.com/matthew342/volt-table) able component for Volt with paging, sorting, and filtering built in. 62 | * [volt-simple_icon_selector](https://github.com/neurodynamic/volt-simple_icon_selector) 63 | * [volt-autocomplete](https://github.com/miguelalarcos/volt-autocomplete) 64 | * [volt-packjs](https://github.com/ybur-yug/volt-packjs) A gem to automatically grab, minify, and add a JS lib to a Volt app's assets. 65 | * [volt-webix](https://github.com/balmoral/volt-webix) Volt wrapper of Webix Javascript library. 66 | * [volt-slim](https://github.com/ASnow/volt-slim) 67 | 68 | --- 69 | ### Demos and Apps 70 | > Applications done with Volt 71 | 72 | * [Opal-Phaser](http://opalphaser.com/) an Opal wrapper for the Phaser framework, to write Canvas or WebGL games in Ruby. [Source](https://github.com/orbitalimpact/opal-phaser-site) 73 | * [volt-highcharts-app](http://volt-highcharts-app.herokuapp.com/) A whimsical demonstration of highly-reactive Ruby+Opal+Volt wrap of Highcharts JS. [source](https://github.com/balmoral/volt-highcharts-app) 74 | * [unjustice](http://unjustice.herokuapp.com/), your companion to navigating the St Louis Municipal Court System. 75 | * [ThirdEye](https://github.com/jikkujose/third_eye) Real time monitoring system for crowd sourced traffic events 76 | * [](http://www.timeformattingisannoying.com/) A simple Volt app for fiddling with strftime formatting. [Source](https://github.com/neurodynamic/rubytime) 77 | * [volt chat](https://voltchat.herokuapp.com/) 78 | * [iandonovan/blackjack-volt](https://github.com/iandonovan/blackjack-volt) 79 | * [volt_twitter_clone](https://immense-plains-7200.herokuapp.com/) [source](https://github.com/fry1026/volt_twitter_clone) 80 | * [heri/kutoa](https://github.com/heri/kutoa) Connectin refugees and donators #Aidrefugees 81 | * [maxplomer/simple_public_timeline](https://github.com/maxplomer/simple_public_timeline) App that displays 20 newest tweets 82 | * [maxplomer/volt_hipster_cat](https://github.com/maxplomer/volt_hipster_cat) Game 83 | * [xurde/voltchat](https://github.com/xurde/voltchat) 84 | * [kodi0/voltblog](https://github.com/kodi0/voltblog) 85 | 86 | 87 | --- 88 | ### Videos 89 | 90 | * [Building a Todo Tracking App in Volt in 10 minutes](https://www.youtube.com/watch?v=KbFtIt7-ge8) 91 | * [What is Volt in 6 min](https://www.youtube.com/watch?v=P27EPQ4ne7o) 92 | * [RubyConf 2014 - Isomorphic App Development with Ruby and Volt by Ryan Stout](https://www.youtube.com/watch?v=7i6AL7Walc4) 93 | * [Routes and Templates in Volt](https://www.youtube.com/watch?v=1yNMP3XR6jU) 94 | 95 | #### @RickCarlino's Screencast Series 96 | * [Episode 19: Recurring Volt Background Jobs with Clockwork Gem](https://www.youtube.com/watch?v=5aeIclexFs0) 97 | * [Episode 17: Promises Objects in Volt / Opal](https://www.youtube.com/watch?v=YRqod0qNGWg) 98 | * [Episode 15: Pagination of Volt Collections](https://www.youtube.com/watch?v=mFBo6f-I-jQ) 99 | * [Episode 13: Routes and Multi-View apps](https://www.youtube.com/watch?v=cpOFL5u3Ykw) 100 | * [Episode 12: Volt-Mailer gem (premium)](https://www.youtube.com/watch?v=2xjwxhC3Jfc) 101 | * [Episode 11: A Payment Form with Stripe and Volt](https://www.youtube.com/watch?v=o13w8n7TMLY) 102 | * [Episode 10: Six Concepts for New Volt Framework](https://www.youtube.com/watch?v=x1yPgUUG0Js) 103 | * [Episode 9: Twitter Clone Demoing Volt User Permissions](https://www.youtube.com/watch?v=wFUkVqPOka4) 104 | * [Episode 8: Using JS Libraries in Opal](https://www.youtube.com/watch?v=B0b7l4hG-C8) 105 | * [Episode 7: Volt Runners, Database Seeds and Faker](https://www.youtube.com/watch?v=HG4L0WFagbM) 106 | * [Episode 6: Productivity with the Volt Component Ecosystem](https://www.youtube.com/watch?v=whbYM7Jd7M8) 107 | * [Episode 5: Static Frontend Apps with Ruby](https://www.youtube.com/watch?v=5NHU0865tj0) 108 | * [Episode 4: Volt APIs](https://www.youtube.com/watch?v=J7tg76CothM) 109 | * [Episode 3: Understanding Volt Views, Tags and ModelControllers](https://www.youtube.com/watch?v=UnQCEeo7gKE) 110 | * [Episode 2: Building a realtime chat app in Volt](https://www.youtube.com/watch?v=rc4GR04KUy0) 111 | * [Episode 1: Understanding Volt::Task objects in the Volt Framework](https://www.youtube.com/watch?v=th0UKrSFdo0) 112 | 113 | **Ricks Premium Videos** 114 | 115 | * [Deploying Volt Apps to Heroku](http://blog.datamelon.io/blog/2015/deploying-volt-apps-to-heroku.html) 116 | * [Building a CORS App in Volt](http://blog.datamelon.io/blog/2015/building-cors-apis-in-volt.html) 117 | * [Advanced Routing and Templating](http://blog.datamelon.io/blog/2015/advanced-routing-and-templating.html) 118 | 119 | --- 120 | ### Contribution 121 | Your contributions and suggestions are heartily♡ welcome. 122 | 123 | 124 | --- 125 | ### License 126 | [![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/) 127 | -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage 17 | .grunt 18 | 19 | # Compiled binary addons 20 | build/Release 21 | 22 | # Dependency directory 23 | node_modules 24 | 25 | # Users Environment Variables 26 | .lock-wscript 27 | 28 | # Temporary folder 29 | tmp -------------------------------------------------------------------------------- /scripts/checkLinks.js: -------------------------------------------------------------------------------- 1 | var Promise = require('bluebird'); 2 | var _ = require('lodash'); 3 | var fs = Promise.promisifyAll(require('fs')); 4 | var markdown = require('markdown').markdown; 5 | var request = require('request'); 6 | var url = require('url'); 7 | 8 | function getLinks(tree) { 9 | var links = []; 10 | 11 | if (!_.isArray(tree)) { 12 | return links; 13 | } 14 | 15 | if (tree[0] === 'link') { 16 | // Only absolute links 17 | var urlObj = url.parse(tree[1].href); 18 | if (urlObj.protocol) { 19 | links = [tree[1].href]; 20 | } 21 | } else { 22 | links = _.flatten(_.map(tree.slice(1), getLinks)); 23 | } 24 | return links; 25 | } 26 | 27 | fs.readFileAsync(__dirname + '/../README.md', 'utf8') 28 | .then(function (text) { 29 | var tree = markdown.parse(text); 30 | var links = getLinks(tree); 31 | 32 | // Get linked pages in parallel 33 | Promise.map(links, function (link) { 34 | return new Promise(function (resolve, reject) { 35 | request.head(link, {rejectUnauthorized: false, timeout: 5000}, 36 | function (error, response, body) { 37 | // Always resolve (do not fail fast). 38 | if (error) { 39 | resolve({ 40 | link: link, 41 | error: error 42 | }); 43 | } else { 44 | resolve({ 45 | link: link, 46 | status: response.statusCode 47 | }); 48 | } 49 | }); 50 | }); 51 | }, {concurrency: 10}) 52 | .then(function (results) { 53 | return _.filter(results, function (result) { 54 | return result.error || result.status !== 200; 55 | }); 56 | }) 57 | .then(function (results) { 58 | // With bad links, we need to do a little manual confirmation. 59 | // For example, if we get an error, it's possible the endpoint 60 | // does not respond to head. 61 | console.log(results); 62 | }); 63 | }); 64 | -------------------------------------------------------------------------------- /scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "awesome-volt", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "bluebird": "^3.7.2", 7 | "lodash": "^4.17.21", 8 | "markdown": "^0.5.0", 9 | "request": "^2.53.0" 10 | } 11 | } 12 | --------------------------------------------------------------------------------