My Shifts is my personal web application for recording shifts, working time and earnings. It is part of my portfolio, rather than a paid client commission.
What the application handles
- A shift calendar, start/end times and breaks.
- Multiple workplaces with their own pay settings.
- Earnings calculations, manual entries, deductions and tips.
- A shared monthly goal and comparisons between months.
- CSV export and JSON backups.
A few implementation decisions
Planned work is different from completed work
A planned shift belongs on the calendar, but it should not create earnings before the shift is actually started and completed. Keeping these states separate makes the totals easier to understand.
Breaks should be counted once
The running timer tracks break time. For hourly calculations, the total break is deducted once. A fixed payment for a completed shift follows its own rule.
Different currencies should stay separate
The application can show records from multiple workplaces. It does not add amounts in different currencies into a single misleading total.
Local records should survive a connection problem
The frontend uses browser storage and syncs account data through a Node.js server and PostgreSQL. A temporary database failure should not clear the local records. JSON backups and CSV export give users another way to keep their data.
My role
I worked on the product structure, interface, application logic, testing and deployment. The project continues to evolve; the live version is in Russian.
I also create and improve websites and browser applications, fix bugs and add forms and integrations. I communicate in Russian and in written English using translation tools.
Top comments (0)