Agile Dreamers — B2B project management platform
Agile Dreamers · 2022 — 2024 · Junior-Middle Frontend Engineer
- Next.js
- React
- TypeScript
- Redux
- RTK Query
- TanStack Table
- CSS
- Tailwind CSS
- i18next
- Vite
- Feature-Sliced Design
- WebSockets

Context
Agile Dreamers is a B2B project-management platform — companies and projects, members and roles, planning with Gantt charts and calendars, requests, comments and attachments, notifications, and real-time chat — used by teams who are often on flaky mobile networks. I spent two years on it, growing from junior to middle and taking ownership of progressively larger frontend systems.
What I did
- Led the real-time messaging and notification system on WebSockets. It reconnects on its own with exponential backoff and a heartbeat that spots dead connections, and it carries an offline outbox: messages typed while disconnected are queued with client-generated ids, flushed on reconnect and de-duplicated by id, so a dropped connection never loses a message or sends it twice.
- Migrated two high-load operational tables to TanStack Table with row virtualization. Only the visible window of rows is ever in the DOM, so screens that used to freeze on datasets of 5,000+ records now scroll at 60fps, with sorting and filtering moved into memoized column models.
- Built the data layer on RTK Query — one API surface with dozens of endpoints across a dozen domain slices, doing multipart uploads, blob downloads and response unwrapping — behind a custom base query with a mutex that refreshes the JWT exactly once and queues concurrent requests behind it, so a burst of parallel calls can't trigger a refresh storm or bounce the user to sign-in.
- Cut production build time by 60–70% by moving the build to Vite and cleaning up the dependency tree, and structured the whole app in Feature-Sliced Design so features stayed isolated as the team and the surface kept growing.
Outcome
Message delivery became lossless in practice — the "my message disappeared" support tickets went to zero — and the tables that used to lock up now stay smooth on thousands of rows. The faster build shortened every deploy and CI loop for the team, and strict FSD kept two years of growth from turning the codebase into a tangle.