Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/astrxnomo/tourify/llms.txt

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

Content Resources

Cities, Categories, Places, and Events are each managed through standard Laravel resource controllers registered under the /admin prefix. Every resource exposes the full CRUD cycle: list, create, edit, and delete — all scoped behind the auth + is_admin middleware.
Deleting a city cascades to all of its associated places and events. Make sure you intend to remove all child content before deleting a city.
URL: /admin/citiesCities are the top-level geographic containers for all places and events in Tourify. Each city can have one cover image stored under images/cities/ in the public disk.

Listing Cities

Navigate to /admin/cities to see all cities sorted alphabetically by name.

Creating a City

Go to /admin/cities/create and fill in the following fields:
FieldRequiredNotes
name✅ YesMax 255 characters
country✅ YesMax 255 characters
descriptionNoFree-form text
imageNoImage file, max 4 MB — stored in images/cities/
POST /admin/cities
Content-Type: multipart/form-data

name=Buenos Aires
country=Argentina
description=Capital and largest city of Argentina.
image=<file>

Editing a City

Navigate to /admin/cities/{city}/edit. The form pre-populates all existing fields and displays the current image. Uploading a new image replaces the old one (the old file is deleted from storage).

Deleting a City

Click Delete on any city from the index page. The city record, its image file, and all associated places and events are permanently removed.
Deleting a city is irreversible and will cascade — all places and events linked to that city will also be deleted.

Moderating Reviews

URL: /admin/reviews The reviews section lets admins monitor and moderate all user-submitted reviews across the platform.

Viewing Reviews

Navigate to /admin/reviews to see all reviews in reverse chronological order. Each row includes:
  • The user who submitted the review (eager-loaded via Review::with(['user', 'reviewable']))
  • The reviewable entity — the place or event being reviewed
  • The review content and submission timestamp

Deleting a Review

To remove an inappropriate or spam review, click Delete next to the entry. This sends:
DELETE /admin/reviews/{review}
The review is permanently deleted and you are redirected back to the index with a success message.
Reviews can only be deleted, not edited, from the admin panel. If a review needs correction, delete it and ask the user to resubmit.

Push Notifications

URL: /admin/notifications The notifications section allows admins to broadcast push notifications to all registered app users simultaneously. Notifications are persisted in the database and also dispatched to devices via the Expo Push Service.

Viewing Sent Notifications

Navigate to /admin/notifications to see the most recent 100 notifications, each shown with the recipient user and timestamp.

Sending a Broadcast Notification

1

Open the create form

Navigate to /admin/notifications/create or click Send Notification from the index page.
2

Fill in the notification details

Provide the following fields:
FieldRequiredNotes
title✅ YesMax 255 characters — shown as the push notification headline
message✅ YesThe notification body text
3

Submit the form

Click Send. The controller:
  1. Inserts one Notification database record per user (bulk insert via Notification::insert()).
  2. Collects all non-null push_token values from the users table.
  3. Posts a batch payload to https://exp.host/--/api/v2/push/send via Laravel’s HTTP client.
POST /admin/notifications
Content-Type: application/x-www-form-urlencoded

title=New Places Added!
message=Check out the latest attractions added to your city.
4

Confirm delivery

The panel redirects to the index page with a success message showing how many users received the notification, e.g. “Notificación enviada a 342 usuario(s).”
Push delivery is best-effort. If the Expo Push Service request fails (network error, invalid tokens, etc.), the in-app notification records are still persisted in the database and will appear in the user’s notification inbox inside the mobile app. Only the device push alert is affected.
Users without a registered push_token (i.e. they never granted push permission or the token has not been synced) will still receive the in-app notification record — they just won’t get a device banner.

Build docs developers (and LLMs) love