Code Monkey home page Code Monkey logo

impublic's Introduction

Official involveMINT Web App Repository

Setting Up Environment

Prerequisites:

  • Nodejs
  • Postgres database named involvemint running on localhost port 5432 with username postgres and password 1Qazxsw2
  • Visual Studio Code

Steps

  1. Clone repository
git clone [email protected]:v3/involvemint/involveMINT/involvemint2.0
  1. Change directory into repository
cd involvemint2.0
  1. Install dependencies
npm install
  1. Start client
npx ng s
  1. In another terminal, start server
npx ng s api

impublic's People

Contributors

rgorham avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

impublic's Issues

As an User, I want to be able to see who has liked a activity feed post, so that I can see what type of people like a similar community service

Conversation:
When the users click on the # of likes a post has (at the bottom of each activity feed item), a small window opens up which shows the profiles of other users that have liked the feed. The window with users should be scrollable.

Confirmation:

  • Unit test that UI can display pop-up window
  • Unit test that list of users that liked is able to be fetched
  • Integration test that correct list of users for a post is fetched and displayed
  • User test that users understand the functionality and are able to access it

As a Developer, I want to have a data model for the InvolveMINT application, so that I can figure out where I need to go to fetch data

Conversation:
We talked with InvolveMINT (Dan/Rob) and discovered that there is no current ERD/Data Model for the InvovleMINT application. This is an item that we need to have before starting on other user stories because we must edit the data model to reflect the changes we plan on adding. For example, if we plan on adding comments then we must provide an updated data model that reflects the new concept of comments data and where it will live.

Confirmation:

  • Walk-through and approval from Rob on current data model
  • Insert the data model into the application GitHub Wiki under artifacts
  • Dan sign-off

As a User, I want to be able to quickly see photos of my network engaged in community acts, so that I can be inspired to contribute to the community

** Conversation **
photos should also be progressively loaded when viewing news feed.
Initial idea → InvolveMINT stated that usability was on of their key elements for the project… the activity feed photos (likely the largest elements) need to download and render quickly or else the feed declines in usability. Potential solutions → Compression, indexing, CDN (probably unnecessary)

** Confirmation **
User testing to determine if activity feeds are populated with enough photos to be engaging

@backend Implement like/unlike for activity-post service

Conversation:
Implement the activity-post like + unlike functions in the activity-post service. Since the architecture is mostly setup, we simply need to fill in these functions with the logic that is required for a like post:

  • User has not already liked the post
  • Insert a like record into the like repository
  • Update the activity post repo such that we have updated likeCount to reflect the new value

Dependents:

As a User, I want to reply to someone's comment, so that I can engage in conversation with another user

Confirmation:
Users should be able to use the "@ + username" in an activity feed comment to tag and notify the users of a comment. The comment should not create a sub-thread, just exist in the current comments feed for a post. The username should also be clickable to the user's account.

Conversation:

  • Unit test UI that tagged comments are displayed distinctly
  • Unit test that tagged comment will send a notification to a user
  • Integration test that a tagged comment will notify the correct user
  • User test that users understand how to use the comment tagging feature
  • User test that users like the ability

As a Product Owner, I want a visual example of what the developers plan on building, so that I can provide quick feedback investing in building

Conversation:
Developers are responsible for creating wireframes to demonstrate the idea of what will be created during the next few sprints. Can do both low-fidelity (paper) and high-fidelity (Figma) wireframes. The wireframes should also be focused on the activity feed and how it will look. Daniel may have some existing wireframes for reference in the Figma folder.

Confirmation:

  • Develop a series of wireframes
  • Ask Daniel for feedback and approval during Wednesday meetings

@backend Add CRON Job For Sending SMS Digest

Conversation:
Basically, a CRON Job needs to be created s.t. an SMS text is sent to users once a week. The contents should be constructed using the API from the Post Service.

  • 1x weekly job
  • Use Post Service API to fetch the relevant feed activity --> Pass it closer to 1 week ago or last logged in to the backend API
  • Only send if there is actual activity to show

Dependents:

As a User, I want to be able to flag comments, so that admins can clean up the community feed.

