Skip to content

Functional Requirements

Time: ~7 minutes | Difficulty: Beginner

What You'll Learn

  • How to write user stories
  • Creating acceptance criteria

User Stories

The Format

As a [type of user]
I want to [do something]
So that [benefit/reason]

This format ensures you think about who, what, and why.

Core User Stories

Authentication Stories

Story: Register
As a new user
I want to create an account with email and password
So that I can access my private data

Story: Login
As a registered user
I want to log in with my email and password
So that I can access my data

Story: Logout
As a logged-in user
I want to log out
So that no one else can access my data on this device

Feature Stories (Notes Example)

Story: Create Note
As a logged-in user
I want to create a new note with title and content
So that I can save my thoughts

Story: View Notes
As a logged-in user
I want to see all my notes in a list
So that I can find what I've written

Story: Edit Note
As a logged-in user
I want to edit an existing note
So that I can update or fix mistakes

Story: Delete Note
As a logged-in user
I want to delete a note
So that I can remove things I no longer need

Acceptance Criteria

Each story needs acceptance criteria — specific, testable conditions.

Format

Given [context]
When [action]
Then [expected result]

Example: Register Story

#GivenWhenThen
1I'm on registration pageI enter valid email + password (6+ chars)Account created, logged in
2I'm on registration pageI enter invalid email formatSee error message
3I'm on registration pageI enter password < 6 charsSee "password too short" error
4I'm on registration pageI enter already-registered emailSee "account exists" error

Example: Create Note Story

#GivenWhenThen
1I'm logged inI click "New Note"I see form with title and content fields
2I'm on new note formI fill out and click SaveNote saved, appears in my list
3I'm on new note formI try to save without titleSee validation error

Your Stories Checklist

Authentication (Required)

  • [ ] Register with email/password
  • [ ] Login with email/password
  • [ ] Logout
  • [ ] Protected pages require login

Your Feature (CRUD)

  • [ ] Create — Add new item
  • [ ] Read — View list of items
  • [ ] Update — Edit existing item
  • [ ] Delete — Remove item

Continue: Technical Requirements →

Built for learning | Open source on GitHub