
Places you can count
Each shift is a wristband with a tally on it: one stroke per volunteer, a gate at five. When another volunteer takes a place, the stroke draws itself on your phone too. A full shift says so before you tap.
Every shift covered. Every hand counted.
The live preview on CodeCanyon is this app compiled for the web: the real build, not a video.
A volunteer shift signup app for community events: the organizer posts the shifts and how many people each one needs, volunteers join with a six letter code on their own phones and take a shift with one tap, and the remaining places update on everyone's screen the same second. On the day, check-in and hours live in the same app. Your Firebase project, your brand.

Each shift is a wristband with a tally on it: one stroke per volunteer, a gate at five. When another volunteer takes a place, the stroke draws itself on your phone too. A full shift says so before you tap.

Take this shift is a single press. Two people racing for the last place are settled by a Firestore transaction, so exactly one gets it and the other is offered the waitlist, with the shift's count still right on every screen.

On the day the organizer opens the Door tab and watches wristbands snap closed as volunteers tap I am here. Late arrivals are flagged after a grace period, and every checked-in shift adds its hours to the volunteer's own tally.











# unzip the download, then
$ cd turnora_app
$ flutter pub get
$ flutter run
The app runs on its bundled demo data first. The back end has its own README for Docker and for shared hosting, and the app keeps working without it.
| Screen widgets | 15 |
|---|---|
| Dart files | 163 |
| Tests in the package | 35 |
| Dart SDK | ^3.13.0 |
| Back end | Firebase, with a Laravel admin |
| Platforms | iOS + Android, one codebase |
Counted from turnora-v1.0.zip, the file uploaded to CodeCanyon. Screen widgets are the view, screen and page classes in the source, so the number can differ slightly from a count of routes.
Something else? Ask on the item's CodeCanyon page; the author answers there.
Only the organizer does. Volunteers join with the event code and their name through anonymous sign in, take shifts straight away, and can attach an email later to keep their hours across phones.
Every claim runs as a Firestore transaction that raises the shift's count by exactly one and refuses to pass its capacity, and the security rules that ship with the app enforce the same arithmetic on the server. The documentation has a chapter on exactly where that line sits.
It is a Filament admin panel that reads and edits the same Firebase project from a browser: events, shifts, signups, members and sign in users, plus a push notification page. The app talks to Firebase directly, so the panel is for you, the operator, and it ships with a Docker file and an install script.
Sold on Envato's CodeCanyon marketplace, which handles payment, VAT, invoices and the download.