Skip to content
YuzuAtelier

01 · 2024 · Founder-built

Internal Company Management System

A full-stack internal system covering employees, teams, roles, tasks and activity history, built to explore how much of an organization's daily operation can live in one coherent place.

Problem

Internal operations in small organizations tend to fragment across spreadsheets and chat. The interesting engineering problem is not any single module, but keeping permissions, history and structure consistent across all of them.

Objectives

  • Model an organization: people, teams, departments and roles
  • Enforce permissions consistently at every layer
  • Record a reliable activity history for every change
  • Keep the interface fast enough for daily use

Approach

The data model came first. Roles, permissions and organizational structure were designed before any screen, so that access control could be enforced at the data layer rather than patched into the interface.

UX / UI

A dense but calm administrative interface: consistent table patterns, a single detail-panel convention, and destructive actions that always require a deliberate second step.

Features

  • Employee, team and department records
  • Role and permission management
  • Task assignment and status tracking
  • Document attachment against records
  • Activity log for every mutation
  • Notification and reporting views

Interface preview

Gallery

Organization overview

People, teams and departments

Permission matrix

Roles mapped to capability

Activity log

Every change, attributed

Engineering

Server-side authorization on every query, an append-only activity log, and a normalized schema that allows organizational structure to change without rewriting historical records.

Architecture

  • Relational schema with organization-scoped keys
  • Authorization enforced at the data access layer
  • Append-only activity log table
  • Server-rendered application shell with client interactivity

Technology

  • TypeScript
  • React
  • Node.js
  • PostgreSQL
  • Tailwind CSS

Challenges

Permissions that stay correct

Checking permissions in the interface is easy and wrong. Moving every check to the data layer took longer but removed an entire category of bug.

History without noise

Logging everything produces an unreadable log. Deciding what constitutes a meaningful event was a design problem, not a technical one.

Outcome

An independently built, working system that demonstrates our approach to permissions, auditability and operational interface design. It is a founder-built project, not a client deployment.

Have something worth building?

Tell us what you're trying to build, improve or solve. We'll tell you honestly whether we're the right studio for it.