Langkau ke kandungan

200OK

Platform operasi agensi dengan gaji Malaysia

Projek, papan tugas langsung, invois dan gaji berkanun Malaysia dalam satu platform, dibina untuk kerja agensi IT kami sendiri.

Jenis
Operasi dalaman dan gaji
Bahagian kami
Platform kami sendiri, direka bentuk dan dibina oleh 404 Tech untuk kerja kami sendiri.

404 Not Found

Apa yang tiada

Sebuah agensi IT (kami) menguruskan projek, tugas, maklum balas pelanggan, anggaran harga, invois, tuntutan, aset, domain, deployment dan staf dalam alat yang berasingan. Tiada yang bersambung, dan gaji berada di luar semuanya. Yang tiada ialah satu platform: subprojek, papan tugas langsung, dokumen yang boleh dibuka oleh pelanggan daripada pautan, dan modul gaji yang mengira caruman berkanun Malaysia dan mengeluarkan slip gaji.

Kekangan

Apa yang perlu dipatuhi oleh sistem, sebelum sebaris kod ditulis.

Statut
Jadual berkanun: Jadual Ketiga KWSP (EPF) (Oktober 2025), PERKESO (SOCSO) di bawah Akta 4 termasuk SKBBK, dan SIP (EIS) di bawah Akta 800.
Rekod
Larian gaji yang telah dimuktamadkan tidak sekali-kali dibuka semula. Medan identiti staf disulitkan semasa disimpan.
Produksi
Produksi sedang beroperasi: setiap perubahan mesti tidak merosakkan apa-apa, dan skema dijalankan oleh pemiliknya.
Had kadar
Had global 120 permintaan seminit, bagi setiap pengendali, bagi setiap pengguna, menolak kemungkinan polling.
Akses
Peranan ialah data, dengan akses halaman ditetapkan bagi setiap peranan.

Sistem

Aplikasi Nuxt, serta halaman token awam untuk invois dan anggaran harga yang boleh dikongsi dan dibatalkan, berhubung dengan REST API NestJS. Prisma memetakannya kepada MySQL. Papan projek dikemas kini melalui server-sent events: satu aliran bagi setiap projek, di sebalik pengawal akses aliran. Enjin gaji ialah kalkulator tulen, tanpa pangkalan data dan tanpa jam. Ia menerima data biasa dan memulangkan baris slip gaji serta isu yang menyekat dan tidak menyekat. Servis di sekelilingnya memuatkan jadual jalur, menulis keputusan dan menyerahkan slip gaji kepada pemapar PDF. Medan identiti staf melalui penyulitan AES-256-GCM semasa ditulis dan penyahsulitan semasa dibaca. Integrasi meliputi kawalan sumber, deployment, webhook, tamat tempoh domain dan storan objek.

Rajah 1Dilukis daripada binaan
RESTbaca skop tokenperubahan papanserver-sent eventspertanyaandata biasabaris, isuslip gajimedan stafteks siferwebhook masuk, panggilan keluar01Aplikasi webprojek, kewangan, HR02Halaman tokenpautan kongsi boleh batal03REST APIJWT, berhad kadar04Aliran peristiwasatu setiap projek05Pangkalan dataMySQL melalui Prisma06Kalkulator gajitanpa DB, tanpa jam07Pemapar PDFslip gaji, invois08Penyulitan medanAES-256-GCM09Integrasisumber, deploy, domain

Aplikasi dan halaman token → REST API → MySQL. Perubahan papan ditolak kembali melalui server-sent events; gaji dikira melalui kalkulator tulen sebelum apa-apa ditulis.

  • Dibina oleh kami
  • Data disimpan
  • Pihak ketiga
  • Luar talian atau luar saluran
Baca lukisan sebagai teks

