01 / Work
Work
Public products, private enterprise Odoo work, and earlier modules. See architecture for how the stacks connect. Press ⌘K to jump anywhere.
Public products
Apps Store listings, live sites, and public GitHub repos.
Employee transfer, IT hardware, and clearance requests with multi-step approvals, checklist sign-off, PDF reports, and demo data. Packaged for Odoo 18 / LGPL so teams can install without a custom build.
Outcome Listed on the Odoo Apps Store with installable package and GitHub source.
Odoo 18 Apps StoreApprovals + PDFsPython / PostgreSQL
Employee and manager UI for the same HR flows: dynamic forms, status timeline, checklist progress, and a reporting dashboard.
Outcome Web UI for the HR workflows instead of only backend forms.
Next.js 15Role-based UXAnalytics dashboard
Platform for Myanmar youth in the UAE: official guides, news, and community publishing. Odoo for content, auth, and REST; Next.js front end in Myanmar language.
Outcome Live public site with editorial workflow and searchable guides.
Odoo + Next.jsLive productREST APIs
Landing page, demo login, and an ops desk for shift handover notes with blockers, follow-ups, priority flags, and acknowledgements.
Outcome Marketing site plus a small app shell for handover notes.
Next.jsOps UXProduct UI
Enterprise · private
Production Odoo at work — finance batches, payroll, APIs, HR workflows. Source stays private.
- 05
Batch petty-cash & expense ops — multi-approver sheets with project/city rules
Case studyPrivate · enterpriseBatch petty-cash flows, holder approval, project/city rules, and tighter expense-sheet behavior for day-to-day finance operations on Odoo.
Outcome Ops submit and review cash in batches with utilization checks and project/city review — see case study.
Batch processingOdoo ORMFinance ops
- 06
Labor payroll & costing — batch payslips with project cost allocation
Case studyPrivate · enterprisePayslip runs with labor payroll logic, cost attribution, reporting rules, and batch processing on top of Odoo payroll.
Outcome Finance and HR can allocate labor cost and close payslip runs in Odoo — see case study.
Batch payslipsCost allocationPostgreSQL
- 07
Central REST hub for mobile clients — auth, projects, HR & requests
Private · enterpriseREST layer for mobile and hub apps: auth, projects, HR, requests, and related domains with consistent JSON responses.
Outcome One API layer for apps that need ERP data, instead of many one-off endpoints.
REST / JSONAuth layerPython / Odoo
- 08
HR request & clearance platform — transfers, IT hardware, exit flows
Private · enterpriseRequest platform for employee transfers, IT hardware, clearance forms, and related HR ops — approvals, status tracking, and structured records.
Outcome Staff requests and clearance run in Odoo instead of email and paper.
WorkflowsApprovalsRecord rules
Earlier delivery
Earlier client Odoo modules for fleet and hotel ops.
Earlier client Odoo work: workshop fleet tracking and hotel/workshop customizations (Python models, XML views, PostgreSQL).
Outcome Client ERP customizations that started my Odoo work.
Odoo modulesXML viewsClient delivery
ORM · query density
Standard loop vs batch-mapped Odoo
From expense / sheet work: do not search or browse inside a for loop. Prefetch with mapped(), then resolve in memory. Toggle to compare.
sheets = env['hr.expense.sheet'].search([
('state', '=', 'approve'),
])
# N+1: one search / browse per sheet
for sheet in sheets:
employee = env['hr.employee'].browse(sheet.employee_id.id)
projects = sheet.expense_line_ids.mapped('project_id')
# more per-row work…Illustrative Odoo ORM pattern (anonymized). Same idea shows up in batch petty-cash and sheet review paths: fewer round-trips, clearer hot paths.