Jeffrey Bernadas

Software Engineer

I build enterprise-grade, responsive digital solutions for the web and mobile โ€” systems that hold up when they're carrying real weight.

Statusโ— Open to interesting work
Local--:--:--
Zone...
Hostself ยท netcup ยท ubuntu 22.04
Back to Projects

Cozy Zen

Description

A multiplayer pixel-art study game and virtual coworking space. Players join a shared realm, customize a character, walk around a hand-crafted town, sit at desks, and study with lo-fi music while seeing other people move around in real time. The world is rendered with PixiJS while all UI runs as a React DOM overlay, backed by a dual-process NestJS server using Socket.IO with a Redis adapter for presence. It is in active development: the multiplayer foundation, character system, map system and editor, movement, interactions, and Pomodoro study sessions are working, with economy, social, and RPG features on the roadmap.

Features

World & Rendering

  • -PixiJS pixel-art world with depth-sorted floor, above-floor, and object layers
  • -Camera with bounds clamping and a free-look mode
  • -React DOM UI overlay layered over the game canvas
  • -TexturePacker sprite-atlas pipeline with crisp nearest-neighbor rendering

Character System

  • -Character creation with layered traits (body, hair, glasses, outfit)
  • -Runtime color tinting for hair, outfit, and skin tone
  • -Live in-dialog character preview

Realms & Maps

  • -Realm and map hierarchy with capacity limits
  • -Sparse JSON tilemaps with floor, above-floor, and object layers
  • -Pokemon-style walk-to-edge map transitions with fade
  • -Admin map editor with visual tilemap editing and draft save/load

Movement

  • -WASD and arrow-key 8-directional movement
  • -Click-to-move with BFS pathfinding
  • -Walk, idle, and sit animations
  • -Server-side movement validation for collision and rate limiting

Multiplayer Presence

  • -Real-time position sync over Socket.IO with a Redis adapter
  • -Online player tracking with per-realm and per-map capacity
  • -Disconnect grace period and stale-session cleanup

Interactions

  • -Interactable tile detection with prompts and highlights
  • -Sitting mechanic and door open/close animations

Study Core

  • -Pomodoro timer with configurable work and break durations
  • -Sessions persisted in Redis and resumed across disconnects
  • -Study session logging with daily aggregation and streak stats
  • -Lo-fi music player with music, SFX, and ambient channels

Platform & Infrastructure

  • -Keycloak OIDC auth with DPoP and sync-on-demand profiles
  • -Runtime system configuration and audit logging
  • -Transactional emails via React Email and Resend
  • -MinIO storage, Elasticsearch logging, and user blocking

Tech Stack

Frontend

  • React 19
  • TypeScript
  • Vite
  • PixiJS 8
  • Tailwind CSS v4
  • Shadcn/ui
  • Redux Toolkit Query
  • Socket.IO Client
  • Motion
  • Zod

Backend

  • NestJS
  • TypeScript
  • Prisma
  • PostgreSQL
  • Redis
  • RabbitMQ
  • Socket.IO

Infrastructure

  • Keycloak
  • MinIO
  • Elasticsearch
  • Kibana

External Services

  • Resend
  • React Email
Jeffrey Bernadas