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.

Zooniverse is configured through a .env file in the project root. The init.bat script generates this file automatically during first-time setup, but you can adjust any value at any time and restart the development server to apply changes. This page covers the settings that affect day-to-day use of the application.

Environment variables

The following .env keys are the ones you are most likely to need to change:

APP_NAME

The name of the application as shown in the browser tab and any outgoing emails.
APP_NAME="Zooniverse"

APP_URL

The full URL where the application is accessible. Used when generating links inside the application. When running the built-in development server this should match the address and port printed by php artisan serve.
APP_URL=http://localhost:8000

APP_TIMEZONE

The timezone used for all date and time operations, including the born_at field on animals and the feeding_time field on enclosures. Accepts any PHP-supported timezone string.
APP_TIMEZONE=UTC
Set APP_TIMEZONE to your local timezone so that birth dates and general date operations display in the correct local time.
Feeding task calculations on the homepage are evaluated in the Europe/Budapest timezone regardless of APP_TIMEZONE. This is hardcoded in HomeController using Carbon::now('Europe/Budapest').

DB_CONNECTION

The database driver. Zooniverse defaults to sqlite, which requires no additional database server. The SQLite file is created at database/database.sqlite by the init.bat script.
DB_CONNECTION=sqlite
To switch to MySQL or PostgreSQL, update DB_CONNECTION and add the corresponding DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, and DB_PASSWORD values. You will then need to re-run migrations with php artisan migrate.

FILESYSTEM_DISK

Controls where uploaded files are stored. The default local driver stores files inside storage/app/. Animal photos are placed in storage/app/public/images/.
FILESYSTEM_DISK=local

Development server

Start the local development server with:
php artisan serve
The server starts on port 8000 by default and the application is accessible at http://localhost:8000. To use a different port, pass the --port option:
php artisan serve --port=8080
The init.bat script runs php artisan serve as its final step, so the server is already running after a fresh setup on Windows. On other platforms you will need to start it manually.

Image storage

Animals can have a photo uploaded when they are created or edited. Uploaded images are stored on disk at:
storage/app/public/images/
They are served from the browser at:
/storage/images/<image_name_hash>
This works through a symlink that maps public/storage to storage/app/public. Create the symlink by running:
php artisan storage:link
Without the storage symlink, uploaded animal photos will not appear in the interface even though the files are saved on disk. Run php artisan storage:link once after installation. The init.bat script does this automatically.
The image_name column on the animals table stores the original filename, and image_name_hash stores the hashed filename actually written to disk. This prevents filename collisions when multiple animals share a common photo name.

Dark mode

Zooniverse includes a built-in dark mode toggle in the navigation bar. No environment variable or configuration change is required — users can switch between light and dark themes at any time directly in the UI.

Tech stack

LayerTechnology
Backend frameworkLaravel 12.x
PHP version8.2 or higher
FrontendBootstrap 5 (CDN)
DatabaseSQLite (default)
AuthenticationLaravel Breeze
Laravel Breeze provides the login, registration, and password-reset screens. The admin boolean column on the users table is a Zooniverse-specific addition that controls access to admin-only areas such as user management.

Build docs developers (and LLMs) love