Note: Please scroll to the bottom for the app's privacy policy and contact info for support.
Since my childhood, I have been obsessed with maps, travelling and the world. My life goal has always been to visit as many locations as possible. Additionally, I have a map in my room where I put pins to see everywhere I have ever visited. However, I wanted to have a visually appealong digital version of the app so which I can access through multiple devices. With this in mind, as soon my university semester 1B ended, (first-year winter term), I decided to build the app, both because I wanted to learn the MERN stack and because my digital map was a need I wanted fulfilled. I will now explain the timeline of creating my web app.
Day One: Mar 19, 2022
On the first day, I used a tutorial on YouTube by LamaDev to create the starting frameworks for the project. I had never used JavaScript or any of the MERN stack before this and it was a major learning curve because I had no clue what much of the syntax meant. However, by the end of the first day, I got the backend completed and learned how to use Postman API to test my system. I found this part quite difficult because it was difficult to see what my code was doing and testing was quite painful.
Day Two: Mar 20, 2022
Day Two was highly frustrating because up to this point all I had done was write down the same code as I did in the video. However, I was getting the hang of the JavaScript syntax. Now was the time to do my favourite part, the frontend! Surprisingly, this part was even worse. For whatever reason, the map would refuse to display on the screen using the react-map-gl extension. At this point, I was considering scrapping Mapbox API and using Google Maps API instead. This was an issue because for Google Maps API, I needed to input my credit card information.
Day Three: Mar 21, 2022
Finally I figured out how to get the map working. Turns out they had recently changed the functionality of how to run the map. Prior to this moment, I was honestly quite stressed about the many hurdles I had to jump through to make this project work. Instead I realized that I should be looking at this project differently. I was looking at the project as work rather than an opportunity to learn. After this mentality shift, the rest of the project was far less stressful. Also, I learned how .env files work and how they are useful to hide data and keep information private.
Day Four: Mar 22, 2022
Day Four: Mar 22, 2022 Pin functionality now works! I finally figured out how the database and proxy is connected and how we can use Axios to both fetch and retrieve data.
Day Five: Mar 23, 2022
The login, logout and register functionality now works and I learned how to utilize local storage to store user information. At this point the main functionality for the projects was completed. Now I had a few more goals: Deletion of pins, allowing user to add pins, making UI appealing, fixing the (many) bugs, a toggle feature to show only the user's pins and checks to stop user from entering faulty data.
Day Six: Mar 24, 2022
I cleaned up the UI interface and added checks to stop user from entering faulty data. It took some while with many "console.log" commands but I figured out the bugs and worked on debugging my code. I did research on letting the user add pictures to their review but I realized this feature would likely not even be very useful considering my user platform would be on a computer or laptop which has a terrible ability to take pictures. Thus, I decided to scrap this feature.
Day Seven: Mar 25, 2022
I added toggle functionality to allow the user to see only their pins. I changed some icon designs and tries making a DELETE method to delete pins. However, the delete code would not delete the pin. At this point, I was happy that I had established my MVP and figured that perhaps this was something I can add later.
Day Eight: Mar 24, 2022
I once again tried to get the delete functionality working. I was unfortunately unable to do so. I decided to just let it go and commented out my attempts. In the following days I would publish my code to Github and Heroku.
Lessons Learned:
• Atitude is everything - During the first few days of the project, I was miserable and unhappy because I kept forcing myself to get up and grind on the project. This is NOT a helpful mentality if your goal is to learn. It only leads to stress. Eventually, I came to a realization that I can go at my own speed and change my perspective on this project. Since doing so, I began to enjoy coding and solving these problems.
• Importance of a user-centric perspective - I felt like this project was far easier than my Quillow app project. This opinion is based on the fact that the MERN stack is quite easy to use and learn. I felt the learning curve for SwiftUI and XCode was greater because iOS development is more niche. Ultimately, despite the difficulty I enjoyed iOS development more. Personally, I use my iPad and phone apps far more than desktop apps and thus I was able to code through a more user-centric focus. I felt as though I lacked this bigger picture view for most of the project.
ELEGANT USER INTERFACE:
- Simple and pretty UI to create your pins
- NO ads, extra purchases and other monetization
LOGIN FUNCTIONALITY:
- Allows for secure user authenticated login to keep your pins private
- Able to access the same pins through multiple devices by login functionality
FIND YOUR LOCATIONS:
- Easily find any location and share your experience our extensive database of dynamic locations
TOGGLE THROUGH DIFFERENT VIEWS:
- PinPlace allows you to choose whether you want to see only your pins or every users pins
• Pinplace's frontend is designed with ReactJS, Mapbox API and Material UI to create a visually appealing user interface
• PinPlace utilizes a secure login system with error checks using database on MongoDB to store user data and pin data
• PinPlace utilizes MongoDB to save and store data and allows the user to read the data onto their device
• PinPlace uses other dependencies such as ExpressJS to allow ease of access when transferring data
• PinPlace incorporated ExpressJS to create REST API with GET and POST endpoints which handles transactions between database and frontend, reducing processing times by 40%
Privacy Policy
Privacy Policy
Daniyal Mohammed built the PinPlace app as
a Free app. This SERVICE is provided by
Daniyal Mohammed at no cost and is intended for use as
is.
This page is used to inform visitors regarding my
policies with the collection, use, and disclosure of Personal
Information if anyone decided to use my Service.
If you choose to use my Service, then you agree to
the collection and use of information in relation to this
policy. The Personal Information that I collect is
used for providing and improving the Service. I will not use or share your information with
anyone except as described in this Privacy Policy.
The terms used in this Privacy Policy have the same meanings
as in our Terms and Conditions, which are accessible at
PinPlace unless otherwise defined in this Privacy Policy.
Information Collection and Use
For a better experience, while using our Service, I
may require you to provide us with certain personally
identifiable information, including but not limited to Email Address. The information that
I request will be retained on your device and is not collected by me in any way.
The app does use third-party services that may collect
information used to identify you.
Link to the privacy policy of third-party service providers used
by the app
Cookies
Cookies are files with a small amount of data that are
commonly used as anonymous unique identifiers. These are sent
to your browser from the websites that you visit and are
stored on your device's internal memory.
This Service does not use these “cookies” explicitly. However,
the app may use third-party code and libraries that use
“cookies” to collect information and improve their services.
You have the option to either accept or refuse these cookies
and know when a cookie is being sent to your device. If you
choose to refuse our cookies, you may not be able to use some
portions of this Service.
Service Providers
I may employ third-party companies and
individuals due to the following reasons:
- To facilitate our Service;
- To provide the Service on our behalf;
- To perform Service-related services; or
- To assist us in analyzing how our Service is used.
I want to inform users of this Service
that these third parties have access to their Personal
Information. The reason is to perform the tasks assigned to
them on our behalf. However, they are obligated not to
disclose or use the information for any other purpose.
Security
I value your trust in providing us your
Personal Information, thus we are striving to use commercially
acceptable means of protecting it. But remember that no method
of transmission over the internet, or method of electronic
storage is 100% secure and reliable, and I cannot
guarantee its absolute security.
Links to Other Sites
This Service may contain links to other sites. If you click on
a third-party link, you will be directed to that site. Note
that these external sites are not operated by me.
Therefore, I strongly advise you to review the
Privacy Policy of these websites. I have
no control over and assume no responsibility for the content,
privacy policies, or practices of any third-party sites or
services.
Children’s Privacy
These Services do not address anyone under the age of 13.
I do not knowingly collect personally
identifiable information from children under 13 years of age. In the case
I discover that a child under 13 has provided
me with personal information, I immediately
delete this from our servers. If you are a parent or guardian
and you are aware that your child has provided us with
personal information, please contact me so that
I will be able to do the necessary actions.
Changes to This Privacy Policy
I may update our Privacy Policy from
time to time. Thus, you are advised to review this page
periodically for any changes. I will
notify you of any changes by posting the new Privacy Policy on
this page.
This policy is effective as of 2022-01-02
Contact Us
If you have any questions or suggestions about my
Privacy Policy, do not hesitate to contact me at daniyalmoha@gmail.com. You are also free to contact me using any of the links below.
Daniyal Mohammed © 2022; Powered by Jekyll & Github