DutyDuke
Open-source, self-hosted HR management platform for small and mid-sized companies.
DutyDuke is an HRIS (Human Resource Information System) built with Next.js 15, TypeScript, Prisma, and PostgreSQL, following Clean Architecture principles with Domain-Driven Design.
Features
- Employee Management — profiles, onboarding, employment history, skills, education
- Absence Management — leave requests, approval workflows, calendar view, iCal export
- Document Management — upload, categorize, track expiration dates, assign to employees
- Equipment Tracking — inventory management, assignments, changelog
- Benefits Administration — create and assign benefit plans
- Performance Feedback — schedule and track feedback sessions
- Role-Based Access Control — granular permissions per resource, action, and scope
- CV Generation — export employee profiles as PDF
- Multi-language Support — English and Polish (via next-intl)
- Field-Level Encryption — sensitive data encrypted at rest
- Email Notifications — configurable SMTP with template support
Tech Stack
| Layer | Technology |
|---|---|
| Framework | Next.js 15, React 18, TypeScript |
| Database | PostgreSQL 16 + PostGIS |
| ORM | Prisma 5 with field-level encryption |
| Authentication | JWT with role-based access control |
| UI | Tailwind CSS, React Aria Components |
| Validation | Zod |
| Nodemailer | |
| Logging | Pino |
| i18n | next-intl |
Quick Start
git clone https://github.com/Bitnoise/dutyduke.git
cd dutyduke
yarn install
cp .env.dist .env
# Edit .env — set PRISMA_FIELD_ENCRYPTION_KEY and JWT_SECRET
docker compose up -d
yarn prisma:generate && yarn prisma:migrate && yarn prisma:seed
yarn create:owner admin@example.com YourPassword123 John Doe
yarn organization:create "My Company"
yarn dev
Open http://localhost:3000 and sign in with your admin credentials.
For detailed setup instructions, see the Installation Guide.