
Context
LocalPlanner is a deployed application with configurable business branding. The screenshot shows the live sign-in experience for one configured business without exposing credentials or operational records.
Business problem
Small teams often coordinate shifts, cover, tasks and time-off requests through messages and spreadsheets. That creates conflicting versions, missed changes and limited visibility for staff.
Users and roles
Managers and administrators maintain staff, rotas, tasks, settings and approvals. Staff members see their own shifts, request time off, receive relevant reminders and connect calendar feeds.
Requirements
- Provide admin and staff access with protected role boundaries
- Make weekly rotas usable on desktop and mobile
- Support repeating patterns and one-off cover shifts
- Connect time off, tasks, reminders and rota totals
- Provide printable rotas and calendar-sharing options
Solution
LocalPlanner combines weekly rota planning, reusable rota patterns, staff access, task tracking, time-off approval, reminders, reporting and calendar tools in one responsive application. Business names, logos, opening hours and planning rules are configurable.
Technology
Implemented technology
- React
- Vite
- Node.js
- Express
- PostgreSQL
- Tailwind CSS
Planned for a future version
- Multi-tenant SaaS controls
- Expanded automated end-to-end testing
Architecture
A React and Vite frontend communicates with a Node.js and Express API. Production data is stored in PostgreSQL, while SQLite remains available for local development. Server-side sessions, protected API routes and a service worker support authenticated use and installable PWA behaviour.
Security considerations
- HTTP-only session cookies with secure production settings
- Rate-limited login attempts
- Forced password change after temporary credentials or reset
- Server-side admin and staff role checks
- Private per-user calendar tokens and protected operational data
Accessibility considerations
- Responsive layouts for desktop and mobile use
- Labelled forms with clear validation feedback
- Text labels alongside status and action styling
- Touch-friendly controls for common rota workflows
- Print-friendly weekly rota output
Key decisions
- Keep operational rules in the API rather than relying only on the interface
- Use server-side sessions instead of exposing authentication tokens to browser storage
- Separate repeating rota patterns from one-off cover shifts
- Keep configurable warnings advisory rather than presenting them as legal or payroll advice
Trade-offs
- A feature-rich rota view requires simpler mobile presentation and focused actions
- PWA push and calendar feeds improve reminders but depend on browser and device behaviour
- Split frontend and API hosting adds deployment configuration while allowing each service to scale independently
Current status
This project is currently live. The public link opens the authenticated application; access to operational features remains restricted to authorised users.
Challenges
The main challenge was connecting rota changes, time off, tasks, notifications and calendar output without creating conflicting sources of truth. Authenticated requests also need reliable cookie and cross-origin behaviour across split production services.
Outcomes and measurement
LocalPlanner is deployed at a custom domain with configurable business branding and working admin and staff sign-in flows. The live product demonstrates an end-to-end full-stack implementation without inventing productivity or adoption claims.
Lessons learned
Operational software becomes useful when exceptions are designed as carefully as the normal path. Cover shifts, rejected time off, changed notes, reminder delivery and recovery steps all need explicit behaviour.