Senior Laravel + Vue 3 Engineer – ERP Migration & Accounting Validation (Full-Time Remote)

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

TYPE OF WORK

Full Time

SALARY

$1,200/month

HOURS PER WEEK

40

DATE UPDATED

Jun 27, 2026

JOB OVERVIEW

About the Project

We are rebuilding our mature legacy ERP system (PowerBuilder client-server) as a modern SaaS application using Laravel and Vue 3.

The system includes:

• Real Estate Management
• Full Accounting Module (Chart of Accounts, Cost Centers, Subledger, General Ledger)
• Financial Reports (Trial Balance, Income Statement, Balance Sheet)
• Contract Management
• Lease & Payment Transactions
• Multi-branch handling
• Role-based permissions

The legacy system is fully operational and will serve as the reference system for validation and reconciliation.

This is not a startup MVP.
This is a modernization and stabilization role for a mature ERP system.

Role Overview

We are looking for a strong full-stack engineer who can:

• Audit and understand an existing Laravel + Vue 3 codebase
• Validate SaaS outputs against a legacy ERP system
• Ensure accounting logic and financial reports reconcile correctly
• Identify mismatches and root causes
• Improve transaction posting integrity
• Review and optimize database structure
• Enhance UI consistency and professional polish
• Implement structured regression testing
• Deliver stable, production-grade releases

This role requires strong analytical thinking and discipline — not just feature development.

Required Experience

• 5+ years Laravel experience
• 3+ years Vue.js experience (Vue 3 preferred)
• Experience working on production SaaS systems
• Strong REST API knowledge
• Strong MySQL database design knowledge
• Experience taking over and improving existing codebases
• Experience with Git workflows

Strongly Preferred

• Experience working on ERP, accounting, financial, or transaction-based systems
• Understanding of double-entry accounting concepts
• Experience validating financial reports
• Experience optimizing legacy or mature codebases

Compensation

• $1,200 USD per month
• Full-time (40 hours per week)
• Long-term, stable product role

Application Requirement

Our SaaS system is a rebuild of an existing legacy ERP that includes a full accounting module.

To proceed with your application, please answer the following:

If you were assigned to validate that our SaaS system produces identical financial outputs (Trial Balance, Income Statement, Balance Sheet) as the legacy system, how would you structure your validation approach?

Please briefly describe:

• How you would prepare test data
• How you would compare reports between systems
• How you would detect and log mismatches
• How you would handle rounding or posting differences
• How you would prevent regression issues after fixes

Structured answers are preferred.

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.0294
Total Execution Time  0.0308
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,511,256 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Laravel-Vue-3-Engineer-ERP-Migration-Accounting-Validation-Full-Time-Remote-1577175
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0219 seconds)  (Hide)
0.0009   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0009   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1577175
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 903786
 LIMIT 1 
0.0062   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1577175
AND `misc`.`idIS NULL 
0.0011   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-14',ej.date_added) duration_daysDATEDIFF('2026-07-14',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_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-07-14',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1577175' 
0.0013   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1577175 
0.0016   UPDATE employer_jobs SET hit_counts '***Feb-11-2026=97***Feb-12-2026=119***Feb-13-2026=50***Feb-14-2026=15***Feb-15-2026=20***Feb-16-2026=30***Feb-17-2026=22***Feb-18-2026=17***Feb-19-2026=16***Feb-20-2026=19***Feb-21-2026=5***Feb-22-2026=6***Feb-23-2026=17***Feb-24-2026=8***Feb-25-2026=12***Feb-26-2026=9***Feb-27-2026=2***Feb-28-2026=7***Mar-01-2026=5***Mar-02-2026=9***Mar-03-2026=11***Mar-04-2026=8***Mar-05-2026=8***Mar-06-2026=2***Mar-07-2026=1***Mar-08-2026=1***Mar-09-2026=2***Mar-10-2026=3***Mar-11-2026=11***Mar-12-2026=5***Mar-13-2026=5***Mar-14-2026=1***Mar-15-2026=2***Mar-16-2026=4***Mar-17-2026=4***Mar-18-2026=6***Mar-19-2026=6***Mar-20-2026=161***Mar-21-2026=87***Mar-22-2026=58***Mar-23-2026=60***Mar-24-2026=60***Mar-25-2026=16***Mar-26-2026=11***Mar-27-2026=11***Mar-28-2026=7***Mar-29-2026=1***Mar-30-2026=15***Mar-31-2026=5***Apr-01-2026=7***Apr-02-2026=4***Apr-03-2026=6***Apr-04-2026=6***Apr-05-2026=6***Apr-06-2026=17***Apr-07-2026=8***Apr-08-2026=19***Apr-09-2026=9***Apr-10-2026=7***Apr-11-2026=7***Apr-12-2026=3***Apr-13-2026=10***Apr-14-2026=15***Apr-15-2026=15***Apr-16-2026=10***Apr-17-2026=13***Apr-18-2026=7***Apr-19-2026=4***Apr-20-2026=7***Apr-21-2026=274***Apr-22-2026=187***Apr-23-2026=8***Apr-24-2026=3***Apr-25-2026=8***Apr-27-2026=7***Apr-28-2026=8***Apr-29-2026=6***Apr-30-2026=7***May-01-2026=10***May-02-2026=2***May-03-2026=4***May-04-2026=5***May-05-2026=7***May-06-2026=8***May-07-2026=4***May-08-2026=5***May-09-2026=3***May-10-2026=1***May-11-2026=1***May-12-2026=5***May-13-2026=10***May-14-2026=4***May-15-2026=2***May-16-2026=7***May-17-2026=4***May-18-2026=4***May-19-2026=6***May-20-2026=3***May-21-2026=6***May-22-2026=4***May-23-2026=3***May-24-2026=7***May-25-2026=2***May-26-2026=4***May-27-2026=7***May-28-2026=2***May-29-2026=2***May-30-2026=1***May-31-2026=2***Jun-01-2026=1***Jun-02-2026=6***Jun-03-2026=3***Jun-05-2026=5***Jun-07-2026=1***Jun-08-2026=4***Jun-09-2026=4***Jun-10-2026=3***Jun-11-2026=7***Jun-12-2026=6***Jun-13-2026=5***Jun-14-2026=2***Jun-15-2026=8***Jun-16-2026=4***Jun-17-2026=4***Jun-18-2026=2***Jun-19-2026=2***Jun-20-2026=4***Jun-23-2026=17***Jun-24-2026=9***Jun-25-2026=2***Jun-26-2026=10***Jun-27-2026=290***Jun-28-2026=114***Jun-29-2026=130***Jun-30-2026=54***Jul-01-2026=30***Jul-02-2026=15***Jul-03-2026=27***Jul-04-2026=11***Jul-05-2026=10***Jul-06-2026=24***Jul-07-2026=22***Jul-08-2026=20***Jul-09-2026=9***Jul-10-2026=7***Jul-11-2026=11***Jul-14-2026=1' WHERE job_id'1577175'  
0.0012   UPDATE employer_jobs SET monthly_hits '***Feb-2026=471***Mar-2026=586***Apr-2026=688***May-2026=135***Jun-2026=697***Jul-2026=187' WHERE job_id'1577175'  
0.0022   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1577175' AND status LIKE 'sent%' ORDER BY id DESC  
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1577175 
0.0028   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '903786'
AND `date_added` >= '2022-06-08' 
0.0009   select from teasers 
0.0008   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)