Giter Site home page Giter Site logo

isabelxklee / ember-collective Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 0.0 12.05 MB

A source for anti-racism education and supporting the Black Lives Matter movement.

Home Page: https://embercollective.netlify.app/

License: MIT License

HTML 1.94% CSS 10.91% JavaScript 87.14%
javascript react blm antiracism mapbox-api activism politics police-brutality

ember-collective's Introduction

Ember Collective 🔥

Ember Collective is an educational resource for anti-racism and supporting the Black Lives Matter movement. You can browse non-profit organizations to support, interact with the Police Brutality Tracker, and send donation match challenges to other users.

Table of contents

Ember Collective Homepage

  1. Install the Rails backend

  2. Install Node.js and npm

    $ brew install node
    
  3. Clone this repo and cd into the directory

  4. Install all dependencies

    $ npm install
    
  5. Make sure the Rails server is already running and open up a new terminal to run this app

    $ npm start
    

Police brutality tracker

Police brutality tracker

  • Displays an interactive map using the Mapbox API
  • Pulls data about police brutality events from an external dataset provided by Mapping Police Violence
  • Converted +7,000 lines of data from a CSV file to a JSON file

Browse organizations

  • View a list of non-profit organizations and mutual aid funds that support the Black Lives Matter movement
  • Filter organizations by tag or search for keywords, titles, and locations
  • Users with accounts over 2-days old can nominate new organizations and verify existing organizations' information

Donation match challenges

  • Users can challenge each other to match donations to an existing organization on the site
  • Built self-referential relationships to join the logged in user with another user

Education resources

  • Browse anti-racism and police abolition resources by tags

Memorial page

  • A memorial page for the Black people that we've have lost to police brutality and racial violence.
  • Remember their names, learn their stories, and support their families' gofundmes and foundations.

Global state management

  • Used Redux to globally manage the application state

React components

  • Created +20 React components and organized the code structure by separating them into feature-specific folders
  • Implemented inverse data flow to send props down and up between parent components and child components
  • Used asynchronous fetches to pull data from the Rails backend

ActiveRecord associations

  • Designed 10 database models that have has_many, belongs_to and has_many through associations
  • Used ActiveModelSerializers, which turns model attributes into JSON object keys

Profile Page

  • Rack CORS
  • ActiveModel::Serializer
  • BCrypt: Ruby binding the OpenBSD bcrypt() password hashing algorithm.
  • Geocoding API: The Geocoding API is a service that provides geocoding and reverse geocoding of addresses.
  • Mapbox API: Mapbox GL JS is a JavaScript library that uses WebGL to render interactive maps from vector tiles and Mapbox styles.
  • Moment.js: Parse, validate, manipulate, and display dates and times in JavaScript.
  • Pluralize: Display plural or singular form of a word based on a count.
  • React Router: React Router is a collection of navigational components that compose declaratively with your application.
  • React Scroll to Top Button: React Component for a fixed scroll to top button.

Live demo

https://embercollective.org

ember-collective's People

Contributors

dependabot[bot] avatar isabelxklee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ember-collective's Issues

Add user's receivers to redux.

AC:

  • The current user's info in the global state should include their receivers.
  • Update the DonationChallenge component to reflect this change.

Organization filter should not include descriptions.

AC:

  • Search terms should only look at the names and locations of organizations.

Note:

  • The following code does not filter out description keys.
      orgs = this.props.orgs.filter((org) => {
        return Object.keys(org).some(key =>
          typeof org[key] === "string"
          && org[key] !== "description"
          ?
          org[key].toLowerCase().includes(this.state.searchTerm) : null
        )
    })

Post-account creation actions

AC:

  • Creating an account should automatically log the new user in.
  • Successful account creation should take the user back to the Hub.

Users can view each other's profiles.

AC:

  • Change Routes and Links so that users' profiles are /users/:id rather than /profile
  • Donation match challenge feature should not be shown for non-logged in profiles

Fill out About page.

AC:

  • Info about me
  • Why I made Ember Collective
  • Contact information
  • Acknowledgements to people who helped

Connect the Create Account component to the backend.

AC:

  • The Create Account form should add new data to the backend.
  • If the user successfully creates an account, they should be taken to the logged in state of Browse the Hub
  • Display error messages for input validations

Create a profile page.

AC:

  • Logged in users should be able to access their profile page from the NavBar component.
  • Profile page should contain:
  • Username
  • Join date
  • Activity states (nominations, verifications, sent donation match challenges)
  • Donation match challenge feature

Add gofundme campaigns for the families that have experienced police brutality.

AC:

  • Display under police brutality map.
  • Show names, pictures, short descriptions, and gofundme links.

List of people:

  • Breonna Taylor
  • Elijah McClain
  • George Floyd
  • Javier Ambler
  • Manuel Ellis
  • Tamir Rice
  • Trayvon Martin

To add:

Logged in user state

AC:

  • NavBar links should change depending on the user's logged in status
  • User's logged in status should be saved in the backend somehow.

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.