Skip to content

larampc/VolunteerU

Repository files navigation

VolunteerU | Development Report

Welcome to the documentation pages of our app VolunteerU. You can find here details about VolunteerU, 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!

Bruno Aguiar [email protected]

Filipe Correia [email protected]

Francisco Fernades [email protected]

Lara Coelho [email protected]

Paulo Coutinho [email protected]


Business Modelling

Product Vision

VolunteerU is an app designed for the FEUP community and organizations to discover, share, and participate in volunteering activities effortlessly, streamlining the volunteering experience into one convenient platform.

Features and Assumptions

  • See all volunteering initiatives - list all initiatives, each one presenting its name, image, location, date and duration.
  • Filter volunteering initiatives - see only initiatives from a certain category, region or time interval.
  • See the details of a specific initiative - more detailed information about the event and its organizer.
  • Register for an event - subscribe an initiative in just a few clicks.
  • Publish an event - publicitate your event providing all the necessary details.
  • User and organization profiles - different attributes for each type of profile, possibility of editing your information and viewing other members profiles.
  • Subscribe categories and organizations - receive notifications when a new event of a category or organization you subscribed is published.

Dependencies:

  • Maps - for picking the location of an event.
  • Firebase - for storing data.
  • Calendar - for picking a date and time.

Elevator Pitch

The following is our current elevator pitch.

Olá! Alguma vez pensaram em voluntariar-se, mas ficaram perdidos com tantas opções em plataformas diferentes e inscrições complicadas? Hoje vamos mostrar-vos uma aplicação que irá facilitar todo o processo associado ao voluntariado. Atualmente, no mercado, cada organização tem o seu website onde apresenta as suas ofertas. No entanto, para um voluntário que tenha uma vida ocupada, é simplesmente inviável estar a par de todas as ofertas de todas as organizações. Por este motivo, os voluntários sentem-se desmotivados e as atividades têm menos participantes!

Para resolver isso, temos o prazer de vos apresentar a VolunteerU.

Esta app permite a partilha de iniciativas de voluntariado por parte de várias organizações e até de voluntários. Desta forma, ajudamos as organizações a encontrar voluntários e ajudamos os voluntários a encontrarem atividades em que possam participar.

Nós, estudantes conscientes da importância do nosso contributo para a sociedade, ficamos à distância de um clique das ações que são do nosso interesse.

Estão preparados para uma nova jornada no voluntariado? Descarreguem já a VolunteerU e descubram os próximos eventos.

Requirements

User Stories

The user stories can be found in the Github Project 2LEIC18T1.

Domain model

Domain model

Our domain model is very focused on the interaction between the Event object and the Account object.

So, we allow the creation of two types of accounts, the students' account and the organizations' account. The main difference between them lies on the possibility to register on events. Only students are allowed to register to events. Students and organizations may create events, specifying the required information. Additionally, students may also subscribe objects of type Subscribable, such as the category or the organization. This means, that they will be notified everytime there is a new event of that category or organization, respectivelly. Also, we allow students to subscribe to events (which we call "like an event"), being notified whenever the information about the event is changed or the number of people registered is getting close to the full capacity.

Architecture and Design

Logical architecture

The logical structure of our code is layered. The app UI is backed up by the logic of our business, using as external services Google Maps to helping locate events. This middle layer is supported by the database schema needed to save and import information to/from FireStore and Firebase. Logical Architecture

Physical architecture

Our deployment view separates two types of users, both using our Flutter application. They access the same server whose UI is composed by the Profiles generated for each user and the Events which are the base of our app concept. The Profiles have associated a business logic that uses products from the Google Server such us Firebase Authentication and Firestore (for saving and importing more user details besides those of authentication). The Events Business Logic resort to Google Maps API needed for location purposes and the Firestore API to manage the data of these events. Deployment Architecture

Vertical prototype

  • Register and login page - use of firebase.
  • Main page with events.
  • Basic page for creating events.
  • Basic profile. Vertical Prototype

Testing

WhatsApp Image 2024-05-01 at 10 31 30

As of 16/05:

WhatsApp Image 2024-05-16 at 14 33 16

Project management

Beginning of sprint 1:

image

After sprint 1:

image

Sprint retrospective

  • Did well:

    • Applied the collocated team idea, which boosted productivity and communication;
    • Pair programming was effective to improve team spirit and orient the vision of product;
    • We were not afraid to refactor the architecture of the system;
    • We were persistent when facing adversities;
    • Good communication;
    • Respected each other's ideas;
    • Quickly learned the necessary technologies;
    • Well defined scrum-master and product owner;
    • Immediately resolved problems that were blocking further developments.
  • Do differently:

    • Manage time better, not exceding 6 hours/week -- We spent a lot of time trying to make acceptance tests work;
    • Allocate tasks in a more structured manner, making it clearer how to start working on the PBI;
    • Pop the happy bubble sooner;
    • Everyone giving their feedback on app updates.
  • Puzzles:

    • Doing everything in a short time burst, could lead to disorientation.

Before Sprint 2:

ESOF_before_sprint2

After Sprint 2:

ESOF_after_sprint2

Sprint Retrospective

Following the first sprint, we worked on all the things we wanted to do differently, setting up tasks in an ambitious but more realistic way and easying the communication.

  • Did well:

    • Better management of time effort
    • More balanced work during the sprint, avoiding big stresses in the last days before the deadline
    • We were better prepared and worked faster
    • There was better team management and offloading of work between members
    • The team communicated well
    • All members' ideas were respected
  • Do differently:

    • Make it easier to give structured feedback on app updates. Currently, feedback is given in a unstructured and disorganized manner.
  • Puzzles

    • No puzzles. Although we are currently puzzled on the best way to reach and communicate to people interested in buying/acquiring our app.

Before Sprint 3

sprint3_before

End of Sprint 3

image

Sprint Retrospective

  • Did well:

    • Decent management of time effort: We knew time availability would be low, therefore, we adapted the effort of the sprint
    • Feedback was given in a more structured and organized way
    • Explored possibilities of opening the app to market by connecting with people in the industry
    • Boosted team spirit with off-work socialization
    • All members' ideas were respected
    • The work was balanced during the sprint
  • Do differently

    • Work division was not perfect yet
    • Sometimes we were stuck in a happy bubble - should have been popped earlier.
  • Puzzles

    • What's the correct balance between social dynamics to increase team spirit and focused work on the development.

The results of the integration tests can be found here.

Final grade: 20