-
Notifications
You must be signed in to change notification settings - Fork 2
Requirements & Specification
SNEK is a language exchange platform that aims to connect users seeking for quality language exchange experiences, and also provide such quality language exchange sessions with personalized roadmaps for each user. With SNEK, users can find suitable language exchange partners according to their language proficiency, interests, hobbies, etc. Once the user finds a partner, and a match has been made, they can start the language exchange session immediately on the app through chatting. However, it has been consistently pointed out that lack of engaging conversation topics & personalized learning materials greatly hinder quality language exchange. And for this reason, SNEK provides personalized language exchange roadmap for each user and session using ML. The recommendations are based on the users' information, behaviors while using the app, and context of the chats. Based on these information, SNEK generates and offers conversation topics, small missions, suggestions & tips, aimed to help the users engage more actively in the session, in real-time while the users are chatting. After the sessions are over, the users' feedbacks are reflected on the service.
SNEK targets University students who wants to participate in quality language exchange sessions. To ensure identity and to promote off-line sessions, SNEK primarily targets students of SNU, but the target population can be expanded once there is need.
- Korean SNU students who wants to participate in language exchange sessions
- Foreign(or exchange) students in SNU who wants to participate in language exchange sessions
Compared to existing language exchange apps(Speaky, Tandem, HelloTalk), SNEK's biggest strength lies in the fact that it offers activity suggestions in real-time as the users are chatting. While many of the existing apps use chatting as their primary mode of hosting exchange sessions as well, they do not offer additional services that promotes user engagement during the chats. Their services end in merely translating the sentences, or performing simple grammar checks. SNEK on the other hand, suggests topics to discuss, activities to do, etc. Additionally, SNEK users can only interact with other SNEK users of the same university. This is to ensure the users' identity, thus relieving users from the anxiety of meeting a complete stranger. Since users are limited to those from the same uni, we can also encourage off-line meet-ups as well, a feature that other apps cannot offer.
- Use Case Name: Sign-up/Sign-in Use Case
- Goal
- Allow users to create their user profiles by entering their membership information.
- Enable users who have already completed the sign-up process to log in by entering their membership information.
- Actor: This use case is applicable to both Korean students and exchange students.
- Pre-conditions
- Sign-up: Only accepts Seoul National University email accounts.
- Sign-in: A user account that has successfully completed the sign-up process.
- Main Scenario
- Sign-up: Users input all required information in the app and click on the sign-up button.
- Sign-in: Users attempt to log in by entering their email and password.
- Extensions
- Implement an auto-login feature to reduce the hassle of logging in every time.
- If an attempt is made to sign up with an already existing identifier (email), reject the registration and guide the user to the login screen.
- Goal
- Use Case Name: FetchUserProfiles Use Case
- Goal
- Retrieve a list of users that the current user can choose for language exchange on the main tab.
- Provide a list based on user activity history, created profiles, preferences, etc., to ensure a relevant selection.
- Tailor the list based on the user's set profile information, offering variations in recommended users, array order, etc.
- Actor: For Korean students, the list includes foreign users; for foreign users, the list includes Korean users who match language preferences.
- Pre-conditions: Users have completed the sign-up process.
- Main Scenario: Upon entering the main tab, this use case is automatically triggered, and the list is loaded accordingly. Additionally, if the user performs a refresh action, the use case is invoked again.
- Goal
- Use Case Name: StartChat/EndChat Use Case
- Goal
- Allow a user to send chat requests to other users.
- Enable users to accept or reject chat requests from others.
- Allow users to leave an ongoing chat at their discretion, and in closed chat rooms, further communication is disabled.
- Actor: Korean students and foreign exchange students who match language preferences can engage in chat interactions.
- Pre-conditions: Users have completed the sign-up process, including Korean students and foreign exchange students.
- Main Scenario: If a user is interested based on another user's profile, they can send a chat request. If the recipient accepts, a chat room opens, and they can start chatting. The user can also leave the chat room if desired.
- Extensions
- Provide information on the user's profile or include greetings in the screen where chat requests are accepted/rejected, allowing users to make informed decisions.
- Goal
- Use Case Name: Chatting Use Case
- Goal
- Allow users to engage in real-time chat with each other under smooth network conditions.
- Actor: Chat interactions take place among users in an opened chat room.
- Pre-conditions: No specific pre-conditions required.
- Main Scenario: Users can enter a chat room, review previous messages, and engage in real-time chat with the other participant.
- Extensions
- Introduce a proxy to detect network degradation, allowing users to be informed if the chat may be impacted. Users can then choose to cancel or resend messages if necessary to ensure a smooth chat experience.
- Goal
- Use Case Name: GetRoadMapAdvice Use Case
- Goal
- Core functionality of the app: During a chat, continuously recommend conversation topics or propose missions to facilitate smooth and engaging discussions. Users receive data that guides and prompts actions, all based on a proprietary roadmap evaluation system.
- In this use case, the system returns values based on the personal information of the user and their conversation partner, along with information gathered during the conversation. To enhance accuracy, the system periodically checks factors like intimacy and the flow of conversation between users.
- Actor: Participants in the chat room.
- Pre-conditions: No specific pre-conditions required.
- Main Scenario: If users feel the conversation topic is dwindling during language exchange in the chat room, they can utilize the roadmap feature. Activating the roadmap provides tailored recommendations for suitable topics or activities based on the flow of the ongoing conversation.
- Extensions:
- When the roadmap feature is initiated, instead of merely displaying the recommendations, users can directly share these suggestions in the chat room for immediate sharing and discussion with their conversation partner.
- Goal
- Sign-up and Login: As a user, I want to sign up and create a profile. Initially, I'd like to input my profile information and be able to modify specific details later. This is crucial for engaging in language exchange communication with other students!
- User Acceptance Criteria
- I should be able to input my personal information appropriately, and if any information is missing, I should not be able to proceed to the next screen.
- Upon pressing the sign-up button and verifying my school email, an email containing a token should be sent. Authentication should not proceed if the email is not from the school domain.
- After entering all necessary basic personal information for sign-up and pressing the next button, I should be directed to a chatbot-style screen for profile input.
- On the chatbot-style profile input screen, I should be able to input my profile by selecting tags in a chatbot-style manner. If I enter text in the chat input field other than selecting tags, the text should not be displayed on the screen.
- Once profile input is complete, my user data should be created in the database, and I should be directed to the main tab. Automatic login should occur at this point.
- If I mistakenly input my profile, I should be able to navigate to a screen at the bottom of the main tab where I can view my profile, press the profile edit button, and make corrections. The corresponding user profile in the database should also be updated.
- On the login screen, entering the correct account information should result in successful login.
- User Acceptance Criteria
- Check Other User's Profile: As a user, I want to view the profiles of other users to choose a language exchange partner!
- User Acceptance Criteria
- Upon entering the main screen, profiles of other users suitable for language exchange (those who wish to exchange languages in corresponding languages) should be loaded.
- The screen should display profiles of other users in a tag format appropriately.
- Based on user profiles, calculate similarity and display the user list in order of highest similarity.
- Tapping on another user's profile in the list should transition to a detailed profile view where the entire profile can be viewed.
- User Acceptance Criteria
- Chat Request and Deletion: As a user, I want to send a chat acceptance request to the desired partner or exit unwanted chat rooms in order to find a language exchange partner that suits me well.
- User Acceptance Criteria
- The user should be able to send a chat request to the desired user from the user list, and it should not be possible to send duplicate requests to users with whom the user has already sent a request or is currently chatting.
- When the other person accepts the chat and sends the first message, if I am running the app, a toast should appear in my app notifying me that the other person has accepted, and I should be able to enter the chat room immediately.
- If the user presses the "Leave Chat Room" button in the chat room list, the corresponding chat room should disappear from the user's screen. After leaving the chat room, the user should not be able to chat in that specific chat room.
- User Acceptance Criteria
- Language Exchange (Chat): As a user, I want to chat with the accepted partner to initiate language exchange actively through chatting.
- User Acceptance Criteria
- Users should be able to freely enter and exit the created chat room.
- Upon entering the chat room and in a stable network environment, users should be able to send and receive chat messages in real-time.
- When chatting in the chat room, if there are issues such as an unstable network or other problems preventing proper message transmission, the proxy should handle and resolve them appropriately (allowing users to cancel the message if it is not successfully transmitted within a certain time).
- When re-entering the chat room, the previous chat history should be loaded and displayed.
- User Acceptance Criteria
- Conversation Topic Recommendations: As a user, I want to receive recommendations for conversation topics when engaging in language exchange with other users, aiming to enhance the effectiveness of language exchange.
- User Acceptance Criteria
- When the user presses the conversation topic recommendation button, a list of recommended conversation topics should be appropriately displayed on the screen.
- Among the recommended conversation topics, the user should be able to select and send one directly to the chat room in the format of 'Recommended by Sneki~' if they find it appealing.
- The activation score should change appropriately based on the analysis of the conversation, and this should be intuitively displayed in the roadmap screen.
- Users should be able to receive conversation topic recommendations at different levels based on the activation level, ranging from light topics to more profound ones.
- User Acceptance Criteria


