Cainuse / tradeforce-client

1 stars 0 forks source link

TRADEFORCE

View the project at: https://tradeforce.herokuapp.com Note: May have small backend bugs due to old deployment.

Tradeforce Server URL: https://github.com/Cainuse/tradeforce-server

Built by: Abid Salahi (z2u0b), Jenessa Tan (s9p1b), Sang Xu Jacqueline Yin (r6s1b), Zhen Peng Zhu (i8v0b)

Table of Contents

Rubric 1: Description of App

Tradeforce is a webapp designed to connect community members together to facilitate the direct exchange of items in a barter-like system.

By engaging with one another in trade, Tradeforce helps two-fold: strengthening community ties as people come together to help their neighbours; and also reducing collective spending and waste, finding new homes for items that would otherwise be discarded.

Rubric 2: Statement of Goals and Completed Items

MVP Requirements

Standard Requirements

Stretch Requirements

Rubric 3: How Tech from Units 1-5 were used in Project

HTML/CSS/JS:

React/Redux:

MongoDB:

Node/Express:

Release Engineering:

Rubric 4: Above and Beyond Functionality

One of the features that we are most proud of in our application is live chat. Users can communicate with each other in real-time to co-ordinate the exchange of their items in person. This was a crucial feature to include because it offered a logical end to the online transaction. We used the real-time bi-directional communication library, Socket.IO, to implement chat. On both server and client, socket event listeners were set up to respond to events emitted by the other. For the server, receiving specific events, such as add-message, triggered the creation of new data to be saved to the Mongo database. On the other hand, reception of server events on the client-side required specific updates to the React UI, such as rendering a new message bubble. Although we were using the Material-UI library, it did not have any pre-built chat-like components for us to use. Therefore, we had to design and build our own to make our chat interface more aesthetic.

Learning how to incorporate chat into our existing app was a challenge; more details about this can be read here.

In addition to chat, we also included the following functionalities:

Rubric 5: Next Steps

For future development, the following features should be added to improve useability and functionality:

Other things we discussed:

Rubric 6: List of Contributions

Abid Salahi

Abid worked on the following features:

Despite the complexities involved with implementing authentication and with 3rd party integration, Abid did not hesitate to volunteer himself for the job. This was crucial, especially in the early development stages of our app, as the functionality of Tradeforce relied heavily on having users. Furthermore, Abid pushed strongly for the group to implement live-chat, arguing (correctly) that the transaction on Tradeforce between users felt too incomplete without it. He then went on to spearhead the backend implementation of live-chat.

Jenessa Tan

Jenessa worked on the following features:

Jenessa was pivotal to the development of this app, from the conceptualization and designing of the prototype, to the architecting of user workflow of the transactions of postings. She was an all-rounder for our group, working on crucial components and features that spanned across both the frontend and the backend. To finish off the development cycle, Jenessa tackled the sizable task of connecting the backend and frontend for live-chat, implementing the code necessary for the real-time exchange of information between client and server, and then actualizing that information in an aesthetically appealing UI.

Sang Xu Jaqueline Yin

Jackie worked on the following features:

Without Jackie, this README write-up would not exist. She dictated the majority of the information you’ve been reading thus far (and that you will continue to read if you continue past this point). In terms of the app, Jackie focused her efforts mainly on developing the frontend - offerings in particular. From designing the offering working flow, to the implementation of all the necessary components involved with offerings, Jackie’s code fingerprints can be found throughout the client repo. She was essential in locating and rectifying discovered bugs, which she was consistent in doing throughout the process of development.

Zhen Peng Zhu

Peng worked on the following features:

Peng was vital in developing the server-side of our application. He single handedly crafted the majority of the API endpoints and was quick to make adjustments as frontend needed. As an example, he made strategic changes to the offerings database schema to facilitate the joining of two collections. Peng took great initiative in building the backend location functionality using Google Maps API, volunteering to do it even while he was completing pagination and, in spite of the fact that we were in our last week of development before our internal code freeze.

Challenges During Development

Chat

Chat function was the hardest thing to implement, for many reasons. It’s a vital feature for our app. We knew from the get-go, chat was a stretch goal that we weren’t sure we’d complete, given the breadth of the application and the time constraints. However, after implementing accept offerings, it was clear that there was something missing. The user experience felt incomplete. However, because everything else had to be set up before we started chat, chat had to be implemented at the very end of the development cycle, leaving us with very little time. Furthermore, all the tutorials online were for a standalone chat apps, so we had to figure out how to integrate it into our own app within that time crunch. We distributed the work among several team members and held many impromptu meetings to discuss our learnings and progress. In the end, through cooperation and many sleepless nights of reading documentations and piece-mealing several tutorials and resources together, we eventually built and integrated this massive feature, of which all of our team members are really proud.

Coordination/Task Management

Due to the novelty of having to work 100% remotely and members having outside commitments, we admittedly were not very coordinated in the beginning of our project. There were overlaps in what people were working on, which introduced technical conflicts, there other tasks that blocked other tasks but weren’t being addressed and so forth. We realized that adhering to this pattern would be detrimental to our project and completing our goals so we introduced an agile sprint board in trello to collect, plan, and organize our tickets.

Appendix

Project Description:

The app will store information related to physical items such as quantity, category, condition. Likewise, the app will support the upload of an image file of the object that the user wishes to put up for exchange. The app will also support the ability for users to create and manage their own accounts/profiles by storing basic user information.

In summary, the app will support the following actions for users:

1. Account creation/maintenance/deletion
2. Creation/editing/deletion of postings of items the user wants to put up for exchange
3. Ability to search the application for goods that they are interested in
4. Ability to contact other users to arrange the trade
MVP Requirement #1: "User Interface"
1. Design GUI layout with intuitive and user-friendly workflow for the following pages:
    1. Landing Page
    2. User Profile
    3. Item Posting
    4. Item Search Pages

Note: Please refer to the prototype sketch for more detail

MVP Requirement #4: "User create posting"
1. Ability to upload/replace/remove image file of item
2. Ability to create/edit/delete description of item
    1. Condition
    2. Size dimensions
    3. Weight
    4. Description blurb
3. Ability to assign tags and/or categories to facilitate search functionality