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!
3-5 minimal requirements
3-7 "standard" requirements
2-3 stretch requirements
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.
Click for a powerpoint of super-cool stuff we did!
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.
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.
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.
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!
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.
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.
Ryan Oh
Aamir Sheergar
Mohamed Abouzaid
Max Ahn
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?
https://www.figma.com/file/M9LqeYv0TbIlPJayqxzVcG/CPSC-436I-DoGether-Final-Mockup?node-id=0%3A1
Design main UI for task creation
Task Feed
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
Task sketches