bermani / parstagram

0 stars 0 forks source link

Project 4 - Parstagram

Parstagram is a photo sharing app using Parse as its backend.

Time spent: 18 hours spent in total

User Stories

The following required functionality is completed:

The following stretch features are implemented:

The following additional features are implemented:

Please list two areas of the assignment you'd like to discuss further with your peers during the next class (examples include better ways to implement something, how to extend your app in certain ways, etc):

  1. Optimal way to implement likes in order to avoid race conditions and improve efficiency
  2. Best practice way to find the size of a Relation within Parse for things like comments, likes, and follows
  3. Strategies for hashing passwords or making them more secure in some way
  4. How to get HTTPS image URLs from the Parse backend rather than HTTP

Video Walkthrough

Here's a walkthrough of implemented user stories:

Video Walkthrough

GIF created with Kap.

Credits

List an 3rd party libraries, icons, graphics, or other assets you used in your app.

Notes

There were a lot of technical challenges I had to overcome to create this app, such as implementing Fragments and FragmentManagers, syncing Fragment and Activity navigation, forming proper ParseQuerys, using a FileProvider to save image files, and more. I had to learn a lot of new material to complete this project, and had to learn it at a much faster rate than previous projects. The challenges were not only conceptual and technical, but also organizational. I originally had ProfileFragment as a subclass of HomeFragment, but when trying to implement the profile grid view I realized that it would be a huge mess to try to maintain the inheritance, as I would have had to

It was very frustrating for me that the classes were so similar and would lend themselves to an inheritance relationship but the high complexity of the situation made it impossible to do so in an elegant way. This app was challenge not only of my ability to implement functionality but to organize my codebase on a larger scale.

License

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.