Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/raczkodavid/Zooniverse/llms.txt

Use this file to discover all available pages before exploring further.

Each enclosure in Zooniverse has a dedicated feeding time that serves as a daily task for the caretakers assigned to it. The homepage dashboard surfaces these feeding tasks in real time, showing only the enclosures whose feeding time has not yet passed for the current day. This gives caretakers a focused, time-ordered list of what still needs to be done each day.

How feeding times are stored

The feeding_time column is added to the enclosures table in the migration as a time field:
$table->time('feeding_time');
Values are stored in H:i:s format (24-hour clock with seconds), for example 08:30:00 or 14:00:00. The field is required — an enclosure cannot be created or saved without a feeding time. The feeding time is part of the $fillable array on the Enclosure model:
protected $fillable = [
    'name',
    'limit',
    'feeding_time',
];

Setting and updating feeding times

Admin workflow

Admins set the feeding time when creating or editing an enclosure.
1

Open the enclosure form

Navigate to Create Enclosure (GET /enclosures/create) or open an existing enclosure for editing (GET /enclosures/{id}/edit).
2

Enter the feeding time

Use the Feeding Time input. The form renders an HTML time picker with step="1", which allows selecting hours, minutes, and seconds. The value is submitted in H:i:s format and validated server-side with:
'feeding_time' => 'required|date_format:H:i:s',
3

Save the enclosure

Submit the form. The feeding time is stored immediately and takes effect on the dashboard the same day.
The feeding time is a daily schedule — the same time applies every day. There is no date component; it is a clock time only.

Homepage dashboard

The homepage at GET /homepage is the primary task management view. It is available to all authenticated users and shows:
  • Total Enclosures — a live count of all enclosures in the system, displayed with an animated count-up.
  • Total Animals — a live count of all active (non-archived) animals.
  • Tasks for Today — a list of the current user’s assigned enclosures that still have an upcoming feeding time today.

Feeding task logic

The HomeController computes the task list as follows:
$now = Carbon::now('Europe/Budapest');

$enclosures = auth()->user()->enclosures
    ->filter(function ($enclosure) use ($now) {
        return Carbon::parse($enclosure->feeding_time, 'Europe/Budapest')->isAfter($now);
    })
    ->sortBy(function ($enclosure) {
        return Carbon::parse($enclosure->feeding_time, 'Europe/Budapest');
    });
  1. The current time is captured in the Europe/Budapest timezone.
  2. The authenticated user’s assigned enclosures are retrieved via the many-to-many relationship.
  3. Enclosures whose feeding_time has already passed are filtered out.
  4. The remaining enclosures are sorted ascending by feeding time, so the most urgent task appears first.
Only the enclosures assigned to the logged-in user appear in the task list. Admins will see no tasks unless they have been explicitly assigned to enclosures via the edit form.
The task list in the view renders each remaining enclosure as a clickable item linking to the enclosure detail page:
@foreach($enclosures as $task)
    <a href="{{ route('enclosures.show', $task->id) }}">
        <li class="list-group-item">
            {{ $task->name }} - {{ $task->feeding_time }}
        </li>
    </a>
@endforeach
If all feedings for the day are complete (or no enclosures are assigned), the dashboard displays: “No more tasks for today!”

Caretaker workflow

1

Log in

Caretakers log in with their credentials and land on the application dashboard.
2

Open the homepage

Navigate to Homepage (/homepage). The Tasks for Today panel on the right lists all assigned enclosures whose feeding time is still in the future, ordered from soonest to latest.
3

Visit the enclosure

Click any task in the list to open the enclosure detail page. The page shows the animals in the enclosure along with their species and birthdates.
4

Complete the feeding

After feeding the animals, return to the homepage. Once the feeding time passes, that enclosure drops off the task list automatically on the next page load.
The task list refreshes on every page load. There is no manual “mark as done” action — completed feedings are inferred from the current clock time passing the scheduled feeding_time.
Feeding times are evaluated in the Europe/Budapest timezone. If the server or user is in a different timezone, the displayed and compared times are always normalised to Europe/Budapest to ensure consistent scheduling.

Build docs developers (and LLMs) love