Live Production · bookingoff.page

Shokunin Management

職人 — 勤怠受発注総合管理システム
「日々の作業をアップデート」

Hệ thống SaaS quản lý chấm công, công trình, nhân sự, lương, hóa đơn dành cho doanh nghiệp Nhật Bản có nhiều hình thức tuyển dụng cùng lúc — đặc biệt trong lĩnh vực xây dựng, phái cử nhân lực và vận tải. Sản phẩm thương mại có tên Booking off (ブッキングオフ), đang được AMELA phát triển và vận hành.

🌐 Web Admin (React)
📱 Mobile App (iOS + Android)
⚙️ REST API (NestJS)
🇯🇵 Yokohama, Kanagawa
WEB ADMIN
CALENDAR
APP
📊 Quy mô dự án

Một sản phẩm SaaS quy mô lớn

Số liệu trích xuất trực tiếp từ source code đã clone về output/Shokunin/ (3 repo: web, api, app).

~417K dòng
Tổng codebase TypeScript
Web 173K · API 113K · App 131K
105 entities
Bảng dữ liệu (TypeORM)
MySQL 8 · Domain phức tạp
45+ pages
Module Web Admin
28 module API · 18 feature App
3 platforms
Web / iOS / Android
Code Push (Revopush) · Sentry
🎯 Đối tượng khách hàng cuối

Doanh nghiệp Nhật có nhiều hình thức tuyển dụng

"雇用体系が事業所内で複数ある事業者向け" — phục vụ các ngành có nhiều loại nhân sự cùng dự án: chính thức, hợp đồng phụ (vendor), thời vụ, freelance...

🏗️

Xây dựng 建設業

Quản lý công trình (現場), thợ chính (職人), thầu phụ và phát hóa đơn theo dự án.

👷

Phái cử nhân lực 人材派遣

Phân công nhân sự đa kỹ năng, chấm công GPS, tự động tính lương theo đơn giá khách hàng.

🚚

Vận tải 運送業

Lịch trình tài xế, quản lý ca, theo dõi shift & overtime, đối soát doanh thu.

⚡ 6 nhóm tính năng cốt lõi

Booking offの主な機能

Nguồn: landing page chính thức trong source shokunin-web/public/landing-page/.

📄

Quản lý chứng từ 書類管理

Phát hành & tìm kiếm hóa đơn. Liên kết với calendar — chỉ cần chọn khoảng thời gian là tự tạo invoice chính xác. Lưu PDF, in trực tiếp.

👥

Quản lý nhân sự & khách hàng 人事・クライアント管理

Cấp tài khoản riêng cho từng vai trò (Admin/Manager/Office/Finance/Vendor/Worker). Quản lý chấm công nội bộ + thông tin khách.

📅

Calendar / Lịch カレンダー機能

Chia sẻ thông tin nhận-giao việc (受発注). Đồng bộ giữa web và mobile — sửa lịch điều phối mọi nơi.

💰

Quản lý lương 給与管理

Ngoài tính lương cơ bản, có quản lý OT, ngày nghỉ, thưởng, ứng lương (salary advance), snapshot lương theo tháng.

📈

Quản lý doanh thu 売上管理

Nhập ngày phát sinh để theo dõi doanh thu & thu hồi công nợ chính xác — phục vụ kế hoạch vay vốn, đầu tư thiết bị.

📱

App đa năng 多機能アプリ

Hợp tác nhóm dễ dàng. Chấm công bằng GPS chống gian lận. Đăng ký shift trực tiếp từ điện thoại.

💡 Vấn đề giải quyết

Từ giấy tờ & FAX → quy trình hóa

Booking off thay thế quy trình thủ công (điện thoại, FAX, Line) bằng workflow số hóa.

Pain points BEFORE

Năng suất thấp能率が上がらない — phát hành chứng từ thủ công, mất thời gian
Sai sót tài chính請求漏れ・入金漏れ・支払いミス — quên xuất hóa đơn, sai khoản thu/chi
Lỗi do nhập tay受発注ミス — sai sót khi nhận order qua điện thoại / FAX
Chia sẻ thông tin nội bộ chậm社内での情報共有が煩雑 — không sync giữa văn phòng và hiện trường
Khó quản lý nghỉ phép & OT労務や休暇の管理が煩雑 — multiple loại nhân sự = nhiều rule

Giá trị mang lại AFTER

業務プロセスの効率化Hệ thống đa chức năng giảm gánh nặng công việc giấy tờ, tăng năng suất rõ rệt
コスト削減Giảm OT & lãng phí thao tác → tiết kiệm nhân công
Chống gian lận chấm côngGPS時刻打刻 — định vị địa điểm khi check-in/out
Truy cập mọi nơiCloud-based — xem & duyệt từ smartphone ngoài hiện trường
Cảnh báo tự độngNhắc deadline xuất hóa đơn theo khách → 0 sai sót đối soát
🏗️ Kiến trúc hệ thống

3 tầng · 3 platform · 1 API

Monorepo NestJS phục vụ Web Admin (React) và Mobile App (React Native), tích hợp Stripe billing và AWS S3.

