Skip to content
View Jorayyy's full-sized avatar

Block or report Jorayyy

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Jorayyy/README.md

Mark Jory Andrade

Full-stack engineer — HRIS, payroll, and operations systems

Tacloban City, Philippines · open to remote and Cebu/Tacloban roles

Email · LinkedIn · Arcade

I build the software a BPO actually runs on: time and attendance, Philippine statutory payroll, leave, and multi-site inventory. Most of these systems are designed, built, and shipped solo end to end — data model, permissions, payroll math, UI, and deployment.

Selected work

prime-hris · live — HRIS and payroll for multi-site BPO operations

Next.js 16 · React 19 · Prisma 6 · PostgreSQL · Socket.IO

33-model HRIS covering employees, shift templates, attendance, leave, and payroll.

  • Philippine payroll engine — DOLE, SSS (RA 11199), PhilHealth UHC, Pag-IBIG, and TRAIN withholding computed from bracket tables stored in the database, so a rate change is a data update, not a redeploy.
  • Attendance to payslip pipeline — shift assignments, overtime and holiday rules, payroll exceptions, payslips with adjustments, and an audit entry for every mutation.
  • Real-time layer — Socket.IO chat and HR inbox on a custom Next server, with online presence and typing state tracked server-side.

mebs_inventory · live — asset and inventory management for multi-site BPOs

Next.js · Prisma · Auth.js v5 · Vitest

36-model inventory system: assets, consumables, transfers, maintenance, and offboarding clearance.

  • Authorization is server-side only — 52 permissions across 8 roles, enforced by requirePermission in every action and page, with siteScope keeping site admins inside their own sites.
  • Custody trail — multi-line site-to-site transfers and an exit clearance workflow that blocks offboarding until equipment comes back.
  • Tested — 8 Vitest suites plus a smoke script that boots the production build and asserts routes, login, and CSV exports.

qr · live — QR visitor management with check-in/check-out

Next.js 16 · Prisma 7 · Argon2 · TOTP

  • Security first — Argon2 password hashing, TOTP MFA for staff, server-side RBAC matrix, audit log, and validated uploads.
  • Rate limiting that survives serverless — Postgres counters with an in-memory short-circuit per instance, so a burst of traffic stops hammering the database.
  • Retention by policy — visitor photos live in private blob storage and are purged by a scheduled retention job.
  • CI on every push — lint, typecheck, 9 Vitest suites, and a production build.

hrweb · live — payroll and timekeeping, rebuilt end to end

Next.js 16 · Drizzle ORM · Neon · Vitest

  • Statutory contributions with timezone-correct daily cutoffs (Asia/Manila) and a manual DTR review step before pay runs.
  • Sensitive identifiers encrypted at rest — AES-256-GCM with a key that hard-fails in production if missing.
  • 12 Vitest suites covering payroll math, leave, lockout, and access scope.

Also shipping: saripos (multi-store POS), jorify (multi-tenant commerce SaaS), plus client storefronts for retail, food, and gym businesses.

How I build

  • Typed boundaries. Zod at every input, server actions for every mutation, nothing trusted from the browser. Permissions are checked in the data layer, not in the component.
  • Money and access control get tests. Payroll arithmetic, statutory tables, and permission checks are the code I refuse to ship on vibes.
  • Boring infrastructure. Postgres, migrations in version control, CI that runs lint, typecheck, tests, and a build on every push.
  • Readable over clever. Every repo here is something a new hire could pick up.

Stack

Frontend
TypeScript React Next.js Tailwind CSS

Backend and data
Node.js PostgreSQL Prisma Drizzle ORM MySQL Socket.IO

Auth and validation
Auth.js Zod

Testing and delivery
Vitest Docker Vercel Git

Also fluent
Laravel PHP

Contributions

Contribution snake
Off the clock

The arcade in this profile is a canvas game I built for fun — character select, collision, and save state with no engine.

Open to senior full-stack roles — makoyjorey@gmail.com

Pinned Loading

  1. micsapparel micsapparel Public

    Premium streetwear storefront from Tacloban City - caps, hats, and apparel.

    TypeScript 1

  2. qr-capstone qr-capstone Public

    QR-based scanning and attendance app.

    TypeScript 1

  3. generation-bread generation-bread Public

    Bakery website and ordering.

    TypeScript

  4. giusseppe giusseppe Public

    Italian restaurant site for Tacloban City - wood-fired pizza, handmade pasta, cocktails.

    TypeScript

  5. knockles knockles Public

    Boxing and Muay Thai gym site for Mactan, Cebu - coaching, private training, trial bookings.

    TypeScript

  6. mebs_inventory mebs_inventory Public

    Enterprise inventory, asset, and equipment management for multi-site BPO operations.

    TypeScript