Bahagian

  1. 01Aplikasi web: projek, kewangan, HR
  2. 02Halaman token: pautan kongsi boleh batal
  3. 03REST API: JWT, berhad kadar
  4. 04Aliran peristiwa: satu setiap projek
  5. 05Pangkalan data: MySQL melalui Prisma
  6. 06Kalkulator gaji: tanpa DB, tanpa jam
  7. 07Pemapar PDF: slip gaji, invois
  8. 08Penyulitan medan: AES-256-GCM
  9. 09Integrasi: sumber, deploy, domain

Aliran

  • Aplikasi web ke REST API: REST
  • Halaman token ke REST API: baca skop token
  • REST API ke Aliran peristiwa: perubahan papan
  • Aliran peristiwa ke Aplikasi web: server-sent events (alternatif atau luar saluran)
  • REST API ke Pangkalan data: pertanyaan
  • REST API ke Kalkulator gaji: data biasa
  • Kalkulator gaji ke Pangkalan data: baris, isu
  • Kalkulator gaji ke Pemapar PDF: slip gaji
  • REST API ke Penyulitan medan: medan staf
  • Penyulitan medan ke Pangkalan data: teks sifer
  • Integrasi ke REST API: webhook masuk, panggilan keluar (alternatif atau luar saluran)

Skrin

Kebanyakan sistem ini berada di sebalik log masuk, jadi skrin utamanya dilukis semula di sini sebagai skematik. Bar menggantikan setiap nama dan angka.

Muktamadkan larianPekerjaKasarEPFSOCSOEISBersih
Larian gaji sebagai skematik: satu baris bagi setiap pekerja, dengan gaji kasar dan tiga caruman berkanun.Skematik, tiada data sebenar

Keputusan

Keputusan kejuruteraan yang membentuk binaan ini, dan sebab setiap satu dibuat.

  1. Wang dalam sen integer, dari hujung ke hujung.

    Setiap amaun disimpan dan dipindahkan dalam unit kecil. Penukaran berlaku hanya di tempat seseorang menaip atau membaca angka.

  2. Keadaan daripada cap masa, bukan lajur status.

    Larian gaji ialah draf sehingga masa dimuktamadkan ditetapkan, dan dibayar sebaik sahaja masa dibayar ditetapkan. Tiada salinan kedua kebenaran yang boleh menjadi tidak selari.

  3. Aritmetik tulen, berasingan daripada IO.

    Kalkulator tidak sekali-kali menyentuh pangkalan data atau jam, jadi pengiraan berkanun diuji pada fixture.

  4. Kadar ialah jadual jalur yang boleh disunting.

    Kadar caruman tinggal dalam data, bukan kod. Skim bukan standard hanya diaktifkan dengan tanda eksplisit pengarah, dan cukai pendapatan (PCB) dimasukkan, bukan dikira.

  5. Server-sent events, bukan polling.

    Had kadar menjadikan polling mustahil. Papan kini menerima perubahan sebaik sahaja ia berlaku.

200OK

Siap

Satu platform untuk projek, kewangan, HR dan gaji. Subprojek bersarang satu tahap sahaja, dan gabung atau padam ditolak selagi projek mempunyai anak. Larian gaji diprorata mengikut hari kalendar, membenarkan slip gaji bertarikh lampau, dieksport ke CSV dan mencetak PDF slip gaji. Invois dan anggaran harga dihantar sebagai pautan yang boleh dibatalkan oleh agensi.

Kiraan binaan, diambil daripada kodnya. Dikira pada 3 November 2026. Tiada angka di sini merupakan hasil perniagaan.
AngkaApa yang dikira
3skim berkanun (KWSP, PERKESO, SIP) daripada jadual jalur berversi
69model data
~333pengendali laluan API merentasi 48 pengawal
87fail spesifikasi ujian, 16 daripadanya untuk HR dan gaji
51fail halaman dalam aplikasi web

Dibina dengan

  • NestJS
  • Prisma
  • MySQL
  • Nuxt 4
  • Tailwind CSS
  • shadcn-nuxt
  • reka-ui
  • PDFKit
  • Server-sent events
  • Swagger
  • Jest