/feup-esof

Project for the ESOF course at FEUP

Primary LanguageDart

ECOnnect Development Report

Welcome to the documentation pages of ECOnnect!

You can find here details about ECOnnect, from a high-level vision to low-level implementation decisions, a kind of Software Development Report, organized by type of activities:

Contributions are expected to be made exclusively by the initial team, but we may open them to the community, after the course, in all areas and topics: requirements, technologies, development, experimentation, testing, etc.

Please contact us!
Thank you!

2LEIC16T1 - ES 2023/24


Business Modelling

Product Vision

Small actions, big impact: stay connected for a sustainable tomorrow!

Did you ride your bicycle to work today? Or you just finished recycling the trash from the last 3 weeks? Would you like to share your sustainable actions to motivate other people?
In an era facing serious environmental issues, everyone needs to take action toward a brighter future, but how exactly?
ECOnnect is the app designed just for this! By embracing community and collaboration we encourage users to promote and share their eco-friendly actions and ideas.
Together, we can achieve meaningful results with simple everyday contributions. Come help us!

Features, Assumptions and Dependencies

Features

  • User Login: users who want to use the app should be able to create an account associated with their e-mail.
  • Share Content: Users will be able to upload pictures/videos to the app, or even take them through the camera, and share them with the community.
  • Profile Page: Users will be able to see information about other users on their respective profile pages, like profile pictures, contact information and previous posts.
  • Follow Other Users: Logged-in users will be able to follow other users, allowing them to be updated on their activity and prioritize their posts on the follower's feed.
  • User Feed: Users will see the most relevant posts on the first page
  • Sustainability Challenges: Monthly challenges or initiatives related to sustainability will be available, to engage users in eco-friendly activities.
  • Rating System: Users who find other posts inspiring can give positive feedback to the original creator, allowing them to rank higher in challenges and be suggested to other people.
  • Search Users: Users should be able to search for other users, according to their interests.
  • Comment Section: Every post will have a section for users to comment and share their thoughts and ideas.

Assumptions and Dependencies

Elevator Pitch

Did you ride your bicycle to work today? Or you just finished recycling the trash from the last 3 weeks? Would you like to share your sustainable actions to motivate other people?
In an era facing serious environmental issues, everyone needs to take action toward a brighter future, but how exactly?
ECOnnect addresses these questions by embracing community and collaboration and encouraging members to promote eco-friendly actions and ideas.
Post your actions daily, like and comment on other posts and follow other user to keep yourself updated with their recent activity!
By focusing on sustainable actions and positive user feedback, ECOnnect aims to facilitate sharing new ways to make the world a better place and inspire others to do the same.
Together, we can achieve meaningful results with simple day-to-day contributions. Come help us!


Quantos de vocês vieram de transporte público hoje para a faculdade? Ou quantos de vocês reciclam frequentemente? Gostavam de partilhar essas ações e motivar outras pessoas?
Numa era que enfrenta graves problemas ambientais, todos nós precisamos de tomar ação para um futuro melhor, mas como exatamente?
ECOnnect resolve estas questões, ao usar valores de comunidade e colaboração, e incentivando membros a promover ações e ideias sustentáveis.
Publica as tuas ações diárias, dá gosto e comenta nas publicações de outros utilizadores para os motivar, ou até segue-os para te manteres atualizado das suas atividades.
Com foco nas ações sustentáveis e em feedback positivo dos utilizadores, ECOnnect procura facilitar a partilha de novas maneiras de tornar o mundo num lugar melhor e inspirar os outros a fazer o mesmo.
Juntos, podemos alcançar resultados incríveis com simples ações diárias. Junta-te a nós!

Requirements

Domain model

A user is any individual registered on the platform. Users are authenticated via email and password. They have the option to personalize their profiles by including a description and uploading a profile picture.
They can also create posts consisting of pictures along with textual descriptions. Users may also follow other users and like / comment on each other's posts.
Furthermore, the platform hosts challenges (created by admin users) focused on eco-friendly activities (with defined start/end dates and specific goals).
Users can participate in these challenges and earn points. There is a leaderboard that displays users with the highest scores.

Architecture and Design

Logical architecture

This project is based on an MVC architectural pattern.
The user interacts with ECOnnect UI (e.g. to create a new post) and the requests are processed through the database logic.
The database logic layer is responsible for fetching necessary information from Google Firebase, using Firestore for structured data storage and Cloud Storage for handling multimedia content.

Physical architecture

The ECOnnect mobile application runs in the operating system (OS) environment of the user's mobile device. The UI allows users to communicate with the platform, such as creating, editing and viewing posts, seeing other users' profiles, etc. The application is set up with the appropriate logic to handle each of these actions.
Persistent data, including user profiles, posts/multimedia content, is stored in a dedicated database server.
In the diagram, each component is identified with the hardware on which it should be installed or deployed.

Vertical prototype

The vertical prototype we developed was implemented with the integration of the camera and the Firebase technologies in mind (Firestore and Cloud Storage). For that, we developed a simple post creation and visualization system.
By opening the app, one can see all the posts currently in the database. When a post is created, by taking a picture with the camera, the image is sent to Cloud Storage and a new Post object is stored in the database.

Project management

You can find below information and references related to the project management in our team:

Sprint 1 Overview

Goal: Implement login page; implement adding photos to the app/database; implement draft of the main page

Project Board

Start of Sprint 1 End of Sprint 1

Sprint Retrospective #1

What should start?
  • Envision the product from the perspective of a larger audience (public or mass market)
  • Focus more on improving the User Experience (e.g. providing more visual feedback)
What should stop?
  • Merging multiple branches only at the very end of the sprint
What should continue?
  • Good teamwork and organization
  • Implementing all planned features and accomplishing all the objectives for the sprint (good estimation)

Sprint 2 Overview

Goal: Perfect the elements already implemented; implement profile pages; implement likes on posts; implement following other users; implement edit/delete actions on users' own posts

Project Board

Start of Sprint 2 End of Sprint 2

Sprint Retrospective #2

What should start?
  • Improve the features we already have with clean code
  • Fix any issues, bugs or glitches in our app
  • Perform more stress testing
What should stop?
  • Merging branches at the end of the sprint
  • Implement multiple users stories in a single pull request
What should continue?
  • Envision the product from the perspective of a larger audience (public or mass market)
  • Good teamwork and organization
  • Implementing all planned features and accomplishing all the objectives for the sprint (good estimation)

Sprint 3 Overview

Goal: Perfect the elements already implemented; implement comments on posts; implement search page; fix any issues or bugs

Project Board

Start of Sprint 3 End of Sprint 3

Sprint Retrospective #3

What should start?
  • Better communication between some of the members of the group
What should stop?
  • Merge features without associated unit tests (this was an exception for our demo presentation)
What should continue?
  • Features developed are tested and robust, they have visual queues for users already implemented, ...
  • Envision the product from the perspective of a larger audience (public or mass market)
  • Implementing all planned features and accomplishing all the objectives for the sprint (good estimation)

Tips and Tricks (for anyone doing a similar project)

  • In ESOF, they are very picky about how you organize your project, how you do the UMLs, how you use Github, etc. You have to be very careful with everything if you want a good grade. Also, if in any step you have doubts, I suggest asking your professor or seeking the slides from the theory classes.

Results

Final Grade: 19.0/20