Adding New Functionality to Quackstagram

This week, you will enhance the Quackstagram application by adding new, user-centric features. You’ll have to choose a feature that aligns with your groups skills and interests and contribute to the application’s functionality.

Lab Duration: Approximately 2 hours

Learning Objectives:

Preparation:

  1. Review the list of potential features categorized by complexity.
  2. Consider your teams skills and interests, as well as the needs and scope of the Quackstagram project.
  3. Prepare to plan, design, and implement the feature, focusing on clean, efficient, and maintainable code.

Feature List:

Choose one of the following or propose a new feature (subject to approval by Ashish/Spriha):

Easy:

  1. Fixing the Like Functionality: Ensure a user can like an image only once, preventing multiple likes from the same user.

  2. Profile Customization: Allow users to edit the profile picture and the bio of their profile.

  3. Delete Post: Enable users to delete their own posts. You can also archive the post rather than completely deleting them.

  4. Adding Hash Tags: Users can use hash tags in their caption, clicking on the hashtag should bring other images with that hashtag.

Medium:

  1. Implementing Comments Feature: Allow users to comment on images, displaying the comments below the image.

  2. Tagging in Posts: Allow users to tag other users in their posts and notifications for tagged users.

  3. Storing hash value of password: Changing the password storage mechanism to store hash value of passwords rather than passwords in plain text.

Difficult:

  1. Implementing Search Functionality: Enable users to search for other users, tags, or content within the app.

  2. Direct Messaging: Allow users to send direct messages to each other, creating a private conversation space.

  3. Image Filters and Editing: Implement basic image editing features like filters, cropping, and adjusting brightness/contrast. You can also add stickers to the images.

  4. Creating an admin user panel: Admin user panel with special privileges to moderate content (delete any post, caption or comment).

Lab Tasks:

  1. Feature Selection:
    • Review the list of features and select one that matches your skill level and interests. You should also motivate your choice based on how it relates to the priortization you developed in Lab 2. Alternatively, propose a new feature for approval by Ashish/Spriha.
  2. Planning and Design:
    • Outline how the selected feature will integrate with the existing application. Plan the necessary UI, text files, and backend modifications.
    • Create a simple design or flowchart illustrating how the new feature will function within the current system.
  3. Feature Implementation:
    • Begin coding the new feature. Write clean, efficient, and well-documented code.
    • Continuously test the feature during development to catch and resolve issues early.
  4. Integration and Testing:
    • Integrate the new feature with the existing application, ensuring it interacts correctly with current functionalities.
    • Perform thorough testing, checking for bugs, usability issues, and overall performance.

Preparation for Next Week: