Team Members
@mimlowe - Michael Lowe, User Profiles & Authentication
@iivaishnavii - Vaishnavi Ramesh, Add Cards
@KavyaChennoju97 - Kavya Chennoju, Manage Orders
@psnehas - Sneha Sneha, Make Payments
.post(/user)
Creates a new user
.get(/user/:email)
Finds an existing user profile by email
.delete(/user)
Deletes an existing user profile
.post(/user/authenticate)
Sets authenticated flag true
on user profile if email and pin match
.post(/user/logout)
Sets authenticated flag false
in user profile
.post(/addCard)
Allows for card creation and adding cards to user profiles
.post(/orders)
Allows for the creation of orders
.get(/orders)
Displays a list of user's active orders
.post(/makePayment)
Contains logic for making payments. Completes user's orders, checks and adjusts card balance.
Full documentation is available through Postman Documenter
1. Communication:
All of us worked jointly in developing the APIs. All decisions were made unanimously - right from creating schema for the project to deploying the project. This resulted in rapid feature development and deployment.
We had status calls for 10 minutes, the entire week, to sync up on our status.
We used Github scrum boards to create issues and this helped us in tracking open issues and helped us to complete the project successfully.
2. Simplicity:
The code implemented is simple, easy to understand and well-documented. In the future, if we plan to modify certain functionalities, the task would be simple, as the components are modular and well documented.
3. Feedback:
During the one week of development, each team member developed their API and got feedback from other members of the team. Everyone not only tested their API but also tested the APIs of other team members and tested all corner cases. The outcome of this effort was the creation of a set of robust APIs.
4. Respect:
Each team member completed the task assigned to them , on time and contributed towards the common goal.
5. Courage:
During the feedback phase, each team member was open to criticism and handled the feedback in a positive manner.
One activity of deploying services to AWS in an Auto Scaled EC2 Cluster with Load Balancer and deploying to AWS as Docker Containers in Amazon Containers is a perfect example of our team following the XP values. No one had prior experience in deploying services to scalable servers/dockers. Hence , we decided to tackle the problem together. We read articles and figured out a way to deploy the services successfully.This activity marks all the checkboxes of XP core values - communication, feedback, respect, courage and simplicity.
Available through GitHub Projects
-
Michael Lowe :
This week I worked on the User Profiles & Authentication API. There was a total of six routes that needed to be implemented (create user, get user, delete user, authenticate, logout, change pin). I did not run into any technical blockers with the API implementation, but there was some delay toward the beginning of the week due to other deadlines. After the User Profile & Authentication was complete, I began researching information regarding docker containers and was able to successfully write and build from a Dockerfile for Node 7.10.1. Finally, I compiled information for the README and formatted with Markdown.
-
Kavya Chennoju :
This week I worked on the Manage Order API. I implemented 2 routes a)Post Order b)Get Order.Also,I made sure that corner cases like user doesn't exist and card doesnt exist are effectively handled.After the whole team completed the implementation of the api's assigned to them I deployed our api server on Auto Scaled EC2 Cluster with Load Balancer as well as Docker Containers in Amazon Containers(ECS). Finally, I designed the deployment diagrams for both the deployments.
-
Sneha Sneha :
This week I worked on the Payment API. This API required "makePayment" route to complete payments of the orders made per card. I covered all the possible cases for payments like the user validation, card validation, balance verification and status update per order. The task of this api was to check for balance in the card and then make payments/deductions in case the balance is available, otherwise it discards the transaction. On successful payment, the status of the order is updated to "completed". Finally, I tested the API with using mocha and chai and also contributed in the designing of deployment/architecture diagrams.
-
Vaishnavi Ramesh :
*This week I worked on add card API. This API requires cardid,cardcode and email.The cardid and cardcode are validated before adding the card. The API also checks if the card already exists in the user profile. I also wrote test cases for APIs to cover all corner cases *
Available through Google Sheets