Git Product home page Git Product logo

mappypals's Introduction

MAPPYPALS 🌍

An app that keeps track of your friends by putting them on a map

MappyPals is a collaboration project managed by a small group of dedicated fellow students. Building an application to provide users a platform to keep track of which countries their friends and family are in, to make meeting up an easier task.

MappyPals is being built upon the MERN stack, with the intention of releasing and maintaining the project in the real world based upon user suggestions and feedback. Therefore providing an awesome opportunity not only the ability to expand on and learn new skills, but also a project you can include on your resume and show off to friends, family and potential employers.

Useful Links

Preface

  • Background: I’d like to travel to different countries but i’m unable to remember all the friends I have in those countries.
  • Problem Context: It is difficult to remember all the friends you have across the globe and that could slow down your travel plan.
  • Solution: A web app that’ll allow you to add your friend and their detail, which will be displayed on the map. This would help in locating your friends in a specific country in which reaching out to them to host you would be much easier.

Product Specs

Functionalities

Version 1.0

  • User Authentication (Login/Register)
  • CRUD Friends
  • Display friends on a map based on their { country: ‘Azerbaijan’ };
  • Click on friend icon to view more details.

Version 2.0

  • Send out emails to added friends to join the platform
  • Friends can update their profile which should reflect across the entire app
  • Auto update friends new location (permission) which should reflect across the app
  • See your friend’s friends (mutual friends)

Tools

  • Frontend: React, CSS3
  • Backend: Node/MongoDB with mongoose
  • Map Api: MapBox/Google Maps

Overview

Our mission is to make it easier for people (travelers, students) to connect with like-minded people abroad.

Objectives

  • To make travelling easier by connecting travellers to the people they know in a particuliar city.
  • To connects travellers with similar interest (interest feature).
  • To help build travelling ituneraries.

Success Metrics

  • Have 500 signuos within the first week of our launch.
  • Get 1000 pinned pals within the first week of our launch.
  • Have 500 invites sign ups within the first week of our launch.

Messaging

  • None yet

Timeline/Release Plan

Release & Launch

Personas

Persona X (Int’l Student) Name: Lorem Ipsum Age: 22 Nationality: Nigerian Profession: Student (Int’l student) Study Location: Malaysia (abroad) Employed: No

Persona Y (Digital Nomad) Name: John Doe Age: 28 Nationality: American Profession: Web Developer Location: Bali, Indonesia Employed: Yes

Persona Z (Volunteer) Name: Sally Age: 26 Nationality: American Profession: Volunteerer
Location: Bali, Indonesia Employed: Yes

User Scenarios

User Sign Up/ Login

  • User A is a student who stumbled upon MappyPals while reading through a travel blog about the best apps for meeting travellers, he think it’ll be a useful app for him to plan his next travel so he sings up to enjoy the full features MappyPals has to offer.
  • User B is a Digital Nomad who found out about MappyPals through our launch on ProductHunt, he thought it was an interesting app so as a tech junkie, he quickly signed up to test the app by adding some friends. Few months after, he’s about to travel to Germany where few of his friends are, he quickly loads the app and logs in to contact his friends in Germany.

Map Functionalities

Browser Permission

  • Upon logging in for the first time, the browser prompts a user to grant MappyPals the permission to use their location
    • If YES, the map loads the user's current location
    • If No, the map loads its default location (San Francisco)

Map interaction

  • User A is able interact with the Map by dragging it around and zooming in on a specific location.

Pin Friend to Map

  • When a user clicks/taps on the map, they a prompted with a form to add their friends details.
  • When they click save, the friend is pinned to the point that specifically clicked on the map
  • When a user hovers on a pinned friend, a Pop up emerges showing that specific person’s details
  • When a user clicks on a pinned friend, they are directed to the friends profile where they’ll be able so see more details and possible drop them a message

Friend Invitation Flow

flow chart to copy/paste when push made

User Changes Location

  • user A moved from England to Ireland, so when he launches MappyPals, the application detects his current location and automatically updates it in database. All his pinned friends then gets a notification about the User A’s change of location and when his friend check their map, he’s no longer pinned on England, he’s now automatically pinned on Ireland. *User A's friends in Ireland and people with the same interests as him that live in Ireland then gets notified that he’s in the country.

Search / Filter

  • User B has now arrived safely in Germany so when he launches MappyPals, the current map position is Germany, but he then remembered that he has a friend in Brazil which he’d like to add to the map. He’s doesn’t want to go through the hassle of finding Brazil by dragging the map around endlessly, so he quickly searches for Brazil on the search bar which then repositioned the Map to Brazil. He’s now able to quickly add his friends whenever he remembers their location. Brazil might be User B’s next destination, who knows?

User Adds Travel Plan

  • Will be add later

User Stories / Features /Requirements

Here are the full lists of feature we plan to implement throughout the lifespan of this product. It is important to know that the features might (and will) change based on the user feedbacks we get post-launch. Till then, these are some features we should keep in mind when building this application.

  • P0: The Minimum Viable Product (MVP) - these are the features we’re currently focused on building. Every other feature in P1 and P2 may or may not be build depending on the user feedback after launching.
  • P1: Medium priority
  • P2: Low priority

P0

  • Landing page
  • Contact page
  • About us page
  • Login/Register/Reset Password
  • User Dashboard
    • Edit details
    • Settings
  • Pin friends to map
    • Add friends manually
    • Import from other social media platforms (future)
  • Friend Invitation
    • Send out invitation emails to added friends who have not yet joined MappyPals
  • Search / Filter
    • Filter by country
    • Filter by interests

