-
Welcome to the documentation pages of the ConfMate of openCX!
You can find here detailed about the ConfMate hereby mentioned as module, from a high-level vision to low-level implementation decisions, a kind of Software Development Report (see template), organized by discipline (as of RUP):
- Business modeling
- Requirements
- Architecture and Design
- Implementation
- Test
- Configuration and change management
- Project management
So far, contributions are exclusively made by the initial team, but we hope to open them to the community, in all areas and topics: requirements, technologies, development, experimentation, testing, etc.
Please contact us!
Thank you!
Carlos Lousada
José David Rocha
Tiago Marques
Tomás Mendes
ConfMate is an app designed to redefine giveaways on conferences. Instead of relying on luck, we allow conference hosts to select who they want to give/sell the products to, based on requeriments they set.
Most conferences have a common problem: products promoted by the hosts are often given away randomly and, most of the times, the attendees that receive them don't even give much use to them. That’s the reason why we decided to create ConfMate, an app designed to redefine conferences' giveaways. This way, instead of purely relying on luck, ConfMate allows hosts to select who they want to give or sell the products to, based on requirements they previously set. With our safe and reliable app, ConfMate will definitely make justice to conferences' giveaways.
Actor: Attendee Description: By selecting a product from a given conference they can apply for the given product. Additionally, they can also fill out a small text, explaining the reason why they think they are a good match for the product.
Preconditions and Post conditions: The user must be logged in order to book a product.
Normal flow
-
The attendee navigates to the Products Tab.
-
The attendee taps on the product he wishes to apply to.
-
The attendee presses the button to apply for a product.
-
The attendee types why he should receive the product.
-
The attendee confirms his appliance.
Alternative Flows and Exceptions
-
The attendee navigates to a Talk description.
-
The attendee taps the "Check Promoted Products" button.
-
The attendee taps on the product he wishes to apply to.
-
The attendee presses the button to apply for a product.
-
The attendee types why he should receive the product.
-
The attendee confirms his appliance.
Actor: Host
Description: The hosts can choose to promote products on their own talks as well as choosing the receivers of such products.Preconditions and Post conditions: The host must have created at least one talk in order to complete the adding of a product.
Normal flow:
- The host presses the button to add a product to his talk.
- The host fills out a small form with the product description.
- The hosts selects the talk which he wants to add the product to.
Actor: Host
Description: The hosts can choose the attendees who will receive the products. Normal flow:-
The hosts navigates to the Products Tab.
-
The hosts taps on the product he wishes to check.
-
The host presses the button to check the candidates of his product.
-
The host scrolls through the list of attendees and selects who he wants to give the product to.
-
The hosts checks if the attendee selected is the one he wants to give the product to, by reading the text the attendee wrote with the justification for applying.
-
The hosts presses "YES" and gives the product to the attendee.
Alternative Flows and Exceptions:
-
The hosts taps on his Talk.
-
The hosts taps on the "Check Promoted Products".
-
The host taps on the product he wishes to check.
-
The host presses the button to check the candidates of his product.
-
The host scrolls through the list of attendees and selects who he wants to give the product to.
-
The hosts checks if the attendee selected is the one he wants to give the product to, by reading the text the attendee wrote with the justification for applying.
-
The hosts presses "YES" and gives the product to the attendee.
As a host I want to be able to promote and recommend products I find relevant to the conference.
User interface mockups
Acceptance Tests
Scenario: Promoting/recommending products on the conference Given that I wish to promote/recommend a certain product I find relevant When I tap the "Add Products" button Then the app starts displaying the selected product on the conference's forum
Value/Effort
Value: Must have
Effort: XL
As a host I want to be able to choose which attendees I wish to giveaway the products to.
User interface mockups
Acceptance Tests
Scenario: Choosing which attendees should receive the products Given that I wish to choose which attendees should receive the products When I tap the "Choose Attendees" button Then I will able be to pick between the candidates who I want to give the products to
Value/Effort
Value: Must have
Effort: XL
As an attendee I want to be able to apply for products.
User interface mockups
Acceptance Tests
Scenario: Applying a product related to a certain conference Given that I wish to apply for a promoted producted When I tap the "Apply for" button Then I will able be to the possible candidates capable of receiving the selected product
Value/Effort
Value: Must have
Effort: XL
As a host I want to be able to book a room to host my conference.
User interface mockups
Acceptance Tests
Scenario: Booking a room to host a conference Given that I wish to book a room to host my conference When I click "Book Room" Then the app shows me the available rooms When I tap the "Choose Room" button Then the app books the selected room When I tap the "Create Talk" button Then the system creates the conference and displays it on the "All Talks" menu
Value/Effort
Value: Must Have
Effort: S
As an attendee I want to be able to book a seat for conferences that I wish to attend.
User interface mockups
Acceptance Tests
Scenario: Booking a seat for a conference Given I want to book a seat for a certain conference When I click the "Book conference seat" button Then the app shows me the available seats When I click the "Select Seat" Then the app books the seat for the selected conference
Value/Effort
Value: Must Have
Effort: M
As an attendee I want to be able to receive a notification whenever i receive (or don't receive) a product.
User interface mockups
Acceptance Tests
Scenario: Getting a Notification Given I want to get a product When the Hosts gives me the product Then the app sends me a notification
Value/Effort
Value: Must Have
Effort: M
Our app concepts are easily understood, consisting of talks, products and profiles. Every user profile can be connected to a talk as an attendee or host and can also apply for products, justifying his option on this subject. Furthermore, talks have limited seats and featured products that will be given away by the host to attendees that chose the products that he is promoting.
The architecture of a software system encompasses the set of key decisions about its overall organization. This way, logical and physical architectures are two main themes that will be covered in this specific topic.
To structure our app on a high-level, we decided to implement the MVC architectural pattern, since it is a good standard for this type of project.
Firstly, the Model contains all the application data: profiles, talks and products.
Furthermore, the View component represents the concrete display of the app state (mainly composed by widgets).
Finally, the Controller connects both previously referred components: the Model sends data for the View to display and the View sends user inputs for the Model to process. This process is completed using a set of objects that query the database (firestore), provide authentication functions, accept products, book seats, among other actions.
The user installs ConfMate on their smartphone and whenever they need to connect with our database (firestore), it communicates with it via HTTPS requests, storing and retrieving all the information needed.
Discussing about the programming language we chose, Flutter was the best concrete option, because of two main issues: it was not only required but also very appealing due to many provided built-in features.
To help on validating all the architectural, design and technological decisions made, we usually implement a vertical prototype, a thin vertical slice of the system.
In this subsection please describe in more detail which, and how, user(s) story(ies) were implemented.
Regular product increments are a good practice of product management.
While not necessary, sometimes it might be useful to explain a few aspects of the code that have the greatest potential to confuse software engineers about how it works. Since the code should speak by itself, try to keep this section as short and simple as possible.
Use cross-links to the code repository and only embed real fragments of code when strictly needed, since they tend to become outdated very soon.
There are several ways of documenting testing activities, and quality assurance in general, being the most common: a strategy, a plan, test case specifications, and test checklists.
In this section it is only expected to include the following:
- test plan describing the list of features to be tested and the testing methods and tools;
- test case specifications to verify the functionalities, using unit tests and acceptance tests.
A good practice is to simplify this, avoiding repetitions, and automating the testing actions as much as possible.
Configuration and change management are key activities to control change to, and maintain the integrity of, a project’s artifacts (code, models, documents).
For the purpose of ESOF, we will use a very simple approach, just to manage feature requests, bug fixes, and improvements, using GitHub issues and following the GitHub flow.
Software project management is an art and science of planning and leading software projects, in which software projects are planned, implemented, monitored and controlled.
In the context of ESOF, we expect that each team adopts a project management tool capable of registering tasks, assign tasks to people, add estimations to tasks, monitor tasks progress, and therefore being able to track their projects.
Example of tools to do this are:
We recommend to use the simplest tool that can possibly work for the team.
Describe your contribution to open-cx (iteration 5), linking to the appropriate pull requests, issues, documentation.