Giter Club home page Giter Club logo

guardian-angel's Introduction

Guardian Angel

Background and Overview

Have you ever met someone in need but did not have the knowledge or resources to help them? Have you ever wanted to help someone but did not know who to approach?

Guardian Angel is a social network that connects these kinds of people together. You can be a Guardian, and partake in community outreach, finding the people in your area in need and listing them on the app. You can be an Angel, who can scroll through the Needs Feed and provide the help someone needs.

Guardian Angel aims to crowd source pro-bono services to those in need, using the technology in our hands to reach out to those who don't have access to it.

Technologies Involved

This project was built using the following technologies:

  • Frontend

  • Backend

    • NodeJs / Express
    • MongoDB
    • Mongoose
    • GraphQL

Needs Feed

NewsFeed

The Home Feed displays all the current needs that are in the area. Users can view these needs directly and offer their services.

NeedView

Profile

Profile

The User Profile page displays all the users posted needs and a button to message them directly.

Messages

Message

Messages are sent in real-time and implemented using WebSockets. Users can message other users to get more information about needs. In GraphQL users are joined with two seperate entities: conversations and messages.

conversations involve an author and recipient and act somewhat like a SQL joins table to allow for consolidating specific message queries. messages house the text data and connect these messages to one specific user and conversation.

an example query to fetch conversations message in GraphQL:

  getConversationMessages: async (_, { _id }, { user }) => {
    try {
      await requireAuth(user);
      return Message.find({ conversation: _id }).sort({ createdAt: -1 });
    } catch (error) {
      throw error;
    }
  },

These messages are then attached to a PubSub instance generated using the graphql-subscription library to allow us to hook up our frontend to the websockets. Subscriptions exist for conversations and for individual messages inside them. Some example code how our conversation joins a subscription inside our conversation-resolvers.js

In the create conversation we will publish the data and subscribe the user

 pubsub.publish(CONVERSATION_ADDED, { [CONVERSATION_ADDED]: conversation });

adding the subscribe functionality

  conversationAdded: {
    subscribe: () => pubsub.asyncIterator(CONVERSATION_ADDED)
  }

After the backend is open for subscriptions, the frontend will subscribe the user when they navigate to the messages button or create a new conversation and go to ConversationIndexScreen.js.

Dashboard

Dashboard

The user Dashboard displays all needs the user has posted or applied to, the status of the need, and how many people have offered their service.

guardian-angel's People

Contributors

hkumar1993 avatar itsclay avatar thai321 avatar woodentyler avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

itsclay thai321

guardian-angel's Issues

Keyboard will not dismiss on touch

Seems the keyboard will not disappear on the login and sign up page if I click on the main screen. I can only dismiss the keyboard by using โŒ˜ + K , lets try fixing this so an actual user on the app can dismiss the keyboard by pressing on the screen

Fetch needs posted by a specific user

I need to fetch the needs posted by the user to be displayed on the user page, create an action that can be called on that page using the user id

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.