MS642 / MangoDB

MIT License
4 stars 1 forks source link

DoGether

DoGether

Project Requirements

Project Description:

Do more together with DoGether!

DoGether is a social task management app that helps users motivate users.

Using DoGether, you can create Tasks, browse others' Tasks, and support each other by giving a currency of "Mangos"; Extra motivation comes in the form of achievements, and even a store to spend hard-earned Mangos.

https://dogetherapp.herokuapp.com/

Backend

https://github.com/maxahn/MangoDBackend

Before you go to the boring text, here's some screenshots of the app!

feedpage taskpage gamepage storepage profilepage aboutus

Project task requirements

3-5 minimal requirements

3-7 "standard" requirements

2-3 stretch requirements

Usage of Unit 1-5 tech

HTML, Javascript and CSS: For the majority of the code, HTML was not used, other than for the index.html holding our CDN references. We used Bootstrap to help with formatting our UI and simplifying our development process with existing React components. Media queries were also used to make a responsive app for any device and resolution.

React & Redux: We used React as the main frontend language to create dynamic components which we laid out in a component based folder structure preferred in the industry. We used Redux to retain UI state and also local copies of backend data (user, task, feed data) to ensure faster load times while we used thunk to fetch data from the backend API. Finally, ESLint pre-commit hooks kept our codebase clean.

MongoDB: We used MongoDB to save user information, as well as task information. After some comparison of Mongo Shell and Mongoose (via our assignments), we chose to use Mongo Shell. To help with testing, we created seed scripts to drop collections and repopulate them with dummy data.

Node & Express: Our backend API was written in Express and held in a separate repo from our frontend. We used a proxy to interact with the backend, which interacted with the database using a Mongo Shell connection. Finally, Nodemon helped us iterate quicker and smoother.

Release Engineering: We deployed our app by building our frontend statically and deploying the backend. By using the Heroku CLI and the dashboard we created a pipeline with automatic deployment.

Above and Beyond Functionality

Click for a powerpoint of super-cool stuff we did!

Mango Idle Game

When we were brainstorming what kind of social media app we wanted to create, we knew we needed something different from the standard functionalities such as liking a post or retweeting something. Thus, the mango currency system was born! Now, when users are scrolling down the task feed and see a task they’d like to support, they can gift that task mangos. Mangos will be pooled in that task and when the owner of that task completes it, they will be awarded that task. It’ll provide extra incentive and motivation to complete tasks, not only to get the mangos, but to know that those are mangos given by people who thought your task was worthwhile.

But what can users do with mangos? They can purchase badges that will be displayed next to their names on the task feed. Badges will hold a level of esteem since they will demonstrate immediately to other users how many mangos you’ve earned.

Users can also earn mangos through on the simple idle game page where mangos slowly ripen on a tree and may be harvested. The game provides not only an alternate source for mangos, but an incentive for users to return to the app. A common problem for todo apps is that it’s easy to fall behind on tasks and become demotivated to even open app. By providing something that’s always positive for the users to return to, we can make opening Dogether more of a habit for users.

Amazon S3 and Cloudfront CDN

Additionally, another aspect where we wanted to take a step further was by delivering our static assets and user profile images via CDN to help reduce latency and increase the overall loading performance of our application.

Guest User Flow

Furthermore we implemented a Guest User flow so that brand new users are more inclined to join - as they get to experience the main contents of the app before needing to register. We did this via localStorage checks to see if the user was logged in, and wrappers around all interactable buttons, and navbar tabs to prompt open a sign up modal upon a user doing so.

UI Colour

We consulted UI/UX designers in the industry to get feedback on what the best theme for our website would be.

Additionally, we have a (almost) fully responsive app, so give it a go on mobile!

Custom Profile URL

A user is able to change the profile url so that other users can access their profile via the address bar. This changes the route which the profile lies on dynamically, and is also enforced in uniqueness by our backend.

Description of Next Steps

We want to increase the social aspect of the app by adding the ability to be able to search for a user, get notification when your followers start a new task and to be able to comment on tasks. This will give encouragement to add tasks and attract users to check the app to see if they've received more comments. We also plan to add ads and give the user an option to watch a video ad and get mangos as a reward.

Upgrade options to mango idle game

Searching a user using username not using the url

Comment section for tasks

IAP for mangos

Suggesting users you can follow based on similarity of tasks

Notification/Reminder system

List of Contributions

Ryan Oh

Aamir Sheergar

Mohamed Abouzaid

Max Ahn

Prev README

Who is it for?

People who need extra external motivation to complete their tasks

What will it do? (What "human activity" will it support?)

What type of data will it store?

What will users be able to do with this data?

Look at it to help live their lives fruitfully

What is some additional functionality you can add/remove based on time constraints?

Final Mockups

https://www.figma.com/file/M9LqeYv0TbIlPJayqxzVcG/CPSC-436I-DoGether-Final-Mockup?node-id=0%3A1

2 of our minimal requirements broken down

Design main UI for task creation

Task Feed

Mockups:

Site Sketch:

http://msaubc.com/mangodb-login

Task creation flow

https://www.figma.com/file/aXDjOc7BS4OtwcogdVTfEL/CPSC-436---Prototype-Sketches?node-id=0%3A1

Feed sketches

Max's Feed sketch 1 Max's Feed sketch 2 Aamir's Feed sketch 1

Task sketches Max's Task sketch 1