Backend
Web
Mobile
2025 – Present
Full-Stack · NestJS · React · React Native
OneBMS (One Business Management System) is a comprehensive, cloud-based HR and business management platform for modern organisations. It centralises all core operations - from hiring and onboarding to invoicing and project management - into a single, unified system available on web and mobile.
The platform spans 37+ modules across human resources, recruitment, finance, project management, client management, and company configuration. As co-founder and lead developer, I designed the architecture and built the majority of the stack - the NestJS backend API, the React web dashboard, and the React Native mobile app — working alongside a small team.
Employee profiles, leave management, attendance tracking, contracts, custom HR fields, work hours, department management, and office duty rotation.
End-to-end applicant tracking pipeline with Kanban board, candidate database, interview scheduling, job offers, and scheduled rejection emails via Bull queue.
Invoicing system with PDF generation (Puppeteer), expense tracking, refund management, work hours billing, and a salary calculator with tax configuration.
Project management with team assignment, task boards, time tracking, client visibility, and team contribution tracking across all assigned projects.
Full review cycle with KPI expectations, rating scales, 360 feedback, electronic sign-off, monthly 1:1 meetings, calendar integration, and Excel export.
Push notifications (Expo SDK), email (Nodemailer + Handlebars), Slack integration, and in-app notifications with per-user configurable rules.
Built with NestJS 10 and TypeScript following a strict module-per-domain architecture. Data lives in MySQL via TypeORM; background jobs and email delivery run through Bull Queue (Redis). PDF generation uses Puppeteer; image processing uses Sharp with four thumbnail sizes.
Auth supports JWT (15m access / 30d refresh with token rotation), Google OAuth, and Apple Sign-In. The web frontend uses HttpOnly cookies; the mobile app uses Bearer tokens stored in secure storage. Every write operation is tracked by an automatic audit log via a TypeORM subscriber. A global ThrottlerGuard enforces rate limiting per endpoint.
The system supports six languages (English, German, Serbian, Spanish, French, Italian) via nestjs-i18n, with all error messages and email templates fully translated. The API is documented with Swagger.
Built with React 18, Vite, and TypeScript. UI components use MUI v6 with a custom light/dark palette. State is managed via Redux Toolkit; forms use React Hook Form + Yup. Tables are built on MUI DataGrid; date handling uses MUI DatePicker + Moment.js. Auth relies on HttpOnly cookies - access tokens are never stored in localStorage.
Built with React Native 0.81 and Expo SDK 54. Navigation uses React Navigation 7 (Stack, Drawer, Bottom Tabs). State is managed by Redux Toolkit; UI components by React Native Paper. Supports Google and Apple Sign-In, push notifications via expo-notifications, and multi-company environment switching.
Backend
Web
Mobile