Pay As You Earn. Fast.

What was our deliverable?

A working prototype for a web application that allows users to withdraw earned pay, early.

End users

  • See how much pay they have currently earned this pay cycle
  • Withdraw any pay they have already earned

Employees

  • Manage companies
    • Withdrawal fee
    • Max withdrawal per pay cycle
    • Payroll contacts
  • Process early pay withdrawal request

My Involvement

  • Create stories from UML sequence diagram
    • Created a preliminary Database Relationship Model
  • Run project as project lead - under guidance

The Team

  • A part time employee with extensive knowledge
  • At the end a new employee who I trained as my replacement

The Externals

  • The principal consultant
    • Controls Azure Payments
    • Only person allowed direct access to clients Azure account
  • Other iP Edge employees

Client Requirements

  • Secure
  • Hosted in Australia
  • Mobile responsive
  • SMS verification and withdrawal notices

Principal consultant Requirements

React ASPNet Core CosmosDB Azure

Use as many prebuilt libraries as possible!

Stakeholder Engagement

  • Principal consultant communicated with clients initially
  • Fortnightly demos of the product with clients
    • Became weekly demos

Stakeholder Communication Challenges

  • Clients and I would not always agree on what was decided
    • Follow up emails outlining what we discussed
  • Clients would sometimes request new features, resulting in feature creep
    • Don't make any agreements
    • Discuss with principal consultant if feature was allowed
    • Report back to the clients

Development

  • Semi-Agile work flow
    • All stories sorted by priority
    • Try estimate sprint goals
  • I would do most of the coding
  • Consult with the other team mate at beginning of week
    • Code Review
    • Assistance in hard to solve issues
    • Given tasks to work on

Research

A week spent researching libraries

  • React JSON Schema Form
  • Telerik UI
  • Azure AD B2C
  • Reported results to principal consultant

Back End/API Development

  • Developed First
  • API tested with Postman
    Postman Logo
  • Used to authorize database access
  • Database Development
  • Access Security

Database Development

  • Went with NoSQL, seemed a better fit for CosmosDB
  • SQL probably a better fit due to transactional nature
  • Database based off initial Database Relationship Model
  • First time using NoSQL

Access Security

  • Created Azure Apps for each part
    • Database
    • API
    • End User interface
    • Employee interface
  • Took awhile to understand app interactions

User Management

  • Azure AD for employee access
  • Azure AD B2C for end user access
  • Having multiple AD types was a pain point in API

Multiple AD Issues

  • All documentation showed single AD examples
  • Not many examples of multiple AD access to backend

Multiple AD Outcome

  • Found a blog post similar to what I needed to do
  • Used the knowledge with the documentation
  • Solved the issue

Front End

  • Mostly Plug and Play
  • Most feedback from clients

Documentation

  • Readable code over comments
  • Documents for:
    • Project setup
    • Coding Standards
    • Commit Standards

Code Management

  • Used Git
  • Used Git flow style commits
    • A main release branch
    • A development branch
    • All work done on feature branches

Was it a success?

  • Was the project feature complete? Yes
  • Was the project delivered on time? A fortnight late due to changes

Thank you for your time!