STACK

Next JS, TypeScript, Tailwind CSS, TanStack Query, Sentry

TYPE

GreenTech Sustainability Platform

STATUS

Completed

Carus's screenshot
Carus's screenshot

Carus is a waste management and recycling rewards platform that incentivizes environmentally responsible behaviour by turning waste disposal into a rewarding experience. I worked across both the frontend and backend of this project, building the client-facing application, the admin panel, and contributing to the backend API. On the client side, users can schedule waste pickups across multiple categories (plastics, electronics, organics), track their recycling history, and earn reward points redeemable for gift cards, airtime, or cash. The admin panel gives the Carus operations team full visibility over pickup requests, user accounts, partner businesses, and reward redemptions. The frontend is built with TanStack Query for efficient server-state management and synchronization, custom middleware for route protection, React Context for global state, and Sentry for production error tracking.

GOALS

Carus gave me genuine full-stack exposure on a live product, from designing UI components to writing backend API logic. Working with TanStack Query at production scale sharpened my understanding of server-state management, and integrating Sentry revealed how much value real-time error visibility adds to a live app. More broadly, this project deepened my understanding of how to architect platforms that coordinate multiple actors, users, partners, and administrators, each with different data needs and permission levels.

Carus's screenshot
Carus's screenshot

CHALLENGES

The most complex challenge was keeping the reward system consistent across client and server state. Pickup confirmations from the backend needed to immediately reflect in a user's reward balance and history, with TanStack Query cache invalidation strategies that didn't leave users seeing stale data after a status change. Managing the admin panel's data across multiple interconnected business entities (users, pickups, rewards, partners) also required careful query organization to avoid redundant API calls and maintain performance as the dataset grew.

Carus's screenshot
Carus's screenshot

Contact

Interested in working with me?