P1

  • Interests (future)
    • Add your interests to your profil
    • See people with similar interests
  • Mutual Friends
    • Show a connecting line between mutual friends
  • In-App Messaging (future)
    • Contact friends directly within the app
  • Places of attraction suggestion based on current location

P2

  • Add Travel itineraries (future)
    • User should be able to add their travel plans and locations
  • In-App Notifications (future)
    • Friends or locals in your travel destinations should be notified when you’ve update your travel plans.
    • Friends or people with similar interests in particular location gets notified when you’re in their location
  • Travelling light? Cool, but someone else might need to send their friend a package with your unused space. Sell some of your travel space (kgs) to someone in need of it.

mappypals's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mappypals's Issues

optimize the navbar

The icons need to be smaller
The first icon smaller than the other icons
The "Logout" button needs to take the right margin
Navbar

Refactor the app layout

Based on the current design of the app, one thing has remained constant and that is the layout of the app. The sticky navbar on the right and pages on the left. The current layout of the app does not favor the new design whereby the navbar overlaps the pages as illustrated below:
mappypals layout problem

Therefore, to maintain layout consistency throughout the app, we need to refactor our codebase to embrace the new design.

Suggestions:
Have a layout component that passes children as props. This component would act as a wrapper for the entire application. In it we'd have the <navbar /> and <pages /> components. Something like this:

<Layout className= 'layout'>
   <Navbar/>
   <Main />
</Layout>

The layout could be styled in this form:

.layout {
   display: grid;
   grid-template-columns: auto 300px;
}

These are just suggestions, there are definitely better ways to solve this problem so use the best possible solution.

It is important to note that: The <navbar /> should be sticky and <pages /> should be scrollable.

you can check out react-sticky, it could be of use to us.

Improving css, form.js

Currently, we use form.js for 7 files.

  1. AddFriendForm.js
  2. InvitationSent.js
  3. InviteFriends.js
  4. ForgotPassword.js
  5. Login.js
  6. ResetPassword.js
  7. Signup.js

The good thing is that by reusing css we have an easier time changing the design, and making sure that design match.
The problem: Without using !important tag you can't overwrite form.js. As a result, css has a lot of !important tags example

So the expected solution should be:

  1. css should be reusable. Writing identical css for every single file would make it hard to maintain.
  2. Do not use !important tags.

So what would be your solution?

Background Image Share by All Pages

The problem is in Home.css where we used id #root to assign the background image.

#root{
    background-image: url('../../pics/adult-backlit-beach.jpg');
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
}

This gives every page in the app the same background image which shouldn't be. Some pages might need a different background-image and some don't need it at all.

Invite Friends

  • Add friend to map by email
  • Send invitation link to friend if email not in DB
  • Update friend detail based on their profile (location, image, name, ...)
  • Update location based on device location
  • Bulk invitation (invite many people at once)
  • See all registered users on map

Map Interaction

  • Click on anywhere on the map to add/invite a friend
  • Hover on a pin/user to see a snippet details of user
  • Click on a pin/user to view user profile
  • See all registered users on map (keep this in mind while building)

Directory cleanup

All components could have just been loaded in App.js rather than Main.js with react-router.

Create account part

This part needs to be responsive to the small screen
The padding-left needs to be same the right.. and reduce the height to fit the screen

Should we launch live version of mappypals, through github pages, or heroku?

So SeniorMan on discord had an idea of launching a master version of the project, through GitHub pages or Heroku.

What's the purpose of it?

  1. To allow the contributor to show a working version of the project, to the future employer, friends, etc.
  2. Easier to detect bugs, when anyone can visit your site and look through instead of going to the master branch and writing npm start.

Options:

  1. Launching live version front-end only on GitHub pages. The GitHub pages don't handle well with routing, so it would require some changes, using these tutorials:
    tutorial 1
    tutorial 2

  2. Launching a full live version on Heroku. I know that Heroku supports node.js, but it could provide trouble to make it work front-end and back-end.

So what do you think?

  1. Should we try to launch the live version of the master branch?
  2. How do we launch it, using GitHub pages, Heroku or something else entirely?

User Profile

  • Users can update details such as Name, lastName, profile picture

  • Users can add Interests

    • User can’t add same interest more than once
    • Interest is predefined
    • User chooses interest from a drop-down list

Home page Header

On the desktop, The home page header appears difficult to read due to the sunlight of the background image

Unused Variables

There are several unused variables in the project that are causing the new Travis integration to fail.
If some one would like to remove them, that would be awesome:

image

Firebase Authentication

  • Connect firebase to our signup form

  • Social Logins Integration

    • Integrate Google login (no need external api key)
    • Integrate Facebook login (need apk key)
    • Integrate Twitter login (need api key)

Firebase Integration

  • Create Firebase Account
  • Activate
    • Database
    • Functions
    • Storage
    • Hosting
  • Activate Firebase Auth
    • Email/Password
    • Google
    • Facebook
    • Twitter
  • Add Firebase to Mappypals project
  • Deploy

Search bar

  • Search for users based on Location
  • Search for user based on Interests
  • On clicking Enter, the map should move according to search results

Optimize the home page

  • In the third card " connect " the text override it
  • The " sign up " button needs to be smaller to fit the " logout " button

Home-page

Login page

  • " I forgot my password " this line needs to move to the bottom
  • The line after the button needs some padding-top

login

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.