Skip to content

noahstreller/excusr

Repository files navigation

Excusr™®©

icon

Introduction

The Excusr App is a mobile application to which you can turn to, when you can not think of any good excuses. The user can select a category for his excuse and then describe his situation. The user will then receive an excuse for the selected category. To avoid the user using the same excuses repeatedly, the user is given a hint that he has already used them.

Screenshots

homeScreenWithExcuse historyDark limitReached settingsDarkHint

Reviews

★★★★★ Sameer Gross:
"You certainly know the situation where you want to lie to your loved ones and friends in your vicinity and emotionally manipulate them or simply get out of a tricky situation. Then you need EXCUSR™®© now. Because life is better with EXCUSR™®©" - Sameer Gross (CEO of EXCUSR™®© Inc.)
★★★★★ Noah Streller:
"..." - Noah Streller (EXCUSR™®© Inc. Sponsor)
★✰✰✰✰ Donald Trump:
"I don't need this app. I have the best excuses. I have the best words. I have the best brain. I have the best of everything. I am the best." - Donald Trump (Former? President of the United States of America)
★★★★★ Mark Zuckerberg:
"Lizards for the win" - Mark Zuckerberg (CEO of Facebook)
★★★✰✰ Elon Musk:
"I like the idea, but I think it could be better. I will send you a rocket to Mars, so you can work on it there." - Elon Musk (CEO of SpaceX)
★✰✰✰✰ Master Oogway:
"There are no accidents." - Master Oogway (Kung Fu Panda)

Documentation

This is the documentation for the development of the Excusr™®© App.

Abstract

This React Native Application is a mobile interface using data from Excuser Three. The user can use this app to find an excuse if found in a bad situation. The user also has to choose a category, eg. "Family" or "Office". After the user has chosen the category of their desire, they can interact with the "Get excuse"-Button. Right thereafter, the user will receive a random excuse. Excuses, that have been shown before, will be marked with an alert.

User Stories

  • As a User, I would like to get excuses for my desired category, so I can lie to my loved ones.

  • As a User, I would like to choose a category for my excuses, so I can adapt to the specific situation.

  • As a User, I would like to have the option to mark duplicates with a warning, so I do not reuse the excuses.

  • As a User, I would like to have the option to automatically skip duplicates, so I can always see a brand new excuse.

  • As a User, I would like to view my excuse history, so I do not reuse the excuses.

Mockup

Figma

Technical Implementation

The app uses React Native Paper as a component library, to ensure proper MD3 implementation. We use Tab navigation and the Expo Router package to handle the routing.

There are also some custom-made components, such as:

  • Blockquote

  • Category Dropdown

  • Excuse Output Field

  • Header (based on the Paper component)

  • Navigation Bottom Bar (based on the Paper component)

  • Banner, which is shown when the excuse is a duplicate

  • Popup

  • Settings Item

  • Toggle Switch

As for persistence, we save the full excuse object as a JSON string. The excuse objects have the following attributes:

{
  id: number;
  excuse: string;
  category: string;
}

This string is saved to and retrieved from the Async-Storage, provided by the @react-native-async-storage/async-storage module.

The users preferences are saved in the async storage as well. The preferences can be used in the entire app by wrapping it in a context provider. If the user wishes to disable duplicates, the app will retry to find a unused excuse 100 times. Sadly, there is no better method, as the API depends on randomized results.

Tests

ID

1

Requirements

As a User, I would like to get excuses for my desired category, so I can lie to my loved ones.

Requisites

The User has to be on the Excusr "Home" Tab

Instructions

  • Open App

  • Click on the dropdown

  • Choose the desired category from the dropdown

  • press the "Get an excuse" button on the right side of the dropdown

Expected Results

The User should now see a textbox with a random excuse for the given category.

ID

2

Requirements

As a User, I would like to choose a category for my excuses, so I can adapt to the specific situation.

Requisites

The User has to be on the Excusr "Home" tab

Instructions

  • Open the App

  • The user has to click on the dropdown

  • The user has to click on the desired category which will appear

Expected Results

The dropdown text should now contain your desired chosen category

ID

3

Requirements

As a User, I would like to have the option to mark duplicates with a warning, so I do not reuse the excuses.

Requisites

The user should be on the "Settings" tab

Instructions

  • Open the App

  • Navigate to the "Settings" tab

  • Toggle the "Duplicate" switch

  • Make sure the "Duplicate" switch is in the "ON" position

Expected Results

The User will now when clicking on "Get an excuse" on the "Home" tab if a duplicate excuse appears a red field will appear which tells you that this excuse is a duplicate one. If a green one appears if means its a unique excuse.

ID

4

Requirements

As a User, I would like to have the option to automatically skip duplicates, so I can always see a brand new excuse.

Requisites

The user should be on the "Settings" tab

Instructions

  • Open the App

  • Navigate to the "Settings" tab

  • Toggle the "Duplicate" switch

  • Make sure the "Duplicate" switch is in the "OFF" position

Expected Results

The User can just normally use the app and get excuses but there won’t be any warnings since duplicate excuses will just be skipped

ID

5

Requirements

As a User, I would like to view my excuse history, so I do not reuse the excuses.

Requisites

The user should be on the "History" tab

Instructions

  • Open the App

  • Navigate to the "Home" tab

  • Click on the dropdown

  • Choose the desired category from the dropdown

  • press the "Get an excuse" button on the right side of the dropdown

  • Navigate to the "History" tab

Expected Results

The user should now be able to see the excuses he has already gotten.

Results

ID

Person

Date

Success

Notes

1

Cyrill Schudel

12/03/2024

yes

The user could choose a category and get an excuse

2

Joel Schatt

12/03/2024

yes

The user could choose a desired category

3

Cyrill Schudel

12/03/2024

yes

The user was able to see the marked excuses.

4

Cyrill Schudel

12/03/2024

yes

The user just got new excuses and got to see how many retries it took

5

Joel Schatt

12/03/2024

yes

The user was able to see the excuses he had already used.

Summary

  • The project all in all went quite well. We made good progress and didn’t have to stress at all.

  • We are quite happy with our result and what we achieved in the little time we had.

  • We learned how to navigate some of the troubles with React Native and had some new experiences with working with Figma. My College and I can both say we have been able to gain knowledge from this project.

  • We achieved all we had wanted and even tho there are some ease-of-use items we could add but those are more luxuries than necessities.