Conversation:
To the right side of each comment in an activity feed, there should be a "..." button that pulls up an option to "flag" a comment and the "reason" for the flag. Reasons can be "inappropriate," "harmful," "derogatory," and "other."

Confirmation:

  • Unit test that flagging a comment sends an appropriate notification
  • Unit test UI has buttons for each of the comments
  • Integration test that flagged comments will show up in the database for admins to review in their portal
  • User test that users can easily figure out where to flag a comment at
  • User test that users are OK with the options for flagging

As an Exchange Partner, I want to be able to view all the statistics linked to my organization, so that I can understand the community impact on my org

Conversation:
Exchange partners should have a webpage in the InvolveMINT application where they can view aggregated statistics from POI work across the community that impacts them. Ideally, it should present a series of graphs and charts that show the statistics and provides interactivity to change time windows, etc.

Confirmation:

  • Unit test that statistics can be aggregated correct
  • Unit test UI has webpage for the organization
  • Unit test UI shows visuals for statistics
  • Integration test that organization is able to access their statistics
  • User test that correct graphs are demonstrated and ability to interact with

As a Developer, I want there to be an existing Activity Feed architecture/structure, so that I can add the features on easily

Conversation:
A major dependency for all the other feature user stories, there needs to be an existing architecture/structure for the Activity Feed component of the application. This will allow the 5 team developers to work in parallel and more easily integrate the separate parts together. What we are looking for generally is that there is a separate section for the application for activity feed which has a data model for all the components of the Activity Feed we expect to be needed for MVP. It does not need to display the UI at this time, just be able to provide the site for the Activity Feed, fetch the data it needs, and have the correct models in place.

Confirmation:

@backend Implement UML data model for Activity Post in NestJS

Conversation:
We created a data model to describe the new entities being added for the "Activity Post" item and the relationships... this needs to be translated and added to the InvolveMINT backend. Additionally, we should create the initial set of orchestrations necessary for the Activity Backend to function

Dependents:

  • #27 ➡ so the FE can call the BE to perform updates to the application data

@frontend Add Notification Digest Modal

Conversation:
Add a notification digest modal that allows users to see relevant activity feed activity when toggled and pull up relevant posts.

  • Bell icon in the top right that is clickable and brings up a modal
  • Modal displays the content from the 'digest' API from the backend (in a list and clickable view). Perform this fetch of data on the ngOnInit() function of the ActivityFeed component
  • Send the backend API the closer of (dateLastLoggedIn | 1-week ago)
  • When the notification is clicked, it should close the modal and bring the appropriate post into view. This means that we might need to fetch an individual post and add it to the feed dependent on the current state
  • NgRx tests + component as necessary

Dependents:

@backend Add Activity Post Service API for Digest

Conversation:
To implement an Activity Feed digest, we need to create an API in the Activity Post Service that will enable us to generate a response that can be used on the FE to display to users or to send a text message. API should take in a 'startDate' which is the date back from which to fetch relevant activity feed activity. Add unit tests required as well.

Dependents:

As a User, I want to be able to receive notifications each time a user likes my community post or comments on my community post

** Conversation **
Initial idea → Users of the platform should be able to receive notifications on their phone when activity (likes/comments) occurs on their posts. Adding a new comment to a post’s thread will need to trigger an event enabling an immediate notification to the post author’s account.

** Confirmation **
Users testing to see if users find the notifications information helpful. Unit testing to see if likes/comments trigger notifications

As a User, I want to be able to post encouraging comments in response to people’s community acts, so that I can encourage them to continue contributing to the community

Conversation:
Below the bottom of each activity feed item, should be a comments section. Users should be able to click a "comment" button to bring up a text box for writing a comment for the feed item. Should be a "send" button as well to send the typed comment.

Confirmation:

  • Unit test that "comment" button pulls up a text box
  • Unit test that "send" button sends a notification with the text
  • Unit test that database stores comments sent
  • Integration test that activity feed comments are saved to backend database

@frontend Troubleshoot Testing for Component + Async NgRx Pipe