Client Layer
3 platforms · TypeScript
shokunin-web React 16 Ant Design 4 i18next (vi/en/ja) ECharts / Highcharts Stripe.js dnd-kit html2pdf
shokunin-app React Native 0.85 Redux + Saga React Navigation Revopush (CodePush) Sentry OneSignal Push GPS Geolocation
API & Business Layer
shokunin-api · NestJS monorepo
apps/api apps/worker NestJS TypeORM Swagger JWT + Passport CASL (permission) Socket.IO BullMQ Queue node-schedule @holiday-jp pdf-lib · sharp
Data Layer
105 entities
MySQL 8 Redis (ioredis) TypeORM migrations Audit log (TimeKeeping) Snapshot pattern (Salary)
External Integration
SaaS providers
Stripe (billing + webhook) AWS S3 (storage) SendGrid (mail) OneSignal (push) Google Maps Revopush (OTA)
🔧 Chi tiết tech stack

Stack TypeScript end-to-end

Mức độ trưởng thành: production-ready, có versioned salary (V2/V4), audit log, snapshot, đa ngôn ngữ.

🌐 Web Admin

react
Reposhokunin-web
FrameworkReact 16 + TS
UI LibraryAnt Design 4.12
ChartsECharts + Highcharts + ApexCharts
i18nvi · en · ja
Pages45+ modules
LOC~173,000

⚙️ Backend API

nestjs
Reposhokunin-api
FrameworkNestJS (monorepo)
Appsapi + worker
ORMTypeORM + MySQL 8
QueueBullMQ + Redis
Modules28 (api/src)
Entities105 bảng
LOC~113,000

📱 Mobile App

react native
Reposhokunin-app
FrameworkReact Native 0.85
StateRedux + Saga
Bundle IDjp.bookingoff.app
OTA UpdateRevopush (CodePush fork)
MonitoringSentry
Features18 modules
LOC~131,000
🗂️ Domain model

Bản đồ domain — 12 nhóm chính từ 105 entities

Phân loại từ thư mục shokunin-api/libs/database-type-orm/src/entities/.

🏢 Company / Tenant 9

Company, CompanyBilling, Subscription, Plan, Stripe history…

👤 User / Role 15

User, UserCompany, Role, Permission, UserBank, UserHeal…

🏗️ Construction Site 4

ConstructionSite, Member, DayOff, View — 現場管理

📋 Task / 手配 9

Task, TaskWorker, TaskVendor, TaskReport, Comment, ReadConfirm…

⏰ Time Keeping 4

TimeKepping, TimeKeepingRest, TimeKeepingAuditLog, Actual — GPS

📅 Schedule / Calendar 6

UserSchedule, ScheduleDetail, Shift, CalendarDraft, History…

💴 Salary / Payroll 12

Payroll (V2/V4), Bonus, SalaryAdvance, Snapshot, Customize, Params…

🏖️ Day Off / Holiday 7

UserDayOff, Holiday, DayOffConfig, HistoryDelete, Log…

📄 Paper / Document 5

Paper, PaperTable, PaperConstructionSite, File, History

💳 Payment / Billing 8

PaymentRequest, PaymentHistory, PayBill, Invoice, Stripe webhook…

📢 Broadcast / Notif 6

Broadcast, Thread, Comment, Notification, Mail history…

🛡️ Insurance & Misc 20

Insurance, Unemployment, Tax, Contact, Note, Campaign, City, Ken…
🏢 Khách hàng cuối

Đơn vị vận hành sản phẩm Booking off

Booking off (ブッキングオフ)

bookingoff.page · jp.bookingoff.app
📍 Địa chỉ〒221-0834 神奈川県横浜市神奈川区台町13-19 三栄ビル4階
📞 SĐT045-298-4831
🌐 Domainbookingoff.page (prod) · shm-api.test.amelacorp.com (dev)
📱 Google Playjp.bookingoff.app
🤝 Bối cảnh dự án (nội bộ AMELA)

Trạng thái quan hệ khách hàng — 5/2026

Tổng hợp từ BackgroundInfo.txt. Phần này phục vụ nội bộ AMELA để chuẩn bị cho cuộc gặp tái cấu trúc quan hệ với khách.

📌 Tình trạng hiện tại

📌Shokunin là khách hàng lâu năm của AMELA. Anh Quảng (BrSE) là đầu mối chính, đang nắm phần lớn thông tin dự án và quan hệ cá nhân với khách.

📌Khách chính thức yêu cầu giảm chi phí tháng 5 từ 135万円 → 80万円 (giảm ~41%). Định hướng đã chia sẻ 2–3 tháng trước: tối ưu chi phí phát triển để dành ngân sách cho marketing & bán hàng.

📌Anh Quảng sẽ nghỉ cuối tháng 5. Một số key member có dấu hiệu muốn remote hoặc nghỉ. Vai trò AM/AMELA Japan chưa vào sâu trước đây.

Tháng trước
135万円
Tháng 5 (yêu cầu)
80万円
?
Từ T6 trở đi
未定

⚠️ Rủi ro cần quản trị

  • Khách giảm size đúng lúc Quảng nghỉ → có thể dự án bị chuyển hướng hoặc tách rời AMELA
  • Quan hệ đang ở cấp cá nhân (Quảng), chưa có "company-level relationship" với AMELA Japan
  • Từ tháng 6 có khả năng tiếp tục giảm quy mô, tạm dừng hoặc cắt hẳn đội phát triển
  • Cần Mina vào với vai trò cửa sổ chính thức AMELA Japan — lý do hợp lý: bàn lại thể chế chi phí từ T6
  • Cách nói mềm: "Quảng đã share về việc điều chỉnh chi phí T5, tôi muốn tham gia với tư cách cửa sổ AMELA Japan để hỗ trợ khách tốt hơn"