Welcome to the documentation pages of Focusly!
This Software Development Report, tailored for LEIC-ES-2024-25, provides comprehensive details about Foculy, from high-level vision to low-level implementation decisions. It’s organised by the following 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!
- Francisca Portugal - up202303640@up.pt
- Gabriela Silva - up202304064@up.pt
- Maria Luiza Vieira - up202304306@up.pt
- Sara García - up202306877@up.pt
Business modeling in software development involves defining the product's vision, understanding market needs, aligning features with user expectations, and setting the groundwork for strategic planning and execution.
Focusly is an all-in-one study app that helps students master topics faster by combining active recall tools (quizzes, flashcards), a collaborative forum, and focus-boosting timers (pomodoro) in one seamless app. Designed for learners of all levels, it turns scattered study methods into a productive, social, and well-organized learning environment.
- Quizzes & Flashcards – Create, customize, and review quizzes and flashcards to reinforce learning
- Collaborative Forum – Post questions, get answers, and engage in discussions with fellow students
- Pomodoro Timer – Stay focused with an integrated Pomodoro timer for structured study sessions
- Categorization – Organize your flashcards and quizzes by subject or topic for easy access
Focusly transforms the way you study by combining essential tools into one seamless experience. Create personalized quizzes and flashcards, boost focus with a built-in Pomodoro timer, and collaborate with peers through an interactive forum.
Whether you're preparing for exams or just reviewing concepts, our app makes studying smarter, not harder. Join a community of learners and take your productivity to the next level!
- As a student, I want to be able to authenticate so that all my data is saved permanently and I can access it everywhere.
User interface mockups
Acceptance tests
Given the user is on the Sign In screen,
When they enter valid credentials and press "Sign In",
Then they should be successfully logged in.
Given the user enters an incorrect password,
When they try to sign in,
Then an error message should be displayed.
Given the user is on the Sign Up screen,
When they enter valid details and press "Sign Up",
Then their account should be created, and they should be redirected to the Sign In screen.
Given the user tries to sign up with an already existing username,
When they attempt to create an account,
Then an error message should be displayed indicating the username is taken.
Given the user doesn’t fill in all required fields,
When they attempt to sign up,
Then an error message should prompt them to complete the form.
Value and effort
Value: Must-have
Effort: 55
- As a student, I want to be able to submit questions so that I can understand more concepts.
User interface mockups
Acceptance tests
Given the student is on the forum page,
When they tap the “+” button and enter a title and description for their question, then press “Publish,”
Then the question should appear in the list of questions in the forum.
Given the student is on the forum page,
When they try to submit a question without entering a title,
Then an error message should be displayed indicating that the title is required.
Given the student is on the forum page,
When they try to submit a question without entering a description,
Then an error message should be displayed indicating that the description is required.
Given the student is on the forum page,
When they tap on a question from the list,
Then they should be taken to a page displaying the full question along with any answers.
Given the student is on the forum page,
When they enter a keyword in the search bar,
Then only questions matching the keyword should be displayed in the list.
Given the student is viewing a question,
When they tap the “Post your answer” button, enter their answer, and press “Publish,”
Then their answer should appear under the question in the list of answers.
Given the student is viewing a question,
When they tap the “Post your answer” button, enter their answer, and press “Publish,they try to submit an answer without entering any text,
Then an error message should be displayed indicating that the answer cannot be empty.
Given the student submits a new question,
When they navigate to the "New" section,
Then their question should appear at the top of the list, ordered by posting time (most recent first).
Given the student has posted multiple questions,
When they navigate to the "My Questions" section,
Then only their questions should be displayed in descending order of posting time
Value and effort
Value: Must-have
Effort: 55
- As a student, I want to be able to create a pomodoro timer so that I can focus better while I study.
User interface mockups
Acceptance tests
Given the user is on the Pomodoro timer screen,
When the user selects "Pomodoro" mode and clicks the Start button,
Then the timer should begin counting down from 25:00.
Given the user is on the Pomodoro timer screen,
When the user selects "Short Break" mode and clicks the Start button,
Then the timer should begin counting down from 5:00.
Given the user is on the Pomodoro timer screen,
When the user selects "Long Break" mode and clicks the Start button,
Then the timer should begin counting down from 15:00.
Given a timer is running,
When the user clicks the Pause button,
Then the countdown should stop and remain at the current time.
Given a timer is running or paused,
When the user clicks the Reset button,
Then the timer should reset to the initial value (25:00 for Pomodoro, 5:00 for Short Break, 15:00 for Long Break).
Given the timer is running,
When the user switches pages in the app,
Then the timer should continue running without skipping or freezing.
Given the user switches between different modes (Pomodoro, Short Break, Long Break),
When a mode is selected,
Then the selected mode should be visually highlighted in the UI.
Given the user opens the app,
When the Pomodoro timer screen loads,
Then the UI should match the provided mockups in terms of layout, buttons, and colors.
Value and effort
Value: Must-have
Effort: 21
- As a student, I want to be able to create flashcards and quizzes so that I can review the contents I studied previously.
User interface mockups
Acceptance tests
Given the student is on the "Create" screen,
When they select "Flashcards," enter a title and category, add flashcards with front and back content, and press "Done,"
Then the new flashcard deck should appear under "My Flashcards."
Given the student is on the "Create" screen,
When they attempt to create a flashcard deck without entering a title,
Then an error message should be displayed indicating that a title is required.
Given the student is on the "Create" screen,
When they select "Quiz," enter a title and category, add questions with multiple-choice options, select correct answers, and press "Done,"
Then the new quiz should appear under "My Quizzes."
Given the student is on the "Create" screen,
When they attempt to create a quiz without entering a title,
Then an error message should be displayed indicating that a title is required.
Given the student has created a flashcard deck,
When they select the deck from the "Flashcards" section,
Then they should see flashcards one at a time, with options to navigate forward and backward.
Given the student has created a quiz,
When they select the quiz from the "Quizzes" section and submit their answers,
Then they should receive feedback on their score.
Given the student has previously accessed flashcards or quizzes,
When they navigate to the Home screen,
Then the "Continue Learning" section should display the most recently accessed flashcards and quizzes.
Given the student has created or has access to quizzes,
When they navigate to the Home screen,
Then the "Quizzes" section should list all available quizzes.
Given the student has created or has access to flashcard decks,
When they navigate to the Home screen,
Then the "Flashcards" section should list all available flashcard decks.
Given the student is on the Home screen,
When they click on a flashcard deck,
Then they should be taken to the flashcard review screen.
Given the student is on the Home screen,
When they click on a quiz,
Then they should be taken to the quiz-taking screen.
Given the student creates a new flashcard deck or quiz,
When they return to the Home screen,
Then the new flashcard deck or quiz should be displayed in the respective section.
Value and effort
Value: Must-have
Effort: 89
- As a student, I want to be able to categorize my flashcards and quizzes so that I can find them easily and keep my studies organized.
User interface mockups
Acceptance tests
Given the student is on the Profile screen,
When they click the "Add Category" button,
Then a modal should appear allowing them to enter a category title, select an icon, and choose a color.
And after clicking "Add," the new category should be displayed in the "Your Categories" section.
Given the student has categorized flashcards and quizzes,
When they select a category from the Profile screen,
Then they should see a list of all flashcards and quizzes associated with that category.
Given the student tries to create a category,
When they enter a name that already exists,
Then an error message should be displayed preventing duplicate categories.
Given the student has multiple categories,
When they view the Profile screen,
Then each category should be displayed with its chosen color and icon for easy recognition.
Value and effort
Value: Should-have
Effort: 34
- As a student, I want to be able to edit my flashcards and quizzes so that I can correct mistakes or add more content.
User interface mockups
Acceptance tests
Given the student is on the "Edit Flashcard Deck" screen,
When they click the pencil icon next to the title,
Then they should be able to modify the deck's title,
And the updated title should be saved and displayed after clicking "done."
Given the student is on the "Edit Flashcard Deck" screen,
When they click the pencil icon on a flashcard,
Then they should be able to modify both the front and back text of the flashcard,
And the changes should be saved and displayed after clicking "done."
Given the student is on the "Edit Flashcard Deck" screen,
When they click the trash bin icon on a flashcard,
Then the flashcard should be removed from the deck,
And the change should persist after clicking "done."
Given the student is on the "Edit Flashcard Deck" screen,
When they click the "+" button,
Then a new blank flashcard should appear for input,
And after entering the front and back text, it should be added to the deck upon saving.
Given the student is on the "Edit Quiz" screen,
When they click the pencil icon next to the quiz title,
Then they should be able to modify the title,
And the updated title should be saved after clicking "done."
Given the student is on the "Edit Quiz" screen,
When they click the pencil icon on a question,
Then they should be able to edit the question text and its options,
And the changes should be saved and displayed after clicking "done."
Given the student is on the "Edit Quiz" screen,
When they click the trash bin icon on a question,
Then the question should be removed from the quiz,
And the change should persist after clicking "done."
Given the student is on the "Edit Quiz" screen,
When they click the "+" button,
Then a new blank question should appear for input,
And after entering the question and its options, it should be added to the quiz upon saving.
Given the student is editing a flashcard deck or quiz,
When they modify the category,
Then the deck or quiz should be moved to the new category,
And the change should be reflected on the home and profile screens.
Value and effort
Value: Should-have
Effort: 89
For the vertical prototype, we expanded the implementation to include additional core features beyond the Pomodoro Timer, ensuring seamless integration and functionality across the app.
Implemented Features
-
Pomodoro Timer (Sprint 0)
-
Users can switch between Pomodoro (25-minute), Short Break (5-minute), and Long Break (15-minute) modes.
-
Start, pause, and reset functionality with sound alerts and push notifications.
-
UI consistency with mockups and active mode highlighting.
-
-
User Authentication (Sprint 1 & 2)
-
Sign in with Google and Sign Out functionality.
-
Email & password authentication (Create Account & Sign In pages).
-
Secure user data storage and retrieval.
-
-
Quiz and Flashcard System (Sprint 1)
-
Creation of quizzes and flashcard decks, linked to the database.
-
Visualization of quizzes and flashcards for review.
-
-
Quiz and Flashcard Editing (Sprint 2)
-
Modification of existing flashcards and quizzes via a dedicated edit page.
-
Edit section in the Create page to view and select flashcards/quizzes for editing.
-
Separate edit pages for modifying content after selection.
-
-
Forum Feature (Sprint 2)
-
Users can post questions and answer existing ones.
-
Search functionality to browse through questions.
-
UI Snapshot
Sprint 0:
Sprint 1:
Sprint 2:
Sprint 3:
Did well: Great task division, team work efficiency and good communication
Do differently: Have a higher effort value in a single sprint
Puzzles: None
Improvements to implement next Sprint:
- Do at least two user stories to maximize efficiency
- Handle documentation early on
Did well: Successfully implemented core features within the sprint timeline, good communication
Do differently: Do the acceptance tests foreach feature immediately after its implementation is complete
Puzzles: Integrating the authentication system was trickier than expected
Improvements to implement next Sprint:
- Study better the topic we are about to implement so that we can divide the tasks more appropriately
happiness meters
| Francisca | Gabriela | Maria Luiza | Sara | |
|---|---|---|---|---|
| Francisca | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Gabriela | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Maria Luiza | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Sara | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
Each row in the table corresponds to an individual's evaluations, with the person's name indicating the evaluator and the subsequent cells detailing their assessments of each peer.
Did well: Good collaboration and task division among team members, which helped deliver both major features on time
Do differently: Plan more time for backend/database integration when introducing new features
Puzzles: Deciding how to structure forum posts and replies in the database took longer than expected
Improvements to implement next Sprint:
- Plan more effectively to avoid last-minute work on the final day
happiness meters
| Francisca | Gabriela | Maria Luiza | Sara | |
|---|---|---|---|---|
| Francisca | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Gabriela | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Maria Luiza | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Sara | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
Each row in the table corresponds to an individual's evaluations, with the person's name indicating the evaluator and the subsequent cells detailing their assessments of each peer.
Did well: Strong teamwork and clear task division enabled on-time delivery of major features.
Do differently: Prioritize documentation updates concurrently with feature development
Puzzles: Color adaptation for dark mode
Improvements to implement next Sprint:
- Define the tasks to be done before work allocation
happiness meters
| Francisca | Gabriela | Maria Luiza | Sara | |
|---|---|---|---|---|
| Francisca | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Gabriela | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Maria Luiza | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Sara | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
Each row in the table corresponds to an individual's evaluations, with the person's name indicating the evaluator and the subsequent cells detailing their assessments of each peer.
-> Fixed minor bugs
Did well: Successfully polished the application with thorough bug fixing and quality assurance, ensuring a stable and reliable product for release.
Do differently: Implement more comprehensive automated testing earlier in development to catch edge case bugs before the final release phase.
happiness meters
| Francisca | Gabriela | Maria Luiza | Sara | |
|---|---|---|---|---|
| Francisca | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Gabriela | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Maria Luiza | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
| Sara | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent | ⭐ Excellent |
Each row in the table corresponds to an individual's evaluations, with the person's name indicating the evaluator and the subsequent cells detailing their assessments of each peer.























































