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
Stakeholder Engagement
- Principal consultant communicated with clients initially
- Fortnightly demos of the product with clients
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
- 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