Shifty

Scheduling software built around the people doing the work

Shifty is a schedule management tool for small businesses that run on flexible, variable working hours. The premise is simple: most scheduling tools are built from the manager's perspective down. They're designed for control, not collaboration. Shifty inverts that assumption: managers define the shifts that need to be covered and employees take an active role in claiming and trading them.

It is targeted at small teams with a mix of part-time and variable-hours staff, where nobody's schedule is the same week to week, and where the overhead of a static rota creates more friction than it solves. Shifty keeps that coordination lightweight without sacrificing visibility for whoever's running the floor.


Shifty — schedule overview
Shifty — shift claim view
Shifty — swap request flow

Shifty operates on a two-role model

Managers create shifts, each defined by a date, start and end time, and any notes relevant to that slot. They can see which shifts are filled, which are pending, and who has claimed what. Employees log in to a view of the upcoming schedule, see open slots, and claim the ones that work for them. If plans change, they can release a shift back into the pool or initiate a swap request with a specific colleague.

The swap flow is the core of Shifty's collaborative logic. An employee proposes a trade; the other party accepts or declines; the manager retains oversight without having to broker every individual change. The result is a scheduling system that stays accurate and up to date without requiring a manager to intervene every time someone's availability shifts.

A separated architecture designed for clarity and extensibility

Shifty is built as two independent applications connected by a REST API. The backend, running on Node.js with Express 5, handles authentication, data persistence, and all business logic. MongoDB, accessed through Mongoose, stores the three core data models: users (with their role, credentials, and team membership), shifts (with timing, status, and assignment), and swap requests (with proposer, recipient, and approval state). Sessions are managed with JSON Web Tokens, and passwords are hashed with bcryptjs before storage.

The frontend is a React 19 single-page application built with Vite, using React Router for client-side navigation and Axios for API communication. The component structure mirrors the role split: manager-facing views give full schedule visibility and shift creation controls, while employee views are scoped to what's relevant for that user: their upcoming shifts, available open slots, and any pending swap requests they're involved in. Protected routes enforce this separation on the client side, with JWT validation on every API request enforcing it on the server.

The separation of concerns between the two repos enables an independently testable API and allows for different frontends (a mobile client, a web interface customized to adapt to changing use cases) to connect to the same endpoints without any changes or disruptions to the backend.


Solving a scheduling problem via transferable patterns

Shifty grew directly out of research I had done for my BA thesis where I looked at how small independent businesses manage operational logistics. The scheduling problem was the clearest example of a common problem: tools available to a team of this size were either too simple to be useful or too complex to be adopted. The friction was obvious here and a relatively modest piece of software could make a real difference day to day.

Building it end to end gave me a concrete understanding of where complexity lives in a full-stack application. API design, authentication flows, React state management and production deployment were a formidable set of engineering challenges that taught me a lot. Thinking through what each role should and shouldn't be able to see, and translating that into an interface that felt right to the user, required me to dive deep into the roles I was building for.


Starting with a real operational problem, modelling it carefully, and building software that maps cleanly onto how people actually work is the same approach I bring to all client projects. If Shifty itself looks like a fit for your team, or if you're facing a different challenge that could use this kind of thinking, reach out and let's talk.

Work With Me