GithubHelp home page GithubHelp logo

ipaulito / burningman_art_guide Goto Github PK

View Code? Open in Web Editor NEW

This project forked from timcannady/burningman_art_guide

0.0 2.0 0.0 21.14 MB

License: MIT License

Ruby 14.68% JavaScript 5.08% CSS 0.66% HTML 79.58%

burningman_art_guide's Introduction

2015 Burning Man Art Guide & Tour Generator

Browse the official art installations at the 2015 Burning Man festival. You can discover new pieces, read their meaning, visit the artist's website and donate to show support. For the more adventurous: create a 'tour guide' to save the pieces you hope to find this year!

Demo & Webcast

2015 Burning Man Art Guide & Tour Generator

Webcast

Technologies

This was a pet project for learning new technologies. I've listed all below and bolded those which were either new or unfamiliar:

Frontend:

  • HTML + CSS
  • JavaScript
  • jQuery + Ajax
  • React

Backend:

  • Ruby
  • Postgresql
  • Rails

Testing and Scraping:

  • Capybara
  • Nokogiri

How it Works

  1. Nokogiri scrapes the art at BurningMan.org

  2. Ruby uses four models:

  • Collection (the scraped art)
  • Installation (an individual art installation)
  • Tour (a user-generated tour)
  • Tour_Installation (a join table between the many-to-many Tour <-> Installation relationship)
  1. The DB is supported by Postgresql

  2. Rails supports the routing and controllers

  3. JavaScript supports the one-page nature

  4. React handles HTML structure and DOM interaction

I chose React because I liked that it was modular and not too large of an undertaking. I also like that it combines most of the front-end behavior into single components, as opposed to having code spread across multiple files (html, css, js). I chose Nokogiri because I think scraping is really powerful in the absence of an API.

Beyond learning these technologies in general, some specific things I learned included:

  • React: passing props and state between a multi-branched tree
  • React: using OOJS
  • React: using Ajax
  • Ajax: using Ajax in a new way, accompanied with JS promises

I also enjoyed learning "how it all comes together." How to use multiple technologies (and languages) in a real-world app.

The challenges I faced had to do with connecting the front-end to the back-end. I had to go from Ruby to JavaScript to Ruby and back. And via asynchronous requests, which I'm comfortable with but was using a new technique with. I'm also somewhat new to JavaScript in general, so keeping everything object-oriented was a fun challenge as well.

I'd use React again. It requires a little more setup than just doing things with jQuery, so it might make less sense for exceptionally-light projects. Beyond that I think it's great.

Invitation

This project is open-source, so please feel free to clone, tinker, refactor, break and rebuild, submit pull requests, issues or feature ideas. Feel free to get in touch on Twitter!

To setup locally:

  • fork + clone
  • bundle install
  • bundle exec rake db:create db:migrate db:seed
  • bundle exec rails s
  • browser -> localhost:3000

References

Schema:

Schema

General app structure:

Appstructure

React tree:

Reacttree

Homepage wireframe:

Wireframe

Docs

http://facebook.github.io/react/docs/thinking-in-react.html

https://facebook.github.io/react/docs/why-react.html

Gems

https://github.com/reactjs/react-rails#component-generator

Tutorials

http://reactfordesigners.com/labs/reactjs-introduction-for-people-who-know-just-enough-jquery-to-get-by/

http://ryanlanciaux.github.io/blog/2014/05/26/trying-out-reactjs-with-the-marvel-api/

https://egghead.io/series/build-your-first-react-js-application

General

https://github.com/enaqx/awesome-react

https://www.youtube.com/watch?v=VsVwMrEuaoY

https://www.youtube.com/watch?v=kTSsZrub5iE

https://www.codementor.io/reactjs/tutorial/react-vs-angularjs#/

http://www.quora.com/Is-React-killing-Angular

http://www.funnyant.com/reactjs-what-is-it/

http://chrisharrington.github.io/demos/performance/

http://www.quora.com/Whats-the-best-place-to-learn-React-js

https://devmag.io/post/503/angularjs-vs-reactjs-should-i-be-worried-if-i-plan-to-be-a-mean-stack-developer-by-opting-angular

https://www.reddit.com/r/javascript/comments/2uvz0x/whats_so_great_about_reactjs/

burningman_art_guide's People

Contributors

timcannady avatar

Watchers

 avatar  avatar

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.