-
Notifications
You must be signed in to change notification settings - Fork 2
Requirements & Specifications
Rev. 2023/10/08 17:25 ver 1.0 (By Songmin Lee).
Initial Creation.
Rev. 2023/11/05 20:48 ver 1.1(By Donghyun Yun).
delete the User Story: Change the sorting.
delete the User Story: Post Comments.
delete the User Story: Report Event.
change User Interface Requirements.
Rev. 2023/11/11 16:13 ver 1.2(By Jun-Young Lee).
delete the User Story: Settings.
delete all components envolving comments or reporting.
modify the filters being applied in event list view.
Rev. 2023/11/19 18:20 ver 1.3(By Jun-Young Lee).
Update wireframe related to posting and filtering in list view.
Rev. 2023/12/03 21:20 ver 1.4(By Seongjun Jo).
update User Interface Requirements to the latest version.
update Functional Requirements to the latest version.
Rev. 2023/12/10 06:06 ver 1.5(By Seongjun Jo).
update Competitive Landscape.
Rev. 2023/12/10 19:18 ver 1.6(By Seongjun Jo).
update user Interface Requirements.
안유리, 윤동현, 이성민, 이준영, 조성준
“Haengsha” is a service that consolidates dispersed on-campus information about social and academic events into a single visually intuitive platform, featuring a prominent weekly calendar at the top and a comprehensive list of events under it. This user-friendly interface ensures that the SNU community can easily stay up-to-date on upcoming events, complete with personalized recommendations tailored to individual interests. Moreover, event organizers benefit from a streamlined process for effectively disseminating their events with a wide audience.
All SNU students who are interested in on-campus events.
Event organizers who would like to promote new events.
Currently, numerous SNU events, including seminars, student-organized social gatherings, and academic activities are scattered across various platforms and primarily presented in a list format. For example, most seminars and academic events find their place on departmental websites and are disseminated via email notifications, while student-hosted events are primarily promoted through KakaoTalk chat rooms and Everytime event boards. The absence of a unified platform that visually aggregates this information poses challenges for students in effectively discovering events aligned with their interests. Thus, there is a pressing need for a centralized event platform. The subsequent table provides a comparison of “Haengsha” and its rival services, highlighting their respective features.
Service Name | Platform | Coverage | Presentation | Duration | Scope | Personal Recommendation |
---|---|---|---|---|---|---|
KakaoTalk Group Chat | Mobile/Web | Department-specific | List | Indefinite | Student Council Events / Department-specific Events / Major Schoolwide Events | X |
Everytime | Mobile/Web | All registered SNU students | List | Indefinite | Student Council Events / Student-organized Events / Major Schoolwide Events | X |
Departmental Websites | Web | Department-specific | List | Indefinite | Department-specific Events / Major Schoolwide Events | X |
Mobile/Web | All SNU students | List | Indefinite | Major Schoolwide Events / Department-specific Events / All Internal Academic Seminars / Academic Events | X |
|
Student Council Calendar | Web | Club Organizers | Calendar | Only during recruitment period | Student-organized Events | X |
Haengsha | Mobile | All registered SNU students | List & Calendar | One Year | Student-organized Events / Major Schoolwide Events / Department-specific Events / All Internal Academic Seminars / Academic Events | O |
As a
individual non-member SNU student eager to check out the ongoing events,
I can
enter my basic information and preferences while creating a new account
so that
I can register and receive information of diverse events held at SNU.
Scenario
User clicks “회원가입하기” button on the main page and clicks “개인 유저 가입하기” and provide their preferences.
Given
the user has written [email protected]
in an email address form
When
the user clicks code send button
Then
the user should see a toast “The code for verifying is sent to your email” and the mail which contains the authorization code should be sent to [email protected]
.
Given
the user types correct authorization code within given validation time,
When
the user clicks a next button
Then
the user is shown with a screen asking for setting password, basic information, and terms of usage & privacy policy.
Given
the user types password, nickname, department, class(like '17학번'), multiple choices of interests, agreement to app policies,
When
the user clicks a signup button
Then
the account with given information(saved user profile) should be created and the user should be navigated to the login page.
Goal | Create a new account for non-member |
---|---|
Primary actor | SNU students |
Scope | Sign up page |
Level | Non-member |
Precondition | User has not created an account with the SNU email |
Success end | User can access the public calendar page. |
Failure end | Warned with toast |
Trigger | User clicks “회원가입하기” on the main page and clicks “개인 유저 가입하기”. |
Main success scenario | 1. Verify via SNU email 1.1. The main page shows a form for SNU email. 1.2. A user writes the SNU email address and clicks a “인증번호 발송” button. 1.2.1. The SNU id is automatically set as the user’s id. 1.3. The “인증번호 6자리” field appears on the same page. 1.4. The user gets a verification code via his/her SNU email address. 1.5. The user enters the code into the “인증번호 6자리” field. 1.6. The user clicks “다음” button. 2. Set password 2.1. The sign up page shows a form for password and password confirmation. 2.2. The user fills out the forms and clicks the “다음” button. 3. Enter information 3.1. The sign up page shows a form for nickname, department, class, and a field of interest. 3.2. The user fills out the forms and clicks the “다음” button. 4. Agree on privacy policy 4.1. The sign up page shows buttons triggering terms of service modal. 4.2. The users checks checkboxes and clicks “동의 후 회원가입” button 5. Welcome page 5.1. The sign up page shows “행샤 가입이 완료되었습니다!” 5.2. The user is navigated to the login screen when he clicks “로그인 하러 가기” button. |
Extensions (error scenarios) | 1. The email does not exist. 2. The user puts an already existing ID. 3. The user does not fill all forms in the sign up page. 4. Values in Password and Password confirmation are different. |
Variations (alternative scenarios) | - |
As a
non-member who leads a group,
I can
enter my group’s information and create a new account for my group
so that
I can register as a group user.
Scenario
user clicks the “회원가입 하기” button on the first page and clicks “단체 유저 가입하기”
Given
the user enters the information page for group leader
When
the user clicks “단체 유저 가입하기” button
Then
the user should see “How to authenticate your group” page.
Goal | Create a new account for non-member |
---|---|
Primary actor | SNU students who are the group leader |
Scope | Sign up page |
Level | User |
Precondition | User has not created an account with the SNU email |
Success end | User can login the app. |
Failure end | User cannot login the app |
Trigger | User clicks “회원가입하기” on the main page and clicks “단체 유저 가입하기”. |
Main success scenario | 1. The main page shows the way to authenticate his/her group. 2. The user sends an email including the group name, user name and documents to verify his/her group to the admin email. 3. Admin register the group user account and sends an email to the user. 4. The user can log in using the account information sent via email. |
Extensions (error scenarios) | - |
Variations (alternative scenarios) | - |
As a
registered user,
I can
authenticate myself as a member and get into the app,
so that
I can access the main page and view other features on the app.
Scenario
Given
the user has created an account of which ID is example_snu_id
, password is example_pw
and filled out the form (example_snu_id
and example_pw
respectively)
When
the user clicks sign in button
Then
the user should be logged in with the corresponding account and redirected to the home screen.
Goal | Make members sign in the app |
---|---|
Primary actor | SNU students |
Scope | Sign in page |
Level | User |
Precondition | User who has an account has not signed in yet |
Success end | The user becomes logged in and is redirected to the public calendar page. |
Failure end | Redirect to the first page |
Trigger | User enters id/pw and clicks “로그인하기” button. |
Main success scenario | 1. The main page shows a form for ID(SNU email) and password. 2. The user fills out ID and password and clicks the “로그인 하기” button. 3. The user becomes logged in and is redirected to the home screen. |
Extensions (error scenarios) | 1. There is no user matching the provided ID and password. 2. The user does not fill ID or password. |
Variations (alternative scenarios) | - |
As a
registered user,
I can
send an verification code to my SNU email and reset my password,
so that
I can sign in the app when I forget my password.
Given
the user has not logged in yet
When
the user clicks “비밀번호 찾기” link on the main page.
Then
the user should be redirected to reset password page.
Given
the user has created an account of which ID is example_snu_id
and filled out the form in the reset password page
When
the user clicks the code send button
Then
the mail that contains verification code should be sent to [email protected]
Given
the user types correct code,
When
the user clicks the next button,
Then
the user can set new password.
Goal | Change password when the user forgets his/her own password |
---|---|
Primary actor | SNU students |
Scope | Reset password page |
Level | User |
Precondition | User who has an account has not signed in yet |
Success end | The user is redirected to the first page with new password |
Failure end | The user is redirected to the first page without new password |
Trigger | User clicks “비밀번호 찾기” link on the main page |
Main success scenario | 1. The reset password page shows a form for SNU email. 2. Verify via SNU email 2.1. A user writes the SNU email address and clicks a “인증번호 발송” button. 2.2. The “인증번호 6자리” field appears on the same page. 2.3. The user gets verification code via his/her SNU email address. 2.4. The user enters the code into the “인증번호 6자리” field. 2.5. The user clicks “다음” button. 3. Reset password 3.1. The sign up page shows a form for password and password confirmation. 3.2. The user fills out the forms and clicks the “변경 완료하기” button. 4. The user is encounters "비밀번호 변경이 완료되었습니다." with "로그인 하러 가기" button. 5. The user is redirected to the login screen |
Extensions (error scenarios) | 1. There is no user matching the provided email. 2. The user does not fill email. |
Variations (alternative scenarios) | - |
- This use case is not supported in the latest version(ver 1.4).
- This use case is not supported in the latest version(ver 1.4).
As a
user,
I can
scroll event list,
so that
I can see all events held on today
Scenario
Event items should be scrolled in the list.
Given
that I am at the Home screen and there is no modal on the screen,
when
I scroll the event items in the list,
then
the events items move upward/downward as I scrolled and I should see all the events held on today.
Goal | User wants to see all events held on today |
---|---|
Primary actor | All user |
Scope | Home page |
Level | User |
Precondition | User is at the Home Screen with no modal opened |
Success end | All event items move as user intended |
Failure end | Event items don’t move / Some events are missing |
Trigger | User enters into Home page |
Main success scenario | 1. User enters into Home page 2. Home page presents event list 3. User scrolls the list 4. All event items move upward/downward |
Extensions (error scenarios) | - |
Variations (alternative scenarios) | 3. User scroll the list horizontally 3.1 The list remains same |
As a
user,
I can
touch an event item in event list,
so that
I can see the detail event information
Scenario
Detail information of event should be shown with modal
Given
that I am at the Home screen, there is no modal on the screen and there is at least one event in the event list,
when
I touch an event item,
then
a modal showing detail information of the event should be opened
Goal | User wishes to see a detail information about an event |
---|---|
Primary actor | All user |
Scope | Home page |
Level | User |
Precondition | User is at the Home Screen with no modal opened |
There is at least one event in event list | |
Success end | Modal appears and contains right information |
Failure end | Modal doesn’t appear / contains wrong information |
Trigger | User touches an event item |
Main success scenario | 1. User enters into Home page 2. Home page presents event list 3. User touches an event item 4. Modal is opened with detail information of the event |
Extensions (error scenarios) | 2. No events are scheduled. |
Variations (alternative scenarios) | 2. User encounters a guiding text. |
As a
user,
I can
touch the category tap,
so that
the subscreen changes and I can see the events categorized as festival/academic
Scenario
Event list should be changed into the selected category
Given
that I am at the Home screen and there is no modal on the screen,
when
I touch the category tap,
then
I should see the event list categorized as I intended
Goal | User wishes to see the other event category |
---|---|
Primary actor | All user |
Scope | Home page |
Level | User |
Precondition | User is at the Home Screen with no modal opened |
Success end | Event list changes into the selected category |
Failure end | Event list dont’s changes into the selected category |
Trigger | User touches the category tab |
Main success scenario | 1. User enters into Home page 2. Home page presents event list 3. User touches the category tab 4. Event list changes into the selected category |
Extensions (error scenarios) | - |
Variations (alternative scenarios) | 3. User touches the present category 3.1 The event list stays the same. |
As a
user,
I can
change the date,
so that
I can see the events held on that day
Scenario
Event list should be re-presented to show all events held on the choosen day
Given
that I am at the Home screen and there is no modal on the screen,
when
I touch the Canlendar Icon and change the date,
then
Home page should re-present with the events held on that day
Goal | User wished to see events held on a specific day |
---|---|
Primary actor | All user |
Scope | Home page |
Level | User |
Precondition | User is at the Home Screen with no modal opened |
Success end | Home page shows new day and events |
Failure end | Home page shows same/wrong day and events |
Trigger | User touches Calendar Icon |
Main success scenario | 1. User enters into Home page 2. Home page presents event list and Calendar 3. User touches Calendar Icon or date item 3.1 Datepicker modal is opened when user touched Calendar Icon 3.2 User selects a date on modal 4. Home page re-present event list and Calendar matching that day |
Extensions (error scenarios) | 3.2a. Choosen date is too past or future 3.2a.1 Home page re-presents with no error and shows nudge item |
Variations (alternative scenarios) | 3. User select today 3.1 Home page remains same |
As an
SNU student willing to participate an event that intrigues him/her,
I can
press a button for “personalized recommendation”,
so that
I can see multiple events that may possibly fit into my personal interests.
Scenario
A pop-up screen should display personalized event recommendations based on the user’s history of likes/favorites and interests. This list of events should update once per day at 3am.
Given
that I am at the Home screen and there is no pop-up screen open,
when
I press a button for “personalized recommendation”,
then
a modal with the message "오늘의 맞춤 추천이에요!" should pop up, along with a list of personalized recommendations of up to 10 events that are set to occur on or after the given day.
Goal | User is recommended with future & ongoing events that may fit his interests |
---|---|
Primary actor | Individual user |
Scope | Home page |
Level | Individual user |
Precondition | User is at the Home Screen with no pop-up screen opened |
Success end | Modal pops-up and contains personalized event recommendations |
Failure end | Pop-up screen doesn’t appear / does not contain personalized events / events shown were already held in past |
Trigger | Individual user presses a button for personalized recommendation |
Main success scenario | 1. User enters the Home page 2. Home page presents event list 3. User presses a personalized recommendation button 4. Recommendation screen is popped-up, displaying ongoing/future events that may fit the user's interests. |
Extensions (error scenarios) | - |
Variations (alternative scenarios) | 1. User is at the home screen with no pop-up screen open. User has signed up on the given day. 1.1 User presses the personalized recommendation button. 1.2 Recommendation screen pops up but does not display any events, as it is not yet 3am of the following day. 2.Event organizer is at the home screen with no pop-up screen open. 2.1 Event organizer presses the personalized recommendation button. 2.2 No personalized event recommendations are provided for the user, as he is an event organizer. A modal with the message "단체 계졍은 추천 기능을 이용할 수 없어요" is shown. |
- This use case is not supported in the latest version(ver 1.4).
- Story #3-2 and #3-3 replace this.
As a
student interested in participating academic events held next Tuesday,
I can
designate the date and select category 'academic',
so that
I can see the academic events held in that particular day.
Scenario
User selects the date to filter out events and select one or two categories from 'academic' and 'festival'.
Given
that user is at the List view page with default filter settings.
when
either choose the start and end date, categories and press the apply/cancel button.,
then
the events should be adequately displayed following the applied filters if user applies and when user cancels previous list view is maintained.
Goal | User wants to filter out events that takes place on a certain day. |
---|---|
Primary actor | All user (SNU students + Event managers) |
Scope | List view page |
Level | User |
Precondition | Signed in user in list view presses filter button. |
Success end | Filter is successfully applied and the user is redirected to list view displaying the events filtered out correctly. |
Failure end | Event items are not filtered out accordingly. |
Trigger | 1. User presses the “apply” button after choosing the criteria. 2. User presses the “cancel” button to return to previous settings. |
Main success scenario | 1. User enters into list view page and presses the filter button 2. Pop-up appears where user can select the start and end dates and one or all two categories('academic' and 'festival'). 3. User applies/cancels the filter settings. 4. User is redirected to list view page with the filters applied. |
Extensions (error scenarios) | 1. User does not select any category from available two check boxes showing 'academic' and 'festival'. 1.1 When user presses “apply”, it warns the user should select at least one category. 1.2. When user presses “cancel”. User returns to previous list view. |
Variations (alternative scenarios) | - |
As a
student interested in band-related events,
I can
search “band” in the search bar,
so that
I can see all events which contain the search word in its title or description.
Scenario
User types in search words in the search bar and relevant events are listed.
Given
that the user is at the List view page with (default or provided) filter settings.
when
the user inputs search word of interest,
then
in list view, only the events that match the user's search word in either their titles or descriptions, and also meet the previously applied filters (start and end dates, category of event), will be shown.
Goal | User wants to search events that contains the search word and satisfies the previously set filters. |
---|---|
Primary actor | All user (SNU students + Event managers) |
Scope | List view page |
Level | User |
Precondition | Signed in user in list view with certain filter settings. |
Success end | Events that contain the search word in either their titles or descriptions are shown in list view. |
Failure end | 1. Event items that do not contain the search words appear. 2. Filters are not applied. |
Trigger | User enters search word in search bar. |
Main success scenario | 1. User enters into list view page with certain filter options. 2. User writes down search words into the search bar. 3. User is redirected to a list view page that holds events that contains the search word in either their titles or descriptions. 4. Among the selected events, the event with most like appear at top. |
Extensions (error scenarios) | 1. User inputs search word that is too long(>50) or too short (<2). 1.1 User is warned with a message that user can only search for under 51 letters and over 1 letter. 2. User types invalid search keywords such as emojis and only whitespaces. 2.1. User is warned with a message that special keys and strings consisted of only whitespaces are invalid. 3. User inputs search word that is not contained in any of the events. 3.1 User is redirected to a empty list view page with a message “No such Events.” |
Variations (alternative scenarios) | - |
As a
student interested in “snu autumn festival”,
I can
click the event from list view,
so that
I can see the events in detail with uploaded information and comment sections.
Scenario
User clicks the specific event from the list view and scrolls down to see the details.
Given
that user is at the list view page.
when
the user clicks a specific event of interest,
then
the user is redirected to a detail view showing the event descriptions, likes, favorites(scraps).
Goal | User wants to view the specific event. |
---|---|
Primary actor | All user (SNU students + Event managers) |
Scope | List View, Detail View |
Level | User |
Precondition | Signed in user in list view. |
Success end | The user is redirected to a detail view showing the event descriptions, likes, favorites. |
Failure end | Event description is not displayed, likes and favorites are not updated. |
Trigger | User clicks the specific event. |
Main success scenario | 1. User enters into list view page with certain filter options or search words. 2. User clicks the event of interest and is redirected to the detail view of the event. 3. The detail page shows the title, post date, post owner, post category('academic' and 'festival'), content section, TP of events, like button. |
Extensions (error scenarios) | 1. User is in airplane mode. 1.1 Network error toast appears. 2. Content is longer than 10,000 letters. 2.1 Content is displayed only up to 10,000 letters. |
Variations (alternative scenarios) | 1. User presses like or favorite. |
As a
student interested in “snu autumn festival”,
I can
add the event to my favorites or also press the like button,
so that
I can file a list of interesting events or receive personalized recommendations based on them.
Scenario
User presses the favorite or like button.
Given
that user is at detailed view page,
when
the user presses the favorites button,
then
the user sends the event to its favorites page, and the button icon is filled with color to notify that the user has pressed the button. The number of favorites for the user is also incremented by one.
The scenario for pressing the like button on an event is similar, but instead of sending the event to the user’s favorites page, the event is stored in the internal database under the user’s interests section. Again, the number of likes for the event increases by one.
Goal | User wants to file to its favorite list of events or recommend to others by pressing the like button. |
---|---|
Primary actor | All user (SNU students + Event managers) |
Scope | Detail View |
Level | User |
Precondition | Signed in user in detail view without posting like or favorite to the certain event before. |
Success end | The number of likes and favorites are updated and are filled with color to notify that the user has already pressed the button. |
Failure end | Icon does not change, numbers do not change. |
Trigger | User clicks the like/favorites button. |
Main success scenario | 1. User clicks the like/favorites button. 2. Like/favorites button is filled with color to denote that the user has now liked/added to favorites. 3. The numbers next to the buttons are updated. 4. DB is updated so that it keeps track of user’s likes/favorites. |
Extensions (error scenarios) | - |
Variations (alternative scenarios) | - |
As a
student no longer interested in “snu autumn festival”,
I can
press the like or favorites button once more,
so that
erase the event from my favorites list or can also undo likes.
Scenario
User clicks favorite or like button previously “turned on” to erase from the favorites list or undo likes.
Given
that the user is at detail view page and it has either liked/added to favorites,
when
the user clicks the like/favorites button,
then
the user erases the event from its favorites/undo likes, and the button icon is unfilled with color to notify that the user has not liked or added to its favorites. The numbers are decremented by 1.
Goal | User wants to file to its favorite list of events or recommend to others by pressing the like button. |
---|---|
Primary actor | All user (SNU students + Event managers) |
Scope | Detail View |
Level | User |
Precondition | Signed in user in detail view with posting like or favorite to the certain event before. |
Success end | The number of likes and favorites are updated and are filled with color to notify that the user has already pressed the button. |
Failure end | Icon does not change, numbers do not change. |
Trigger | User clicks the like/favorites button. |
Main success scenario | 1. User clicks the like/favorites button. 2. Like/favorites button filled with color is now turned “off” and changes to unfilled state to denote that the user has not liked or added to the favorites. 3. The numbers next to the buttons are updated. 4. DB is updated so that it keeps track of user’s likes/favorites. |
Extensions (error scenarios) | - |
Variations (alternative scenarios) | - |
As an
event manager who wants to post the new “violin recital” event,
I can
post the event,
so that
I can notify the users that such event is scheduled in detail.
Scenario
Event manager (Group user) posts the event indicating TPO and details.
Given
that the user is at list view page,
when
the user hits the post button,
then
the user is redirected to a post view where the user can add TPO, details, and photos (if necessary).
Goal | User wants to post new event. |
---|---|
Primary actor | Event Mangers (Group Users) |
Scope | List View, Post View |
Level | User |
Precondition | Signed in group user in list view. |
Success end | The post is successfully stored into the DB. Other users can view the details of the event and can be found in list view. |
Failure end | Events are not properly posted. List views do not show the updated event. |
Trigger | Group user hits the visible “post” icon from list view. |
Main success scenario | 1. User (event manager) hits the “post” icon from list view. 2. User is redirected to a post view. 3. User fills up the essential information (event name, organization, post category('academic' and 'festival'), start/end dates, place, hours, descriptions) 4. When selecting the date, the user can press the date icon and the calendar appears where the user can select the date. 5. User can add photos if necessary by clicking the “attach photos”. The user will be able to select photos from its local “gallery”. 6. User clicks the post button and data is sent to the DB. 7. All users can find the event in list view, detail view, and home page. |
Extensions (error scenarios) | 1. User (event manager) does not fill in the designated “essential informations” and hits the post button. 1.1 User is warned that it must add the missing information to complete posting the event and does not post the event. |
Variations (alternative scenarios) | - |
As a
user,
I can
see a list of my favorite events,
so that
I can revisit them or get recommendations for similar events.
Scenario
The user presses the “favorite” button next to the event.
Given
that the user is on the detailed view for an event,
when
the user presses the “즐겨찾기” button,
then
the user will show up on the “favorites” list.
Goal | User wants to add the event to the favorites list. |
---|---|
Primary actor | All users and groups |
Scope | Detailed page for the event |
Level | User |
Precondition | User is signed in and at the detailed page for an event. |
Success end | The event marked as favorite shows up on the “favorites” page. |
Failure end | The event marked as favorite is not listed on the “favorites” page. |
Trigger | The user presses the “즐겨찾기” button in bottom app bar. |
Main success scenario | 1. The user presses the “즐겨찾기” button for the event. 2. In the database, the user’s list of favorites is updated and shows up on the favorites page. |
Extensions (error scenarios) | - |
Variations (alternative scenarios) | 2. Group user cannot mark event as favorite, so Favorite Screen shows guiding text rather than empty screen. |
- Response latency: All recommendations should happen within 3 seconds. This standard was established based on a usability study that analyzed the correlation between mobile landing page speed and bounce rate probability. (reference: https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/mobile-page-speed-new-industry-benchmarks/)
- Scalability: at any time, at most 60,000 SNU affiliates are expected to be logged into the service.