Conversation:
As described in the recent PR for the feature/activity-feed branch, we were able to complete most testing; however, we had trouble getting the testing framework setup for the following scenarios:

  • Testing Async NgRx pipe (like when delay or delayWhen functions used)... have already tried TestScheduler with no luck
  • Testing ActivityFeed component... The ImStorageUrl module is causing a problem when setting up the tests. We tried removing reference which causes tests to work but then client to fail to compile. Need help here @rgorham
  • Testing data models in shared/domain... we are not sure if these need to be tested and how?

As an Admin, I want the ability to remove comments which violate community guidelines, so that community discussion reflects the values of the InvolveMint Platform

Conversation:
Admins should have a separate portal that links comments that have been flagged as "inappropriate." Admins should be able to remove the comment through the portal or link to the post and make a decision from there. Admins will need special abilities and options in the system to be able to delete the comments as well as notify violating members.

Confirmation:

  • Unit test delete button sends notification to delete
  • Unit test UI displays flagged comments
  • Unit test permissions for admin
  • Integration test admin going to portal and deleting several flagged comments
  • User test admins are able to navigate the comments portal and understand layout

@backend Add testing for Activity Post models

Conversation:
Rob mentioned he wanted all the components we are creating to have a degree of unit testing. We need to pick a unit test framework to test NestJS/typeorm data models and write unit tests. First, check if there are existing examples of testing in the Backend application (unlikely). Second, either use existing or pick a framework to use for testing (Jest, Mocha, etc.).

Dependents:

  • #27 --> Code for #29 needs to be tested

@frontend Implement Activity Post FE skeleton

Conversation:
The FE needs to add a new library to the Client application for InvolveMINT. The library should be able to pull required information from the BE to display (ugly) on the FE on a separate "Activity Feed" page. We likely will need to use NGRX to load and display the data on the FE properly. The display does not need to be pretty, but provide a skeleton and ensure we can call the BE and update from the Activity Feed page.

Dependents:

  • #27 ➡ Architecture isn't setup until we have a location in the FE where BE and FE can communicate and all the data can be accessed to implement Activity Feed

@frontend: Add flagging feature to comments

Conversation:
Users should have the ability to flag comments which they feel violates community guidelines.

-once a flag button is pressed, it is filled to indicate the current user has flagged the comment
-users can only flag a comment once to prevent spamming
-users can unflag a comment which they have previously flagged
-pressing the flag button will increment a comment's flagCount by one; unflagging will decrement

@backend/frontend Explore How Notification System is Currently Used

Conversation:
We need to figure out how the InvolveMINT notification system is currently configured so that we can update the system to include activity feed notifications. Note that Dan expressed his desire to have a weekly digest of sorts using SMS if possible (and email if not that).

  • Weekly digest message sent to the user external account
  • Notifications digest portal page IN the application as well.

As a User, I would like the ability to like posts, so that I can express my interest/enjoyment in other users posts

Conversation:
The activity feed should have a "like" button on the bottom each feed item. When users click the "like" button it updates the post's # of likes on the backend. Post-like the POI total # of likes should be updated immediately.

Confirmation:

  • Unit test (with Jasmine) that "like" button sends a notification to +1
  • Unit test that UI (with Jasmine) correctly displays the "like" button
  • Integration test that UI is updated and backend updated when the "like" button typed
  • User test that users can easily access and interpret the "like" button

@frontend Add Infinite Scroll 'load more' Functionality

Conversation:
Currently, we have infinite scroll, but we don't have the 'load more' feature included s.t. when scrolling down it will load more posts on that event. Will require a change to the component + NgRx to load more as well as updating current test suites. This branch:

https://github.com/involveMINT/im2/commits/feature/timeline

has useful information pertaining to getting the infinite load to work better and add limit (10 default) when doing this story as well!

Dependents:

  • #27 (enhancement)

As a Developer, I want there to be a guide on making changes to the InvolveMINT application, so that I can quickly be productive

Conversation:
We talked to Dan and Rob and there is currently no documentation on how/what is required to make changes to the InvolveMINT application. Since we are already onboarding to the project, they asked for us to provide artifacts to make it easier for future (and potentially open-sourced) developers.

Confirmation:

  • Read through from Rob
  • Other teammates able to use docs to make a change
  • Document embedded in GitHub repo
  • Dan sign-off

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.