Skip to content
All work
05User management · Agile Development Process with DevOpsCompleted

SwapLah Student Co-op Marketplace

A student co-op marketplace built under an Agile and DevOps module and run through GitLab. I owned user management end to end.

  • 5

    User stories

  • 1

    GitLab Epic

  • 4

    Docs authored

  • GWT acceptance criteria

What it does

  • 🔐 Registration & login
  • 👤 Profile management
  • ⏲️ Session timeout
  • 🚧 Access restriction
  • 🔑 Werkzeug password hashing
  • 📋 GitLab Epic & user stories
  • 🔁 CI/CD documentation
  • 🧾 Test plan & definition of done

Built with

  • Python
  • Flask
  • SQLite
  • Werkzeug
  • GitLab CI/CD

The case study

Situation & Task

A student co-operative marketplace, built by a team working the Agile Development Process with DevOps module through GitLab. My slice was user management: everything between a stranger arriving and an authenticated member with a profile and a session that expires.

Actions Taken

Built registration, login and logout, profile management, session timeout and access restriction as a Flask Blueprint, using werkzeug for password hashing and raw sqlite3 rather than an ORM. The work was specified up front as a GitLab Epic broken into five user stories with Given-When-Then acceptance criteria, so "done" was defined before any of it was written. I also wrote the team's CI/CD pipeline documentation, test plan, definition of done, and security documentation.

Results Achieved

Given-When-Then criteria turned out to be the useful part: writing the acceptance conditions before the code meant the session-timeout and access-restriction cases were specified rather than discovered, and the test plan wrote itself from the stories.

What I took away

  • Given-When-Then acceptance criteria written before the code turn "done" from an opinion into a checklist.
  • Password hashing and session expiry are the parts of auth that are easy to skip and expensive to retrofit.
  • Raw sqlite3 rather than an ORM makes the SQL visible, which is a fair trade on a small schema.
  • Writing the CI/CD and security documentation forced me to understand the pipeline rather than just use it.