MEAN Stack Developer — Backend

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Any

SALARY

TBA base on experience

HOURS PER WEEK

40

DATE UPDATED

Oct 12, 2026

JOB OVERVIEW

About the Role
We are looking for a MEAN Stack Developer with a backend focus to build and maintain REST APIs for a B2B platform. You will work on a Node.js + Express + TypeScript backend and collaborate with an Angular frontend team via OpenAPI contracts.

Project Summary
We are building a platform that helps organizations manage their business profile, products, and go-to-market information in one place. The backend is production-ready, modular, and follows established conventions for validation, security, and testing.

Tech Stack
Backend: Node.js, Express, TypeScript, MySQL, Prisma, Zod, Redis, Jest
Frontend (separate repo): Angular

Note: This role uses Node.js and Express (not MongoDB). Relational database experience is required.

Responsibilities
Develop and maintain REST API endpoints
Work with Prisma, MySQL, and database migrations
Implement authentication, authorization, and input validation
Write unit and integration tests
Keep API documentation up to date

Requirements
3+ years experience with Node.js and Express
Strong TypeScript and REST API skills
Experience with relational databases and an ORM (Prisma preferred)
Knowledge of JWT-based auth and role-based access control
Experience with automated testing (Jest or similar)
Comfortable following existing codebase patterns and code review workflows

Nice to Have
Angular or OpenAPI integration experience
Redis, security hardening, and multi-tenant authorization experience
How to Apply
Send your resume and GitHub/portfolio to ----------

Subject line: MEAN Stack Developer — Backend

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0505
Total Execution Time  0.0519
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,512,488 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/MEAN-Stack-Developer-Backend-1713238
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0442 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0009   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1713238
 LIMIT 1 
0.0018   SELECT *
FROM `employers`
WHERE `employer_id` = 260145
 LIMIT 1 
0.0013   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1713238
AND `misc`.`id` IS NULL 
0.0005   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-21',ej.date_added) duration_days, DATEDIFF('2026-10-21',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_jobs ej WHERE e.employer_id = ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id = '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-10-21',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1713238' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1713238 
0.0007   UPDATE employer_jobs SET hit_counts = '***Aug-20-2026=589***Aug-21-2026=68***Aug-22-2026=24***Aug-23-2026=15***Aug-24-2026=22***Aug-25-2026=32***Aug-26-2026=17***Aug-27-2026=16***Aug-28-2026=9***Aug-29-2026=14***Aug-30-2026=10***Aug-31-2026=10***Sep-01-2026=9***Sep-02-2026=11***Sep-03-2026=6***Sep-04-2026=321***Sep-05-2026=20***Sep-06-2026=36***Sep-07-2026=32***Sep-08-2026=20***Sep-09-2026=23***Sep-10-2026=17***Sep-11-2026=14***Sep-12-2026=5***Sep-13-2026=3***Sep-14-2026=5***Sep-15-2026=2***Sep-16-2026=2***Sep-17-2026=3***Sep-18-2026=2***Sep-19-2026=1***Sep-20-2026=6***Sep-21-2026=2***Sep-22-2026=1***Sep-23-2026=1***Sep-24-2026=2***Sep-25-2026=6***Sep-26-2026=1***Sep-28-2026=1***Sep-29-2026=618***Sep-30-2026=74***Oct-01-2026=41***Oct-02-2026=38***Oct-03-2026=23***Oct-04-2026=21***Oct-05-2026=30***Oct-06-2026=197***Oct-07-2026=67***Oct-08-2026=28***Oct-09-2026=19***Oct-10-2026=37***Oct-11-2026=28***Oct-12-2026=601***Oct-13-2026=93***Oct-14-2026=58***Oct-15-2026=44***Oct-16-2026=25***Oct-17-2026=13***Oct-20-2026=1***Oct-21-2026=1' WHERE job_id= '1713238'  
0.0006   UPDATE employer_jobs SET monthly_hits = '***Aug-2026=826***Sep-2026=1244***Oct-2026=1362' WHERE job_id= '1713238'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1713238' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1713238 
0.0353   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '260145'
AND `date_added` >= '2022-06-08' 
0.0004   select * from teasers 
0.0003   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)