Senior Fullstack Software Engineer.
Email: njcross1990@gmail.com
LinkedIn: Nicholas Cross
GitHub: Nicholas Cross
Versatile Full-Stack Software Engineer with 10+ years of experience driving enterprise-scale development at companies like Ontraport and BigCommerce. Adept at building scalable, cloud-based solutions using modern technologies including React, Python, PHP, and C++. Combines strong programming and DevOps expertise with a passion for problem-solving, performance optimization, and cross-functional collaboration. Known for rapidly mastering recent technologies, tackling complex challenges, and delivering under pressure in both independent and team-driven environments.
MyPlayTray – Consultant / Senior Product Engineer
content.json
and session storageCoding Temple Projects
Explore More Projects: github.com/njcross
CI pipeline runs unit tests, builds React, syncs content.json
, and restarts backend services on EC2 (PM2 + Redis listener).
PS C:\Users\njcro\m7project> .\deploy.bat "fixes" Uploading restart script... restart_backend.sh 100% 1257 15.7KB/s 00:00 Restarting backend on EC2... 🔍 Inspecting content.json status... 📁 Found content.json 📄 Committing local content.json changes before pulling... [main bdac228] Auto-commit: Preserve local content.json before pull 1 file changed, 2 insertions(+), 2 deletions(-) 📥 Pulling latest changes from main... From github.com:njcross/ProductSite * branch main -> FETCH_HEAD 336505e..16f604f main -> origin/main Successfully rebased and updated refs/heads/main. 🔍 Checking for content.json differences from origin/main... 📤 Pushing merged content.json changes... On branch main Your branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits) Untracked files: (use "git add..." to include in what will be committed) react-router-bootstrap-app/public/images/game_kit.jpg react-router-bootstrap-app/public/images/gears.jpg react-router-bootstrap-app/public/images/solar_system.jpg nothing added to commit but untracked files present (use "git add" to track) ✅ content.json sync complete. To github.com:njcross/ProductSite.git 16f604f..f7530f7 main -> main ➜ 1. Committing changes... [main ae3c6b0] fixes 2 files changed, 3 insertions(+), 3 deletions(-) remote: Enumerating objects: 13, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (4/4), done. remote: Total 8 (delta 5), reused 5 (delta 4), pack-reused 0 (from 0) Unpacking objects: 100% (8/8), 5.63 KiB | 128.00 KiB/s, done. From github.com:njcross/ProductSite * branch main -> FETCH_HEAD e44af6a..f7530f7 main -> origin/main Merge made by the 'ort' strategy. README.md | Bin 21756 -> 10975 bytes react-router-bootstrap-app/public/content.json | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) Enumerating objects: 18, done. Counting objects: 100% (14/14), done. Delta compression using up to 8 threads Compressing objects: 100% (7/7), done. Writing objects: 100% (8/8), 766 bytes | 766.00 KiB/s, done. Total 8 (delta 5), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (5/5), completed with 5 local objects. To github.com:njcross/ProductSite.git f7530f7..ecebe59 main -> main ≡ƒÄ¿ Deploying FRONTEND... ≡ƒº¬ Running frontend tests... Test Suites: 51 passed, 51 total Tests: 57 passed, 57 total Snapshots: 0 total Time: 16.695 s Ran all test suites. npm notice npm notice New major version of npm available! 10.9.0 -> 11.5.2 npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.5.2 npm notice To update run: npm install -g npm@11.5.2 npm notice ➜ Frontend tests passed. ≡ƒöä Syncing content.json from server... content.json 100% 9127 53.4KB/s 00:00 ≡ƒÅù∩╕Å Building the frontend... > react-router-bootstrap-app@0.1.0 build > react-scripts build && node sitemap-generator.js Creating an optimized production build... Compiled successfully. File sizes after gzip: 217.91 kB build\static\js\main.2662862b.js 46.15 kB build\static\css\main.afb16abe.css 2.71 kB build\static\js\488.a3b316c2.chunk.js The project was built assuming it is hosted at /. You can control this with the homepage field in your package.json. The build folder is ready to be deployed. You may serve it with a static server: serve -s build Find out more about deployment here: https://cra.link/deployment ➜ Build completed successfully. ≡ƒÜÇ Uploading React build to EC2... ≡ƒôª Backing up current build on EC2... ≡ƒôñ Uploading new build... apple-touch-icon.png 100% 9824 111.6KB/s 00:00 asset-manifest.json 100% 517 6.1KB/s 00:00 content.json 100% 9127 107.4KB/s 00:00 favicon-96x96.png 100% 4757 56.7KB/s 00:00 favicon.ico 100% 15KB 179.7KB/s 00:00 favicon.svg 100% 32KB 377.4KB/s 00:00 0FB1E43D-AE6E-4F5D-9291-2EB72C8CBD6B.png 100% 3176KB 3.7MB/s 00:00 6cfd37544b11fa9e03b3480eec1fe8f7.jpg 100% 372KB 1.8MB/s 00:00 AdvancedMarker.css 100% 425 6.5KB/s 00:00 C8121279-0275-40C4-8B38-F0CD0DCE627F.png 100% 323KB 1.7MB/s 00:00 canstockphoto22402523-arcos-creator.com_.jpg 100% 72KB 435.7KB/s 00:00 character_routes.py 100% 2961 43.2KB/s 00:00 content.json 100% 5449 66.5KB/s 00:00 download.jfif 100% 3595 41.8KB/s 00:00 download_1.jfif 100% 4122 49.1KB/s 00:00 favicon.ico 100% 15KB 191.3KB/s 00:00 hero.png 100% 341KB 1.8MB/s 00:00 InventoryMap.css 100% 177 1.8KB/s 00:00 kit_01.png 100% 27KB 323.8KB/s 00:00 paperplateanimals-main.jpg 100% 141KB 779.0KB/s 00:00 paper_toy_houses.jpg 100% 210KB 1.2MB/s 00:00 pipecleaner_animals.jpg 100% 56KB 373.0KB/s 00:00 step1.png 100% 135KB 841.6KB/s 00:00 step2.png 100% 130KB 794.8KB/s 00:00 step3.png 100% 136KB 757.2KB/s 00:00 Story_Card_Game_1.jpg 100% 213KB 1.3MB/s 00:00 Turkey_Day_Placematjpg.jfif 100% 8894 125.9KB/s 00:00 index.html 100% 1626 18.9KB/s 00:00 manifest.json 100% 618 7.2KB/s 00:00 robots.txt 100% 178 1.8KB/s 00:00 sitemap.xml 100% 938 9.4KB/s 00:00 main.afb16abe.css 100% 309KB 1.7MB/s 00:00 main.afb16abe.css.map 100% 680KB 3.4MB/s 00:00 488.a3b316c2.chunk.js 100% 7424 58.5KB/s 00:00 488.a3b316c2.chunk.js.map 100% 17KB 178.9KB/s 00:00 main.2662862b.js 100% 832KB 3.0MB/s 00:00 main.2662862b.js.LICENSE.txt 100% 2711 29.1KB/s 00:00 main.2662862b.js.map 100% 3160KB 7.6MB/s 00:00 web-app-manifest-192x192.png 100% 9415 98.9KB/s 00:00 web-app-manifest-512x512.png 100% 26KB 299.4KB/s 00:00 ✅ Deployment completed successfully 🚀 Deploying BACKEND... 🧰 Ensuring Redis is installed on EC2... 🛠️ Configuring Redis keyspace notifications... OK 🧩 Ensuring Redis listener is running via PM2... [PM2] Applying action deleteProcessId on app [redis-listener](ids: [ 1 ]) ✓ ┌────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 2 │ backend │ default │ N/A │ fork │ 1897129 │ 2M │ 0 │ online │ 0% │ 13.4mb │ ec2-user │ disabled │ └────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ [PM2] Starting /home/ec2-user/ProductSite/backend/scripts/redis_listener.py in fork_mode (1 instance) [PM2] Done. ┌────┬───────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼───────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┬──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 2 │ backend │ default │ N/A │ fork │ 1897129 │ 2M │ 0 │ online │ 0% │ 13.4mb │ ec2-user │ disabled │ │ 3 │ redis-listener │ default │ N/A │ fork │ 1784031 │ 0s │ 0 │ online │ 0% │ 4.0kb │ ec2-user │ disabled │ └────┴───────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ [notice] A new release of pip is available: 24.3.1 -> 25.2 [notice] To update, run: python.exe -m pip install --upgrade pip 🧪 Running backend tests... ✅ Backend tests passed. Restarting backend on EC2... WARNING: You are using pip version 21.3.1; however, version 25.2 is available. You should consider upgrading via the '/home/ec2-user/ProductSite/backend/venv/bin/python3 -m pip install --upgrade pip' command. INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. CORS_ORIGIN: ['https://www.myplaytray.com', 'https:/myplaytray.com'] Database tables created! [PM2] Applying action deleteProcessId on app [backend](ids: [ 2 ]) ✓ ┌────┬───────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼───────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┬──────┼───────────┬──────────┬──────────┬──────────┬──────────┤ │ 5 │ backend │ default │ N/A │ fork │ 1784591 │ 0s │ 0 │ online │ 0% │ 4.0kb │ ec2-user │ disabled │ │ 4 │ redis-listener │ default │ N/A │ fork │ 0 │ 0 │ 15 │ errored │ 0% │ 0b │ ec2-user │ disabled │ └────┴───────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ ✅ Deployment completed successfully
Technology | Proficiency | Years of Experience |
---|---|---|
PHP | Expert | 12 |
SQL/Redis | Expert | 12 |
C++ | Intermediate | 10 |
Python | Advanced | 2 |
JavaScript/React | Advanced | 6 |
TypeScript | Intermediate | 1+ |
Full Stack Senior Product Development Engineer, Consultant (2025–Present)
Senior Fullstack Engineer, BigCommerce (2023–2024)
Backend Engineer, Ontraport (2013–2023)
IT Specialist, Mindspan Consulting (2009–2013)