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.
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