← Back to projects

Grandvalira Sede

live

Internal employee directory platform with role-based access control

intranetfullstackrbac
Grandvalira Sede

The Problem

Managing employee information across an organization requires secure access controls. Different roles need different permissions: regular employees browse, moderators edit, admins manage the system.

My Role

Fullstack Developer — Built the complete platform:

The Solution

A secure internal platform for employee directory management:

  1. Employee Directory — Searchable, filterable employee profiles
  2. Role-Based Access — USER, MODERATOR, ADMIN permission levels
  3. Custom Auth — JWT tokens with embedded role claims
  4. CRUD Operations — Create, read, update, delete based on permissions
  5. Security First — CORS control, JWT verification, RBAC enforcement

Technical Architecture

Frontend

LayerTechnology
FrameworkNext.js App Router
UIReact 19 + Tailwind CSS
TestingVitest + React Testing Library

Backend

LayerTechnology
RuntimeNode.js
FrameworkExpress
ORMPrisma
DatabasePostgreSQL
TestingJest + Supertest

Security

FeatureImplementation
AuthenticationCustom JWT
AuthorizationRBAC (Role-Based Access Control)
API SecurityCORS control
Token VerificationMiddleware-based JWT validation

Role System

USER        → Read access to directory
MODERATOR   → Read + Edit employee profiles
ADMIN       → Full access + User management

Key Decisions

Custom JWT vs Auth Library

Decision: Built custom JWT auth instead of using NextAuth or similar.

Reasoning:

Prisma for ORM

Decision: Prisma over raw SQL or other ORMs.

Reasoning:

Separate Frontend/Backend

Decision: Next.js frontend + Express backend instead of Next.js API routes.

Reasoning:

Testing Strategy

Frontend:

Backend:

What I Learned