Bluewoo HRMS

What We DON'T Use

Technologies and patterns explicitly avoided

What We DON'T Use

We avoid complexity that doesn't add value. Simple, boring solutions over clever ones.

Avoid These Patterns

PatternWhy NotUse Instead
Custom pub/sub event systemsDebugging complexity, event ordering issues, hidden dependenciesDirect function calls for sync, BullMQ for async background jobs
Message queues between servicesOverkill for 2 servicesDirect REST calls with JWT
GraphQLAdds schema/resolver complexityREST API
Microservices (mesh, gateway, discovery)Only have 2 servicesSimple monolith + AI service
Complex state management (Redux, Zustand)Server components cover most needsReact Server Components, useState
NoSQL for primary dataHRMS data is relationalPostgreSQL (MongoDB only for AI vectors)
CQRS, Saga, Hexagonal architectureUnnecessary abstractionsSimple 3-layer: Controllers → Services → Repositories
Multiple caching layersCache invalidation nightmareSingle Redis cache with TTL
Shared code libraries between servicesCreates tight couplingCopy-paste, shared types only

Version Policy

  • Use current stable/LTS versions
  • Avoid beta, RC, canary, or experimental versions in production
  • Avoid versions past End-of-Life

Key Principles

  1. Start Simple - Boring technology beats clever solutions
  2. Independence Over DRY - Services should be fully independent
  3. Optimize When Needed - Profile first, then optimize

Specifics to be defined during implementation