Overview
Technical skills
Timeline
Roles

Overview

Full-stack backend engineer (middle level) focused on building REST APIs and e-commerce functionality with practical end-to-end implementations. The strongest proven skill is implementing Node.js/Express APIs with input validation and centralized error handling as shown in PlantoBackEndNodeJS/controllers/cart.controller.js and product.controller.js. There is limited evidence of automated tests, advanced observability, transactional DB safety for concurrent stock updates and CI/CD or operational hardening in public code.

Technical skills

Node JS• Middle
JavaScript
Java
Kotlin
C
SQL• Junior
C#• Middle
TypeScript• Middle
C++• Junior
Node JS
Express
Mongoose
Bcrypt
Dotenv
Kotlin
Kotlin Coroutines
C#
.NET
ASP.NET Core
Entity Framework Core
Databases
SQLite
Frontend
Angular
Bootstrap
Tailwind CSS
PostCSS
Angular Material
RxJS
autoprefixer
DevOps
Azure DevOps
CI/CD
Git
Azure
Rest API
QA
Swagger
Mobile
Room
Firebase
Analytics
Power BI

Timeline

Software Engineer, Microsoft Dynamics 365 CRM & ASP.NET Middle
TechLabs London Full-Time
Jul 2025 to Present 1 Year 1 Month London In office
Contributed to the development of iProperty Cloud, a flagship enterprise CRM product, by implementing new features and improving existing functionality. Built integrations between Microsoft Dynamics 365 CRM and mobile apps using Firebase Cloud Messaging for real-time push notifications. Developed custom Dynamics 365 plugins, workflow activities, and server-side components, and created Dataverse model-driven and canvas app experiences. Implemented Azure Functions to exchange data with third-party systems via REST APIs and supported CRM data with Dataverse and SQL Server, following testing and SOLID practices.
ASP.NET Core
C#
Entity Framework Core
Rest API
SQL
Azure
Firebase
Outsourced Dynamics 365 CRM Developer Middle
VIVID Homes UK Full-Time
In office
Worked with a UK-based housing team to deliver Dynamics 365 CRM production releases and continuous feature improvements. Collaborated with product owners, business analysts, QA engineers, and developers in Agile Scrum ceremonies to support on-time delivery. Participated in sprint planning, backlog refinement, stand-ups, and sprint reviews while addressing production needs.
Middle Backend Developer Confidence: High API Engineer
Full-stack backend engineer (middle level) focused on building REST APIs and e-commerce functionality with practical end-to-end implementations. The strongest proven skill is implementing Node.js/Express APIs with input validation and centralized error handling as shown in PlantoBackEndNodeJS/controllers/cart.controller.js and product.controller.js. There is limited evidence of automated tests, advanced observability, transactional DB safety for concurrent stock updates and CI/CD or operational hardening in public code.
API Design
4/10
How well APIs are designed
Reasonable REST API design with consistent error wrapper and input validation, but no API versioning, limited idempotency guarantees and some endpoints expose implementation details via console logs.
Evidence
PlantoBackEndNodeJS/controllers/cart.controller.js: uses AppError.createError and request-field whitelisting
PlantoBackEndNodeJS/controllers/product.controller.js: pagination (limit/skip), filter/query param handling and validation
PlantoBackEndNodeJS/middlewares/updateProductMiddleware.js: express-validator rules for product updates
Data Layer & Database
4/10
Working with databases
Solid use of Mongoose with aggregations, population and pagination; also EF Core migrations and repository/unit-of-work patterns in the .NET project, but no explicit DB transactions or concurrency controls for critical updates (e.g. stock adjustments).
Evidence
PlantoBackEndNodeJS/controllers/product.controller.js: aggregation pipeline for categories and tags, countDocuments and populate usage
PlantoBackEndNodeJS/controllers/cart.controller.js: Cart.findOne, population and save patterns for cart operations
ASP.Net_CORE_Project/ASP.NetProject.DAL/Migrations/*: multiple EF Core migration files (initialMigration, UpdateUserBugId, UpdateAttachmentURL)
Scalability & Performance
2/10
Handling load and speed
Basic pagination and client-side debouncing exist, but no caching strategy, queueing, measured performance work or connection/throughput safeguards are present.
Evidence
Planto/src/app/Pages/shop/shop.component.ts: uses pagination and client-side debounce via setTimeout
PlantoBackEndNodeJS/controllers/product.controller.js: uses limit/skip for paging
System Architecture
4/10
Overall system structure
Clear separation of controllers, middlewares and utils in Node.js and repository/unit-of-work layering in .NET showing deliberate modular structure; overall architecture remains monolithic without explicit service decomposition or config/secret rotation automation shown.
Evidence
PlantoBackEndNodeJS/controllers/*.js and PlantoBackEndNodeJS/middlewares/*.js: controller and middleware separation
ASP.Net_CORE_Project/ASP.NetProject.DAL/Repositorys and UnitOfWork.cs: repository and unit-of-work patterns
Security & Auth
4/10
Protecting data and access
Authentication and authorization use bcrypt and JWT with token blacklisting and request validation; good input whitelisting but limited token lifecycle controls (refresh/revoke patterns), and some client-side exposure of keys and console logging reduce security hardness.
Evidence
PlantoBackEndNodeJS/controllers/users.controller.js: register/login with bcrypt, generateJWT and BlackListTokens for logout
PlantoBackEndNodeJS/controllers/cart.controller.js and userFavorite.controller.js: getUserIdFromToken JWT decoding checks and unauthorized handling
PlantoBackEndNodeJS/middlewares/updateProductMiddleware.js: request field validation
Reliability & Observability
3/10
Stability and monitoring
Centralized error creation and an async error wrapper exist which improves reliability, but observability is minimal (console logs instead of structured logs), there are no timeouts/retries/backoff or graceful shutdown patterns evident.
Evidence
PlantoBackEndNodeJS/utils/appErrors.js: centralized error creation (referenced across controllers)
PlantoBackEndNodeJS/controllers/*.js: frequent console.log usage and reliance on AppError and async wrapper rather than structured logging or metrics
Expertise
Node.js• Middle
.NET• Middle
Industries
Commerce• Middle
Software• Middle
Technologies
Node JS• Middle
Rest API
.NET
Express
Bcrypt
Mongoose
Dotenv
Recommendations
  • Develop and harden RESTful e-commerce services: inventory, cart and checkout APIs with atomic stock updates and DB transactions to avoid race conditions.
  • Implement observability and reliability improvements: structured logging, metrics, request timeouts and retries with backoff for external calls (Stripe, Cloudinary).
  • Add automated tests and CI pipelines for critical flows (auth, payments, stock reconciliation) and introduce API versioning and documented error contracts.
  • Harden auth and token lifecycle: implement refresh/expiry handling, rotate secrets, avoid leaking keys in clients and reduce console logging in production.
Repositories
The developer's experience in this domain has been verified based on AI analysis of the following repositories:
Middle QA Engineer Confidence: Medium Generalist
Full-stack web developer (Middle) focused on building front-end Angular interfaces and Express/ASP.NET backend APIs with pragmatic error handling. The strongest proven skill is backend API defensive coding and input validation as shown in PlantoBackEndNodeJS/controllers/product.controller.js and cart.controller.js which include explicit status codes and AppError usage. There is little to no public evidence of automated tests, CI integration, contract testing, or performance/load testing in the human-authored codebase.
Test Automation Frameworks
1/10
Building automated tests
Minimal test framework artifacts declared (Karma/Jasmine) but no real test suites or custom fixtures; evidence of test tooling only in project scaffolding.
Evidence
Planto/package.json: devDependencies include karma, jasmine, karma-jasmine
Planto/README.md: mentions running unit tests with Karma
Test Coverage & Strategy
1/10
What and how to test
No measurable test-coverage strategy or focused negative-path/property tests; only a test script exists and UI code contains validators but no automated test suites were provided.
Evidence
Planto/package.json: scripts.test exists
Planto/src/app/Pages/profile/profile.component.ts: form validators and client-side validation logic
API & Integration Testing
1/10
Testing how parts work together
API code shows pragmatic error handling and explicit status codes but there is no contract testing or schema-validation test harness; API behavior is handled in controllers rather than through test contracts.
Evidence
PlantoBackEndNodeJS/controllers/product.controller.js: explicit 400/404 error handling and input validation before DB operations
PlantoBackEndNodeJS/controllers/cart.controller.js: quantity/stock checks and AppError usage returning specific status codes
Performance & Load Testing
Testing speed under load
Not evidenced in public code
Bug Reporting & Analysis
Finding and describing bugs
Not evidenced in public code
CI Test Integration
Running tests automatically
Not evidenced in public code
Expertise
Unit & Component Testing• Junior
Industries
Commerce• Middle
Software• Middle
Technologies
JavaScript
Java
TypeScript• Middle
SQL• Junior
C#• Middle
Swagger
Azure DevOps
Azure
CI/CD
Git
ASP.NET Core
Entity Framework Core
Recommendations
  • Develop automated unit and integration tests (Jasmine/Karma or Jest) for critical API flows including cart and checkout error paths to raise confidence in releases.
  • Add contract/schema tests for APIs (e.g. schemathesis or a JSON schema validator) and guard rails for response shapes used by the Angular frontend.
  • Introduce CI pipelines that run unit tests and linting and capture artifacts (logs/screenshots) to enable repeatable quality gating.
  • Implement focused negative-path and boundary tests for stock/quantity and payment flows (explicit 400/401/403/404 expectations) rather than relying on manual checks.
Repositories
The developer's experience in this domain has been verified based on AI analysis of the following repositories:
Junior Frontend Developer Confidence: Medium Fullstack
Fullstack Angular and Node.js developer (senior-level) specializing in end-to-end e-commerce features. The strongest proven skill is backend API and validation design as demonstrated by the cart and product controllers implementing structured validation, AppError-based error handling, JWT decoding and stock-update logic. There is limited evidence of automated test coverage, measured performance tuning, advanced client-side race handling or systematic accessibility tooling.
UI Component Architecture
4/10
How interface parts are built
Component boundaries are conventional with reusable components and services, but there is direct DOM manipulation and limited evidence of a bespoke component system or advanced composition patterns.
Responsive & Cross-browser
4/10
Works on all screens and browsers
Responsive layouts are handled with Tailwind/DaisyUI and Bootstrap patterns and the templates include breakpoints and mobile navigation, but there is no advanced cross-browser feature detection or RTL/i18n scaffolding.
Performance Optimization
3/10
Speed of the interface
Basic server-side pagination and client-side debounced filtering exist, but there is little evidence of measured performance work, bundle analysis, virtualization, or advanced client-side optimizations.
Accessibility & Semantics
3/10
Usable for everyone
Some accessibility-minded attributes are present (tabindex/roles, aria labels in boilerplate), and templates show keyboard-focusable elements, but custom widget a11y, focus management, and CI a11y tooling are not evidenced.
State Management & Data Flow
4/10
Managing data in the app
Clear separation of server and client responsibilities with services, API controllers, validation and error wrapper patterns; server-side validation, JWT handling and explicit error handling are present though advanced client-side state patterns (request cancellation, optimistic updates) are missing.
UX & Visual Polish
4/10
Look and feel quality
Thoughtful UX touches like form validation messages, loading overlay and NotFound handling improve perceived quality, but there is limited evidence of measured UX/perceived-performance experiments or undo/rollback UX patterns.
Expertise
Angular• Junior
Frontend Architecture & Build Tools• Junior
Industries
Commerce• Middle
Technologies
Tailwind CSS
RxJS
Angular
Bootstrap
PostCSS
autoprefixer
Angular Material
Recommendations
  • Develop and extend e-commerce APIs and checkout/inventory flows, including Stripe integration and inventory reconciliation.
  • Own Angular feature pages and form-heavy UI work that require Reactive Forms and file-upload flows.
  • Harden backend validation and security flows and add automated tests around controllers and middleware.
  • Drive build-tooling and frontend CI improvements (bundle analysis, automated a11y checks, request cancellation patterns).
Repositories
The developer's experience in this domain has been verified based on AI analysis of the following repositories: