Direct and group chats that update live, with typing indicators, read receipts, online presence and reactions, all without a page refresh. A Laravel API and WebSocket server sit behind a React 19 and TypeScript app.
Laravel Reverb delivers messages, typing and presence live; Redis holds that short-lived state so it never touches the main database.
Group roles with promote, demote and admin-only actions. Members who leave keep read access to the history up to that point.
PostgreSQL full-text search across message history, and private, short-lived signed URLs for attachments.
Sanctum cookie sessions, Google sign-in and a complete password-reset flow by email.
Light and dark themes, keyboard navigation and screen-reader live regions.
128 backend tests with Pest, CI, and zero-downtime automated deploys to Docker Compose on Oracle Cloud.
Designo
A CMS-driven agency website
A seven-page agency site where every page, menu and label is edited in Strapi instead of being hard-coded. Editors build each page from reusable sections.
Next.js 15
React 19
TypeScript
SCSS + Bulma
Framer Motion
Strapi 4
SQLite
Docker
Caddy
GitHub Actions
The visual design comes from a Frontend Mentor challenge. The build, CMS setup and deployment are my own.