---
# System prepended metadata

title: "\U0001F4D6 INSTRUCTIONS (please don’t edit here)"

---

# 📖 INSTRUCTIONS (please don’t edit here)
Consider the core requirements of a messaging app (e.g. discord, instagram)

* a) Register, login and log out
* b) See a list of channels
* c) Create a channel, join a channel, invite someone else to a channel, and leave a channel
* d) Within a channel, view all messages, view the members of the channel, and the details of the channel
* e) Within a channel, send a message now, or send a message at a specified time in the future
* f) Within a channel, edit, share between channels, remove, pin, unpin, react, or un-react to a message
* g) View anyone's user profile, and modify one's profile (name, email, handle, and profile photo)
* h) Search for messages based on a search string
* i) Modify a user's admin permissions: (MEMBER, OWNER)
* j) Send a message directly to a user (or group of users) via direct messaging (DM).

**🟢 In groups, this is your task:**

1. Pick 1-2 of the above lines (e.g line a, f)
Write a few user stories (role, goal, benefit) that encompasses all of the requirements for that line (should be around 3 user stories per line)
2. Write acceptance criteria for each user story. (rule based or scenario)
3. For example, if the requirement given to me by a client was “make them be able to add their friends”. Then we can convert that as:

> User Story 1: **As a** user, **I want to be able to** add friends to my profile, **so that I can** more easily stay in touch with them.
> **Acceptance criteria:**
> * There should be a button called “send friend request”
> * When the cursor hovers over the button it changes colour to green
> * When the cursor hovers over the button, the cursor changes to a pointer hand icon
> * After the button is clicked, it should now say “friend request sent”
> * After the button is clicked, the button should become greyed out and unclickable
> * If they’ve accepted my friend request then the button should say “friends ✓”
***
# 📝 EDIT DOWN HERE
***

## AERO
Line: c)
Create a channel, join a channel, invite someone else to a channel, and leave a channel
User Story 1: As a UNSW student, I want to be able to create a private channel so that I can communicate with my group members for a course that I am taking this term.
**Acceptance Criteria:**
1. Click on the create channel button
2. A field to type the name of the channel
3. I should be able to choose if I want to make the channel public / private
4. I should be able to select the members

User Story 2: As a UNSW Staff Member, I want to be able to create a public channel so that I can make annoucements regarding a course I am teaching.
**Acceptance Criteria:**
- The user can create a public channel
- While creating the channel, the user should be able to input a name
- Given that a public channel is created, the user should be able to add a series of others users as a part of its creation
- The channel should be visible to all members as it is a public channel

Use Case: Create a channel

Goal in context: a user can create a public channel
Scope: UNSW Treats
Level: Primary Task
Preconditions: user should be authenticate and authorised
Success End Condition: user should be able to invite non-members to the channel
Failed End Condition: channel does not exist, user is not a member of the channel, user cannot invite non-members to the channel
Primary Actor: user
Trigger: create channel button in a Team

Success Scenario 1






***

## BOOST
Line:
User Story 1:
Acceptance Criteria:
***

## CRUNCHIE
Line:
User Story 1:
Acceptance Criteria:
***

## DREAM
Line:
User Story 1:
Acceptance Criteria:
***

## EGGS
Line:
User Story 1:
Acceptance Criteria:
***
