Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| pub:development [25.09.2024 12:24] – ↷ Page moved from development to pub:development Predrag Tasevski | pub:development [14.07.2026 09:12] (current) – [Tools and Technologies] add AI / LLM Predrag Tasevski | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Introduction to Development ====== | ====== Introduction to Development ====== | ||
| - | At Unicis, our development process is the backbone of creating secure and compliant solutions. This section | + | At Unicis, our development process is the backbone of creating secure, accessible, |
| + | |||
| + | <WRAP info> | ||
| + | **Last updated:** 2026-06-12 — UX/UI Redesign, Dashboard & Accessibility release (Direction B design system, WCAG 2.1 AA, 7-locale i18n, responsive design).\\ | ||
| + | Full testing and accessibility procedures: [[pub: | ||
| + | </ | ||
| ====== Development Philosophy and Approach ====== | ====== Development Philosophy and Approach ====== | ||
| Line 7: | Line 12: | ||
| [[https:// | [[https:// | ||
| - | ++++ Iterative, incremental, | + | ++++ Iterative, incremental, |
| - | Agile development | + | Agile methodologies divide product development into sprints |
| ++++ | ++++ | ||
| - | ++++ Efficient and face-to-face communication | | + | ++++ Efficient and face-to-face communication | |
| - | The [[https:// | + | The sixth principle of the Agile Manifesto stresses face-to-face conversation. Each team should have a customer representative (product owner) to answer questions and align priorities. |
| ++++ | ++++ | ||
| - | ++++ Very short feedback loop and adaptation cycle | | + | ++++ Very short feedback loop and adaptation cycle | |
| - | In agile development, | + | Daily stand-ups (15 minutes) |
| ++++ | ++++ | ||
| - | ++++ Quality focus | | + | ++++ Quality focus | |
| - | Agile development often employs tools and techniques like continuous | + | Continuous |
| ++++ | ++++ | ||
| Line 26: | Line 31: | ||
| ====== Development Team Structure ====== | ====== Development Team Structure ====== | ||
| - | ^Role ^Responsibilities | + | ^Role ^Responsibilities ^ |
| - | |Developers|Agile developers are in charge of writing | + | |Developers|Write and test code, participate in code review, meet accessibility and i18n requirements, maintain |
| - | |Designers |Designers in agile development create user interfaces, make sure everything works well for users, work with developers | + | |Designers |Maintain the Direction B design system, produce responsive UI, validate WCAG 2.1 AA contrast |
| - | |DevOps | + | |DevOps |
| - | |Test / QA |The job of a test/QA person is to make plans for testing, find and report bugs, make sure the software works well, work with other developers, check fixes, and keep getting better | + | |Test / QA |Write Jest unit tests and Playwright E2E suites, run accessibility audits, verify responsive behaviour |
| ====== Development Process ====== | ====== Development Process ====== | ||
| - | ++++ Project | + | ++++ Sprint |
| - | A process that changes constantly | + | Detailed planning of tasks ensuring alignment with project goals and acceptance criteria — including accessibility |
| ++++ | ++++ | ||
| - | ++++ Roadmapping | + | ++++ Code Review |
| - | Aligns long-term goals with development milestones. | + | Peer reviews to maintain high code quality. Every pull request must pass TypeScript type-checks, ESLint, and the full automated test suite before merge. |
| ++++ | ++++ | ||
| - | ++++ Sprint Planning | + | ++++ Testing |
| - | Detailed planning | + | Combination |
| ++++ | ++++ | ||
| - | ++++ Code Review and Quality Assurance | + | ++++ CI/CD Pipeline |
| - | Work together to check the code to make sure it follows the rules, finds problems early, and keeps the software good all the time. | + | GitLab CI (primary) / GitHub Actions (Community Edition): runs tsc --noEmit, ESLint, Jest unit tests, and Playwright E2E on every pull request. Deployment via CapRover. See [[pub: |
| ++++ | ++++ | ||
| - | ++++ Code Review | | ||
| - | Peer reviews to maintain high code quality. | ||
| - | ++++ | ||
| - | ++++ Testing | | + | ====== Accessibility Standards — WCAG 2.1 AA ====== |
| - | Combination of automated and manual testing to ensure functionality, | + | |
| - | ++++ | + | |
| - | ++++ Continuous Integration/ | + | WCAG 2.1 Level AA is a **hard requirement** for all new and redesigned pages. Accessibility is treated as a first-class requirement, |
| - | Methodology that makes it easier to integrate, test, and deploy code changes. | + | |
| - | ++++ | + | |
| - | ++++ CI/CD Pipeline | | + | ===== Core Requirements ===== |
| - | Automated testing and deployment processes to ensure quick and reliable delivery. | + | |
| - | ++++ | + | |
| + | ^ Criterion ^ Requirement ^ Standard ^ | ||
| + | |Language attribute|Every page sets `<html lang>` from the SSR locale.|3.1.1| | ||
| + | |Colour contrast|Minimum 4.5:1 for normal text; 3:1 for large text and UI components.|1.4.3 / 1.4.11| | ||
| + | |Keyboard navigation|All interactive elements reachable and operable via keyboard.|2.1.1| | ||
| + | |Focus indicators|Visible focus ring on all focusable elements.|2.4.7| | ||
| + | |Touch targets|Minimum 44 × 44 CSS px for all interactive controls.|2.5.5| | ||
| + | |ARIA roles|Correct roles on tabs (tablist/ | ||
| + | |Form labels|All inputs have label or aria-label; errors use aria-invalid + aria-describedby.|3.3.1 / 3.3.2| | ||
| + | |Modal dialogs|Focus moves to modal on open; Tab trapped inside; Escape closes; focus returns on close.|2.4.3| | ||
| + | |Icons / images|Decorative icons carry aria-hidden=" | ||
| + | |External links|Include (opens in new tab) as sr-only text.|2.4.4| | ||
| - | ====== Tools and Technologies ====== | + | ===== Implemented in 2026-06-12 Release |
| - | ===== Programming Languages and Frameworks ===== | + | * <html lang> set from SSR locale on every page |
| + | * Chart.js canvases wrapped in role=" | ||
| + | * Mobile sidebar rewritten as accessible dialog: role=" | ||
| + | * Dashboard tab bar: full ARIA tab pattern (tablist, tab, tabpanel) | ||
| + | * Notification bell aria-label is dynamic with unread count; badge carries aria-hidden | ||
| + | * Webhook form: fieldset+legend for events; aria-invalid, | ||
| + | * All icon-only buttons carry aria-label; active domain health cards carry aria-pressed | ||
| + | * Content text colour raised to text-slate-500 across all key areas to meet 4.5:1 contrast ratio | ||
| - | Our stack includes Development Tools: Version control, project management, team communication, | + | See [[pub:development: |
| - | CI/CD Tools: | ||
| - | ====== | + | ====== |
| - | <WRAP info> | + | All modules use the **Direction B** design language. The `design.md` file in the repository root is the authoritative reference. |
| - | Ensures clarity, facilitates onboarding, and maintains consistency. </ | + | |
| - | ===== Types of Documentation | + | ===== Principles |
| - | Our organization has a lot of different needs and audiences. Internally, we maintain comprehensive technical documentation that is specifically tailored for developers, ensuring clarity and guidance throughout the development process. For end-users, we offer user-friendly guides and manuals that simplify product understanding and usage. Our API documentation is comprehensive, ensuring seamless integration with third-party developers. To ensure quality, we prioritize regular updates and thorough reviews, ensuring all documentation remains current, accurate, and valuable to our stakeholders | + | * **Calm |
| + | * **Consistent token set** — use Tailwind tokens (slate-*, ub-blue, ub-green, ub-purple, ub-amber, ub-red); never hardcode hex values | ||
| + | * **Dark mode** — every component must look correct in both light and dark mode | ||
| + | * **Responsive by default** — verify at 375 px (mobile), 768 px (tablet), | ||
| - | ====== Best Practices and Standards ====== | + | ===== Key Component Patterns |
| - | ===== Coding Standards ===== | + | ^Pattern^Guidance^ |
| + | |Page shell|bg-white dark: | ||
| + | |Table headers|text-[11px] font-semibold uppercase tracking-wider text-slate-500| | ||
| + | |Multi-step dialogs|Sticky footer: flex flex-col overflow-hidden on DialogContent; | ||
| + | |Task picker|Use Combobox (not Select) — provides search, truncation, and Radix portal| | ||
| + | |Buttons|Shadcn Button — do not use DaisyUI btn classes in new code| | ||
| + | |Tables|Nested pattern: overflow-hidden rounded-xl outer / overflow-x-auto inner| | ||
| - | Adhering to consistent coding practices is fundamental in maintaining code quality and readability across our development teams. By following established guidelines and conventions, | ||
| - | ===== Security Practices | + | ====== Internationalisation (i18n) ====== |
| - | Security is paramount in safeguarding sensitive data and ensuring compliance with industry regulations. Implementing robust security measures, such as encryption protocols, access controls, and regular security audits, helps mitigate risks and protect our systems from potential vulnerabilities. | + | Unicis Platform supports **7 locales**: English (en), French (fr), German (de), Spanish (es), Italian (it), Japanese (ja), Portuguese (pt). Italian, Japanese, and Portuguese were added in the 2026-06-12 release with 880+ keys per language. |
| - | ===== Performance Optimization | + | ===== Rules for Developers |
| - | Optimizing performance involves employing techniques like code refactoring, caching strategies, and efficient algorithms to enhance system responsiveness and resource utilization. By continually monitoring and optimizing our applications, | + | * Never hardcode English strings in components — always use t(' |
| + | * Namespace prefix syntax (t(' | ||
| + | * Every page must list in serverSideTranslations all namespaces needed by any dialog it can open | ||
| + | * New keys must be added to **all 7 locale files** before the PR is merged | ||
| + | * Use {{count}} | ||
| - | ===== Scalability Considerations | + | ===== Page Namespace Reference |
| - | Ensuring scalability involves designing our systems to handle increasing workloads and user demands without compromising performance or reliability. Through scalable architecture patterns, load testing, and cloud infrastructure | + | ^Page^Required namespaces^ |
| + | |rpa.tsx|common, rpa, tia, pia| | ||
| + | |tia.tsx|common, | ||
| + | |pia.tsx|common, | ||
| + | |csc.tsx|common, | ||
| + | |risk-management.tsx|common, rm| | ||
| + | |iap/index.tsx + iap/ | ||
| - | ===== Additional Resources ===== | ||
| - | For further best practices, we adhere to the principles outlined in the [[https:// | + | ====== Tools and Technologies ====== |
| - | ====== Training and Development ====== | + | ^Layer^Technology^ |
| + | |Framework|Next.js (Pages Router), TypeScript| | ||
| + | |Styling|Tailwind CSS v4 JIT with custom design tokens| | ||
| + | |Components|Shadcn/ | ||
| + | |Data fetching|SWR (all mutate() calls must be awaited)| | ||
| + | |ORM / DB|Prisma + PostgreSQL| | ||
| + | |Auth|BoxyHQ (SSO/ | ||
| + | |i18n|next-i18next (7 locales)| | ||
| + | |Unit tests|Jest| | ||
| + | |E2E tests|Playwright| | ||
| + | |CI/ | ||
| + | |AI / LLM|Meta-Llama-3.3-70B-Instruct (OVH AI Endpoints)| | ||
| - | ===== Onboarding ===== | + | See [[pub: |
| - | We prioritize comprehensive processes for integrating new developers into our team, ensuring they receive the necessary resources, training, and introductions to our workflows and tools. | ||
| - | ===== Ongoing Training | + | ====== Documentation ====== |
| - | Continued education and skill enhancement are facilitated through ongoing training programs that cover emerging technologies, industry best practices, and specialized areas relevant to our team’s goals and projects. | + | <WRAP info> |
| + | **Importance of Documentation**\\ | ||
| + | Ensures clarity, facilitates onboarding, and maintains consistency. | ||
| + | </ | ||
| - | ===== Knowledge Sharing ===== | + | * **API docs** — maintained in openapi/ |
| + | * **Design system** — design.md in the repository root is the authoritative Direction B reference | ||
| + | * **Handbook** — this wiki; updated with every major release | ||
| - | We foster a collaborative environment by actively encouraging information exchange among team members. This includes regular meetings, workshops, and platforms for sharing insights, experiences, | ||
| - | ====== | + | ====== |
| - | ===== Gathering Feedback | + | ===== Coding Standards |
| - | To maintain alignment with user expectations and stakeholder needs, we employ robust mechanisms | + | No hardcoded English strings. No inline hex colours — use design tokens. No backwards-compatibility shims for removed code. No fire-and-forget mutate() calls — always await. |
| - | ===== Incorporating Feedback | + | ===== Accessibility |
| - | Feedback loops are integral to our development process, enabling us to iteratively update and improve our products. We prioritize actioning feedback promptly to address issues, refine features, and enhance overall user satisfaction. | + | WCAG 2.1 AA is a hard requirement. Run the [[pub: |
| - | ===== Continuous Improvement | + | ===== Responsive Design |
| - | We are committed to ongoing refinement of our processes and products. Through retrospectives, metrics analysis, and proactive problem-solving, | + | Verify at 375 px, 768 px, and 1280 px before merge. Tables must scroll horizontally; |
| - | ====== Future Trends and Innovations ====== | + | ===== Security Practices |
| - | ===== Industry Trends ===== | + | Encryption, access controls, and regular security audits. We follow [[https:// |
| - | Staying ahead of industry trends and regulatory changes is essential. We invest in monitoring and analyzing market shifts, technological advancements, | + | ===== Additional Resources ===== |
| - | ===== New Technologies | + | * [[https:// |
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[pub: | ||
| + | |||
| + | |||
| + | ====== Release Process ====== | ||
| + | |||
| + | ===== Pre-release Checklist ===== | ||
| + | |||
| + | - [ ] New features have Jest unit tests; API endpoints have handler-level tests | ||
| + | - [ ] E2E Playwright test added for critical user flows | ||
| + | - [ ] WCAG 2.1 AA checklist passed (see [[pub: | ||
| + | - [ ] Verified at 375 px, 768 px, and 1280 px viewports | ||
| + | - [ ] All 7 locale files updated for new translation keys | ||
| + | - [ ] npx tsc --noEmit --skipLibCheck passes with no errors | ||
| + | - [ ] CHANGELOG updated | ||
| + | |||
| + | ===== Release History ===== | ||
| + | |||
| + | ^Release^Date^Highlights^ | ||
| + | |UX/UI Redesign, Dashboard & Accessibility|2026-06-12|Direction B design system, WCAG 2.1 AA, IT/JA/PT locales added (880+ keys each), 62 Jest tests, 3 Playwright E2E suites, responsive design across all modules, KPI dashboard row, billing redesign| | ||
| + | |Tasks|2026-05-31|Task import templates from CSC controls, Kanban board, CSC control status dialog| | ||
| + | |||
| + | |||
| + | ====== Training and Development ====== | ||
| + | |||
| + | New developers must read design.md (Direction B design system) and [[pub: | ||
| + | |||
| + | |||
| + | ====== Feedback and Improvement ====== | ||
| - | Exploration | + | We collect feedback through surveys, usability tests, |
| - | ===== Encouraging Innovation ===== | ||
| - | We nurture a culture of innovation by empowering team members to propose and experiment with new ideas. This includes dedicated time for research and development, cross-functional collaboration, | + | {{tag> |