GithubHelp home page GithubHelp logo

mobilize-feed's Introduction

MobilizeFeed

Demo frontend app using the Mobilize America API

How to run app

Check out a deployed version here, or clone it on your machine and run the following commands from the project directory:

npm install to install dependencies

npm start to start server

npm test to run tests

Dependencies

  • ReactJS - Common javascript UI library, already seems to be used by Mobilize
  • create-react-app - Standard react configuration, already seems to be used by Mobilize
  • Google Maps - Commons maps library, already used by Mobilize
  • google-map-react - react wrapper for Google Maps API that does what we need it to do, at least for this example. Had more stars and fewer open issues than google-maps-react library.

Overview of architecture

Kept this pretty simple. Most of the code and all of the state is in App.js. Used vanilla CSS. Just imported one react library for the map. For automated testing, I used a mock response to validate that list (main requirement) renders as expected.

Features implemented

  • A list of upcoming events + their details, specifically: featured_image_url, title, timeslots, location, event_type, browser_url
  • A map view of event integrated into the main page with red markers
  • Pagination of the event list
  • Filter by event type

Extra credit I thought about implementing, but did not

  • The ability to filter events based on distance from the user - Would have loved to have figured this one out! I think I would have needed to do some IP geo-coding to get a zip code I could send the API.
  • Infinite scrolling - Spent about half an hour trying to implement this, but realized it was more complicated than I might have had time for and may have resulted in some bugs.

Suggested UX Improvements

  • Better styling for event cards, including image size handling and layout improvements
  • Add some sort of hover and/or click handlers to event map markers
  • Better loading and pagination UX. Not great to be stuck at the bottom of the page.
  • Make map zoom to fit dots rather than include the entire country

Technical debt

  • Address browser console warnings
  • Address test console warnings
  • Tests to validate map behavior
  • Tests to validate pagination behavior
  • Tests to validate filter behavior
  • Look into image performance / lazy loading
  • Look into usability testing

mobilize-feed's People

Contributors

tassock avatar

Watchers

 avatar James Cloos 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.