Full-stack MERN e-commerce platform focused on reliability and automated testing.
Developed as part of a Software Quality Engineering course using Agile sprints and continuous integration workflows.
Virtual Vault is a full-stack e-commerce web application built with the MERN stack (MongoDB, Express, React, Node.js).
The project’s main objective was to implement a scalable system and ensure end-to-end reliability through unit, integration, UI, and performance testing.
The team followed Agile methodology, completing three sprints with defined backlogs, milestone reviews, and issue tracking on GitHub Projects.
Frontend: React, Context API, React Router
Backend: Node.js, Express.js, MongoDB
Testing: Jest (unit/integration), Playwright (UI), JMeter (performance), SonarQube (coverage)
CI/CD & Workflow: GitHub Actions, npm scripts, Agile sprint tracking via GitHub Projects
- User authentication and authorization (JWT)
- Product management (CRUD operations)
- Shopping cart and checkout with Braintree payment gateway
- Responsive UI with dynamic routing
- Robust automated testing pipeline for quality assurance
- Performance evaluation under increasing concurrency levels
Frontend: React, Context API
Backend: Node.js, Express, MongoDB
Testing: Jest (unit/integration), Playwright (UI), JMeter (performance), SonarQube (coverage)
Workflow: GitHub Actions, npm scripts
I implemented unit tests using Jest:
- Auth & Access Control:
context/auth.js,helpers/authHelper.js,middlewares/authMiddleware.js - Product Management:
controllers/productController.js(create, delete, update) - Payment Integration (Braintree):
braintreeTokenController,brainTreePaymentController - Database Configuration:
config/db.js - Cart & Pages:
context/cart.js,pages/CartPage.js,pages/Contact.js,pages/Policy.js
Testing validated data flow, database connections, and controller logic under multiple conditions.
I developed integration tests with Jest and UI tests with Playwright to verify that frontend and backend modules worked cohesively:
- UI Tests:
Products.js,About.js,Search.js - Integration Tests:
Contact.js,Policy.js,db.js,productController.js
These tests confirmed routing integrity, API response accuracy, and consistent frontend behavior.
I performed capacity testing to analyze backend scalability and concurrency limits.
- Single Endpoint:
/api/v1/product/product-list/1 - Multiple Endpoints:
/product-list,/get-category,/product-count
Results Summary:
- Stable performance up to ~40 threads; latency rose significantly beyond that.
- Throughput peaked near 100 threads, marking the system’s concurrency ceiling.
- 90th percentile latency exceeded 1800 ms past 100 threads, signaling noticeable user delays.
- Multi-endpoint testing showed ~3–4× higher latency due to database contention.
- Followed three Agile sprints with backlog refinement and sprint reviews.
- Used GitHub Projects for task tracking and issue management.
- Held team standups to coordinate development, testing, and code reviews.
- Integrated CI checks to ensure tests passed before each merge.
# Clone the repository
git clone https://github.com/joannaj00/virtual-vault.git
cd virtual-vault
# Install dependencies
npm install
# Run frontend & backend concurrently
npm run dev
# Run Jest unit and integration tests
npm test
# Run Playwright UI tests
npx playwright test
# Run JMeter performance tests
# The JMeter test plan (CapacityTest.jmx) used for this project is not uploaded due to local file dependencies.