getMessage());
}
// 3. Required Tables
if ($pdo) {
$required_tables = [
'wp_digitalprank_tools', 'wp_digitalprank_usage', 'wp_digitalprank_usage_log',
'wp_pms_member_subscriptions', 'wp_digitalprank_entitlements', 'wp_digitalprank_tool_overrides',
'custom_delivery_history' // Tool-specific table
];
foreach ($required_tables as $table) {
try {
$result = $pdo->query("SELECT 1 FROM {$table} LIMIT 1");
check("Table '{$table}' exists", $result !== false);
} catch (Exception $e) {
check("Table '{$table}' exists", false, $e->getMessage());
}
}
}
// 4. Dependencies Checking
if ($config_data) {
foreach ($config_data['tool']['dependencies']['php_extensions'] as $ext) {
check("PHP extension '{$ext}' loaded", extension_loaded($ext));
}
// Python check is illustrative; running python from php is complex.
// A better check might be for a venv directory.
$venv_path = __DIR__ . '/venv';
check("Python venv directory exists", is_dir($venv_path), "Path: {$venv_path}");
}
// 5. Tool-specific functionality test
if ($pdo && $config_data) {
// This is a simple simulation, not a full processor run.
$test_output = "Timeline with 8 steps. Includes SMS: No.";
check("Tool-specific logic simulation", true, "Generated: " . htmlspecialchars($test_output));
}
// 6. Permissions
check("Directory is writable by web server", is_writable('.'), "Current user: " . get_current_user());
?>
FILE 5: /home/delivery-tracker-prank.digitalprank.com/public_html/help.md
code
Markdown
# Help: Delivery Tracker Tracker
Simulate a custom food delivery with absurd restaurant names, ridiculous items, and chaotic delivery updates. Perfect for pranking your hungry friends.
## Quick Start Guide
Here's how to get your prank running in seconds:
1. **Step 1:** Choose or randomize a restaurant and food item.
2. **Step 2:** Pick a theme and optional recipient name.
3. **Step 3:** Enable map or SMS simulation if desired.
4. **Step 4:** Generate and share the prank delivery tracker!
## Features
- **Custom Restaurant & Food Names (PRO):** Specify your own hilarious restaurant and food items for a personalized prank. If left blank, the tool will pick from a list of absurd options.
- **Custom Recipient Name (PRO):** Add your friend's name to the tracker updates for maximum believability.
- **Live Map Animation (PRO):** Displays a custom map with a driver icon moving towards the destination, complete with silly updates.
- **Custom SMS Updates (PRO):** Shows a simulated text message exchange with the increasingly unhinged delivery driver.
- **Tracker Themes:** Choose from several UI themes to match the mood of your prank:
- **Modern:** A sleek, standard delivery app look.
- **Retro:** A pixelated, old-school computer interface.
- **Fast Food Style:** Bright, bold, and greasy-looking.
- **Scary Delivery:** A horror-themed tracker for a truly cursed meal.
## Frequently Asked Questions (FAQ)
**Q: Is this a real delivery?**
> A: No. This tool is for entertainment only and generates a custom tracker with funny updates. No food will actually be delivered.
**Q: Can I share the prank with friends?**
> A: Yes! After generating, you’ll get a shareable link or screenshot option.
**Q: Can I customize the steps or add delays?**
> A: Not yet — advanced prank flow editing is coming soon for Pro users.
## Usage Examples
### 1. The Wrong Order
Send a delivery for a 'Cold Anchovy Milkshake' from 'Ye Olde Taco Shack'.
- **Restaurant Name:** `Ye Olde Taco Shack`
- **Food Item:** `Cold Anchovy Milkshake`
- **Tracker Theme:** `Retro`
### 2. Cursed Delivery
Make it look like the delivery driver got lost in a graveyard.
- **Restaurant Name:** `Ghost Tacos`
- **Food Item:** `Ectoplasm Burrito`
- **Tracker Theme:** `Horror`
FILE 6: /home/digitalprank.com/public_html/blog/data/tools/delivery-tracker-prank.json
code
JSON
{
"slug": "delivery-tracker-prank",
"name": "Delivery Tracker Tracker",
"meta_title": "Delivery Tracker Tracker | Hilarious Order Updates | DigitalPrank.com",
"meta_description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates. Create your prank now!",
"keywords": ["custom delivery", "food prank", "order tracker", "funny delivery", "digital prank"],
"canonical_url": "https://digitalprank.com/tools/delivery-tracker-prank",
"primary_color": "#FF8C00",
"secondary_color": "#292929",
"short_description": "Create a shareable, animated custom food delivery tracker to prank your friends. Customize everything from the restaurant name to the chaotic delivery updates.",
"long_description": "Ever wanted to trick your friend into thinking their pizza was being delivered by a circus clown? Or that their burrito was delayed by a goose attack? The Delivery Tracker Tracker lets you do just that. Generate a realistic-looking but completely custom delivery screen with a live map, absurd status updates, and even simulated SMS messages from the driver. It's the perfect digital prank for anyone waiting on a real food order.",
"features": [
{
"name": "Customizable Orders (Pro)",
"description": "Enter any restaurant and food item you can imagine. The more ridiculous, the better!",
"icon": "edit"
},
{
"name": "Live Animated Map (Pro)",
"description": "Watch the 'driver' move across a map, encounter strange delays, and get hopelessly lost.",
"icon": "map"
},
{
"name": "Simulated SMS Updates (Pro)",
"description": "Add another layer of realism with custom text messages from your delivery driver.",
"icon": "sms"
},
{
"name": "Multiple Themes",
"description": "Choose from Modern, Retro, Fast Food, or even a spooky Horror theme to set the tone.",
"icon": "palette"
},
{
"name": "Instant Sharable Link",
"description": "Generate your prank and get a unique link to send to your target immediately.",
"icon": "share"
}
],
"user_guide": {
"title": "How to Prank Your Friends",
"steps": [
"Navigate to the Delivery Tracker Tracker tool.",
"For the best results, use the Pro options to enter a custom restaurant and food item that your friend might actually order.",
"Select a theme. 'Modern' is more believable, while 'Horror' is great for a laugh.",
"Click 'Generate Prank Tracker' to get your unique, shareable link.",
"Send the link to your friend and tell them 'Your food is on the way!'"
]
},
"technical_details": {
"frontend": "HTML, CSS, JavaScript (for dynamic form and result display)",
"backend": "PHP 8.1+",
"database": "MySQL for storing prank history",
"dependencies": "Relies on core platform functions for user management and usage tracking."
},
"structured_data": {
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Delivery Tracker Tracker",
"description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates.",
"applicationCategory": "Entertainment",
"operatingSystem": "Any (Web-based)",
"url": "https://delivery-tracker-prank.digitalprank.com",
"publisher": {
"@type": "Organization",
"name": "DigitalPrank.com"
}
}
}
FILE 7: /home/delivery-tracker-prank.digitalprank.com/public_html/deploy.sh
code
Bash
#!/bin/bash
set -e
TOOL_SLUG="delivery-tracker-prank"
TOOL_DOMAIN="${TOOL_SLUG}.digitalprank.com"
TOOL_DIR="/home/${TOOL_DOMAIN}/public_html"
VHOST_CONF_DIR="/usr/local/lsws/conf/vhosts"
DB_NAME="digitalprank_db"
DB_USER="dp_user"
DB_PASS="#$Dealer2355"
echo "--- Starting deployment for ${TOOL_SLUG} ---"
# 1. System & PHP Dependencies
echo "Installing dependencies..."
# Assuming apt-based system
apt-get update
apt-get install -y php8.1-json php8.1-mysql python3-venv
# 2. Directory Structure and Permissions
echo "Creating tool directory at ${TOOL_DIR}..."
mkdir -p ${TOOL_DIR}
chown -R www-data:www-data ${TOOL_DIR}
chmod -R 755 ${TOOL_DIR}
# 3. Python Virtual Environment
echo "Setting up Python virtual environment..."
python3 -m venv ${TOOL_DIR}/venv
source ${TOOL_DIR}/venv/bin/activate
pip install --upgrade pip
pip install flask faker
deactivate
chown -R www-data:www-data ${TOOL_DIR}/venv
# 4. Database Table Creation
echo "Creating database table 'custom_delivery_history'..."
SQL_CREATE_TABLE="
CREATE TABLE IF NOT EXISTS \`custom_delivery_history\` (
\`id\` BIGINT NOT NULL AUTO_INCREMENT,
\`prank_uuid\` VARCHAR(32) NOT NULL UNIQUE,
\`user_id\` BIGINT DEFAULT 0,
\`restaurant_name\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`food_item\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`theme\` VARCHAR(50),
\`delivery_steps_json\` JSON,
\`sms_messages_json\` JSON,
\`created_at\` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (\`id\`),
INDEX \`idx_user_id\` (\`user_id\`),
INDEX \`idx_created_at\` (\`created_at\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"
mysql -u"${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" -e "${SQL_CREATE_TABLE}"
echo "Database table check/creation complete."
# 5. OpenLiteSpeed Virtual Host Configuration
echo "Configuring OpenLiteSpeed virtual host..."
VHOST_CONFIG="
docRoot \$SERVER_ROOT/vhosts/${TOOL_DOMAIN}/public_html/
vhDomain ${TOOL_DOMAIN}
vhAliases www.${TOOL_DOMAIN}
adminEmails admin@digitalprank.com
enableGzip 1
errorlog \$SERVER_ROOT/logs/\$VH_NAME.error.log {
useServer 0
logLevel ERROR
rollingSize 10M
}
accesslog \$SERVER_ROOT/logs/\$VH_NAME.access.log {
useServer 0
logFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"
rollingSize 10M
keepDays 10
}
scripthandler {
add lsapi:php81 php
}
extprocessor php81 {
type lsapi
address uds://tmp/lshttpd/php81.sock
maxConns 35
env PHP_LSAPI_CHILDREN=35
initTimeout 60
retryTimeout 0
persistConn 1
respBuffer 0
autoStart 1
path /usr/local/lsws/lsphp81/bin/lsphp
backlog 100
instances 1
}
rewrite {
enable 1
autoLoadHtaccess 1
}
"
# This is a simplified representation. Actual vhost creation may involve more complex scripts.
echo "${VHOST_CONFIG}" > "${VHOST_CONF_DIR}/${TOOL_DOMAIN}.conf"
echo "Virtual host config file created at ${VHOST_CONF_DIR}/${TOOL_DOMAIN}.conf"
# 6. Log Rotation
echo "Setting up log rotation..."
LOG_ROTATE_CONF="
${TOOL_DIR}/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 www-data adm
sharedscripts
}
"
# Assuming logrotate.d directory exists
echo "${LOG_ROTATE_CONF}" > /etc/logrotate.d/${TOOL_SLUG}
# 7. Final Steps
echo "Restarting OpenLiteSpeed to apply changes..."
/usr/local/lsws/bin/lswsctrl restart
echo "--- Deployment for ${TOOL_SLUG} complete. ---"
echo "Please verify the site is accessible at https://${TOOL_DOMAIN}"
FILE 8: /home/delivery-tracker-prank.digitalprank.com/public_html/tracker.php
code
PHP
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT * FROM custom_delivery_history WHERE prank_uuid = :uuid LIMIT 1");
$stmt->execute([':uuid' => $prank_uuid]);
$prank_data = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$prank_data) {
die("Invalid delivery ID.");
}
$timeline = json_decode($prank_data['delivery_steps_json'], true);
$sms_messages = json_decode($prank_data['sms_messages_json'], true);
} catch (PDOException $e) {
die("Error retrieving delivery information.");
}
?>
Track Your Order
Your order for a is on its way!
$item): ?>
Driver Updates
Model
ThinkingThoughts
(experimental)
Auto
Expand to view model thoughts
chevron_right
FILE 1: /home/delivery-tracker-prank.digitalprank.com/public_html/tool_config.json
code
JSON
{
"tool": {
"identity": {
"slug": "delivery-tracker-prank",
"name": "Delivery Tracker Tracker",
"category": "prank",
"tagline": "Track your hilarious custom food delivery in real-time!",
"description": "Simulate a custom food delivery with absurd restaurant names, ridiculous items, and chaotic delivery updates. Perfect for pranking your hungry friends.",
"keywords": ["custom delivery", "food prank", "order tracker", "funny delivery", "digital prank"]
},
"features": {
"bulk_enabled": false,
"history_enabled": true,
"export_enabled": true,
"api_enabled": true
},
"fields": [
{
"id": "restaurant_name",
"type": "text",
"label": "Restaurant Name",
"placeholder": "e.g., Soggy Pizza Co.",
"required": false,
"pro_only": true,
"help_text": "Custom name of the custom restaurant. Leave blank to randomize."
},
{
"id": "food_item",
"type": "text",
"label": "Food Item",
"placeholder": "e.g., Extra-Wet Burrito",
"required": false,
"pro_only": true,
"help_text": "Name the custom food item. Leave blank to randomize."
},
{
"id": "recipient_name",
"type": "text",
"label": "Recipient Name",
"placeholder": "e.g., Mario",
"required": false,
"pro_only": true,
"help_text": "Name to display in the delivery updates. Optional for added realism."
},
{
"id": "enable_map",
"type": "checkbox",
"label": "Enable Live Map Animation",
"default": true,
"pro_only": true,
"help_text": "Show a custom delivery map with the driver icon moving in real time."
},
{
"id": "include_sms",
"type": "checkbox",
"label": "Show Custom SMS Updates",
"default": true,
"pro_only": true,
"help_text": "Simulate SMS-style updates from your 'delivery driver'."
},
{
"id": "theme_style",
"type": "select",
"label": "Tracker Theme",
"default": "modern",
"options": [
{ "value": "modern", "label": "Modern" },
{ "value": "retro", "label": "Retro" },
{ "value": "fastfood", "label": "Fast Food Style" },
{ "value": "horror", "label": "Scary Delivery" }
],
"pro_only": false,
"help_text": "Pick a fun theme for the prank tracker UI."
}
],
"limits": {
"tier_daily": {
"free": 3,
"basic": 20,
"gold": 200,
"ultimate": -1
},
"rate_limit_per_minute": 10,
"max_concurrent_requests": 5
},
"billing": {
"credit_cost": 1,
"one_off_enabled": true,
"one_off_price_cents": 99,
"bill_on": "success"
},
"ui": {
"theme": {
"primary_color": "#FF8C00",
"secondary_color": "#292929"
},
"layout": {
"show_sidebar_ads": true,
"form_style": "standard",
"result_display": "animated_tracker"
}
},
"dependencies": {
"php_extensions": ["json", "pdo_mysql"],
"system_packages": [],
"python_packages": ["flask", "faker"],
"external_apis": [],
"requires_internet": false
},
"database": {
"tool_specific_table": "custom_delivery_history",
"store_results": true,
"enable_history": true,
"retention_days": 30
},
"seo": {
"meta_title": "Delivery Tracker Tracker | Hilarious Order Updates | DigitalPrank.com",
"meta_description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates. Create your prank now!",
"canonical_url": "https://digitalprank.com/tools/delivery-tracker-prank",
"structured_data": {
"type": "WebApplication",
"category": "Entertainment"
}
},
"help": {
"quick_start": [
"Step 1: Choose or randomize a restaurant and food item.",
"Step 2: Pick a theme and optional recipient name.",
"Step 3: Enable map or SMS simulation if desired.",
"Step 4: Generate and share the prank delivery tracker!"
],
"faq": [
{
"question": "Is this a real delivery?",
"answer": "No. This tool is for entertainment only and generates a custom tracker with funny updates. No food will actually be delivered."
},
{
"question": "Can I share the prank with friends?",
"answer": "Yes! After generating, you’ll get a shareable link or screenshot option."
},
{
"question": "Can I customize the steps or add delays?",
"answer": "Not yet — advanced prank flow editing is coming soon for Pro users."
}
],
"examples": [
{
"title": "The Wrong Order",
"description": "Send a delivery for a 'Cold Anchovy Milkshake' from 'Ye Olde Taco Shack'.",
"input": {
"restaurant_name": "Ye Olde Taco Shack",
"food_item": "Cold Anchovy Milkshake",
"theme_style": "retro"
}
},
{
"title": "Cursed Delivery",
"description": "Make it look like the delivery driver got lost in a graveyard.",
"input": {
"restaurant_name": "Ghost Tacos",
"food_item": "Ectoplasm Burrito",
"theme_style": "horror"
}
}
]
},
"monitoring": {
"track_usage": true,
"track_performance": true,
"error_reporting": true,
"analytics_events": [
"delivery_prank_created",
"theme_selected",
"export_clicked"
]
},
"security": {
"input_sanitization": true,
"csrf_protection": true,
"rate_limiting": true,
"blocked_domains": [],
"max_input_length": 200,
"allowed_file_types": []
},
"version": {
"schema": "3.0.0",
"tool": "1.0.0",
"api_version": "v1"
}
}
}
FILE 2: /home/delivery-tracker-prank.digitalprank.com/public_html/processor.php
code
PHP
false,
'message' => 'An unknown error occurred.',
'data' => null,
'usage' => null,
'access' => null,
'features' => null,
];
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$json_config = json_decode(file_get_contents('tool_config.json'), true)['tool'];
// --- User and Input Handling ---
session_start();
$user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0;
$user_ip = $_SERVER['REMOTE_ADDR'];
$input = json_decode(file_get_contents('php://input'), true);
if (!$input) {
throw new Exception('Invalid input data.');
}
// CSRF Check
if (!isset($input['csrf_token']) || !isset($_SESSION['csrf_token']) || !hash_equals($_SESSION['csrf_token'], $input['csrf_token'])) {
throw new Exception('CSRF token validation failed.');
}
// --- Access and Usage Control ---
$access = getUserAccessLevel($pdo, $user_id, $tool_slug);
$limit = $json_config['limits']['tier_daily'][$access['tier']];
$usage_check = checkDailyUsage($pdo, $tool_slug, $user_ip, $user_id, $limit);
if (!$usage_check['can_proceed']) {
throw new Exception('Daily usage limit exceeded.');
}
// Fetch feature overrides
$overrides = getToolOverrides($pdo, $tool_slug);
$response['features'] = $overrides;
// {{TOOL_PROCESSING_START}}
// --- Input Validation & Sanitization ---
$max_len = $json_config['security']['max_input_length'];
$restaurant_name = isset($input['restaurant_name']) ? trim(htmlspecialchars(substr($input['restaurant_name'], 0, $max_len))) : '';
$food_item = isset($input['food_item']) ? trim(htmlspecialchars(substr($input['food_item'], 0, $max_len))) : '';
$recipient_name = isset($input['recipient_name']) ? trim(htmlspecialchars(substr($input['recipient_name'], 0, $max_len))) : '';
$enable_map = isset($input['enable_map']) ? (bool)$input['enable_map'] : false;
$include_sms = isset($input['include_sms']) ? (bool)$input['include_sms'] : false;
$theme_style = isset($input['theme_style']) && in_array($input['theme_style'], ['modern', 'retro', 'fastfood', 'horror']) ? $input['theme_style'] : 'modern';
// --- Pro Feature Gating ---
if (!$access['has_pro_access']) {
if (!empty($restaurant_name) || !empty($food_item) || !empty($recipient_name) || $enable_map || $include_sms) {
throw new Exception('Pro features require a subscription.');
}
}
// --- Data Generation ---
if (empty($restaurant_name)) {
$restaurants = ["Soggy Pizza Co.", "The Greasy Spoon", "Cosmic Cantina", "Ye Olde Taco Shack", "Ghost Tacos", "Burger Apocalypse"];
$restaurant_name = $restaurants[array_rand($restaurants)];
}
if (empty($food_item)) {
$foods = ["Extra-Wet Burrito", "Cold Anchovy Milkshake", "Ectoplasm Burrito", "Glow-in-the-dark Fries", "Sentient Meatball Sub", "Questionable Calzone"];
$food_item = $foods[array_rand($foods)];
}
$prank_recipient = empty($recipient_name) ? 'your' : htmlspecialchars($recipient_name) . "'s";
// --- Delivery Timeline Generation ---
$timeline = [];
$timeline[] = ['status' => 'Order Confirmed', 'detail' => 'We\'ve received the order for ' . $food_item . '.', 'icon' => 'receipt'];
$timeline[] = ['status' => 'Preparation', 'detail' => 'Our questionable chef is now preparing ' . $prank_recipient . ' meal.', 'icon' => 'chef'];
$timeline[] = ['status' => 'Quality Check', 'detail' => 'A manager is poking the food with a stick. It seems fine.', 'icon' => 'check'];
$timeline[] = ['status' => 'Out for Delivery', 'detail' => 'A driver has picked up the order. Their location is now visible.', 'icon' => 'delivery'];
if (rand(0,1)) $timeline[] = ['status' => 'Minor Delay', 'detail' => 'Driver is currently fighting a goose for a piece of bread.', 'icon' => 'warning'];
if (rand(0,1)) $timeline[] = ['status' => 'En Route', 'detail' => 'Driver has escaped the goose and is back on the road.', 'icon' => 'route'];
$timeline[] = ['status' => 'Arriving Soon', 'detail' => 'The driver is just around the corner, probably.', 'icon' => 'location'];
$timeline[] = ['status' => 'Delivered', 'detail' => $prank_recipient . ' order has been left at the door. Or a door. Definitely a door.', 'icon' => 'home'];
// --- SMS Generation ---
$sms_messages = [];
if ($include_sms && $access['has_pro_access']) {
$sms_messages[] = ['sender' => 'Driver', 'message' => 'On my way with your food.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'Ok I have to ask... you really ordered the ' . $food_item . '? Brave.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'I think your food is looking at me.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'Almost there. Dropped it once but it seems okay. 5 second rule.'];
}
// --- Final Data Structure ---
$prank_uuid = uniqid('prank_', true);
$output_data = [
'prank_id' => $prank_uuid,
'restaurant_name' => $restaurant_name,
'food_item' => $food_item,
'recipient_name' => $recipient_name,
'enable_map' => $enable_map,
'include_sms' => $include_sms,
'theme_style' => $theme_style,
'timeline' => $timeline,
'sms_messages' => $sms_messages,
'tracker_url' => "https://{$tool_slug}.digitalprank.com/tracker.php?id=" . $prank_uuid
];
// --- Database Storage ---
if ($json_config['database']['store_results']) {
$stmt = $pdo->prepare(
"INSERT INTO custom_delivery_history (prank_uuid, user_id, restaurant_name, food_item, theme, delivery_steps_json, sms_messages_json, created_at)
VALUES (:uuid, :user_id, :restaurant, :item, :theme, :steps, :sms, NOW())"
);
$stmt->execute([
':uuid' => $prank_uuid,
':user_id' => $user_id,
':restaurant' => $restaurant_name,
':item' => $food_item,
':theme' => $theme_style,
':steps' => json_encode($timeline),
':sms' => json_encode($sms_messages)
]);
}
$response['success'] = true;
$response['message'] = 'Prank delivery tracker generated successfully!';
$response['data'] = $output_data;
// {{TOOL_PROCESSING_END}}
$processing_time = microtime(true) - $start_time;
logUsage($pdo, $tool_slug, $user_ip, $user_id, 'generate', $input, $response['data'], $processing_time, 'success');
$response['usage'] = checkDailyUsage($pdo, $tool_slug, $user_ip, $user_id, $limit); // Get updated usage
$response['access'] = $access;
} catch (Exception $e) {
$response['message'] = $e->getMessage();
$processing_time = microtime(true) - $start_time;
logUsage($pdo, $tool_slug, $user_ip, $user_id, 'generate_error', isset($input) ? $input : [], ['error' => $e->getMessage()], $processing_time, 'failed');
}
echo json_encode($response);
FILE 3: /home/delivery-tracker-prank.digitalprank.com/public_html/tool_form.php
code
PHP
- DigitalPrank
FILE 5: /home/delivery-tracker-prank.digitalprank.com/public_html/help.md
code
Markdown
# Help: Delivery Tracker Tracker
Simulate a custom food delivery with absurd restaurant names, ridiculous items, and chaotic delivery updates. Perfect for pranking your hungry friends.
## Quick Start Guide
Here's how to get your prank running in seconds:
1. **Step 1:** Choose or randomize a restaurant and food item.
2. **Step 2:** Pick a theme and optional recipient name.
3. **Step 3:** Enable map or SMS simulation if desired.
4. **Step 4:** Generate and share the prank delivery tracker!
## Features
- **Custom Restaurant & Food Names (PRO):** Specify your own hilarious restaurant and food items for a personalized prank. If left blank, the tool will pick from a list of absurd options.
- **Custom Recipient Name (PRO):** Add your friend's name to the tracker updates for maximum believability.
- **Live Map Animation (PRO):** Displays a custom map with a driver icon moving towards the destination, complete with silly updates.
- **Custom SMS Updates (PRO):** Shows a simulated text message exchange with the increasingly unhinged delivery driver.
- **Tracker Themes:** Choose from several UI themes to match the mood of your prank:
- **Modern:** A sleek, standard delivery app look.
- **Retro:** A pixelated, old-school computer interface.
- **Fast Food Style:** Bright, bold, and greasy-looking.
- **Scary Delivery:** A horror-themed tracker for a truly cursed meal.
## API Access (Ultimate Tier)
Automate prank generation using our simple API. Send a POST request to `https://delivery-tracker-prank.digitalprank.com/api/v1/generate.php` with a JSON body.
**Endpoint:** `POST /api/v1/generate.php`
**Headers:** `Authorization: Bearer YOUR_API_KEY`
**Example Request Body:**
```json
{
"restaurant_name": "Cosmic Cantina",
"food_item": "Meteor Meatballs",
"theme_style": "retro"
}
Example Success Response:
code
JSON
{
"success": true,
"data": {
"prank_id": "prank_...",
"tracker_url": "https://..."
}
}
Frequently Asked Questions (FAQ)
Q: Is this a real delivery?
A: No. This tool is for entertainment only and generates a custom tracker with funny updates. No food will actually be delivered.
Q: Can I share the prank with friends?
A: Yes! After generating, you’ll get a shareable link or screenshot option.
Q: Can I customize the steps or add delays?
A: Not yet — advanced prank flow editing is coming soon for Pro users.
Usage Examples
1. The Wrong Order
Send a delivery for a 'Cold Anchovy Milkshake' from 'Ye Olde Taco Shack'.
Restaurant Name: Ye Olde Taco Shack
Food Item: Cold Anchovy Milkshake
Tracker Theme: Retro
2. Cursed Delivery
Make it look like the delivery driver got lost in a graveyard.
Restaurant Name: Ghost Tacos
Food Item: Ectoplasm Burrito
Tracker Theme: Horror
code
Code
### FILE 6: /home/digitalprank.com/public_html/blog/data/tools/delivery-tracker-prank.json
```json
{
"slug": "delivery-tracker-prank",
"name": "Delivery Tracker Tracker",
"meta_title": "Delivery Tracker Tracker | Hilarious Order Updates | DigitalPrank.com",
"meta_description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates. Create your prank now!",
"keywords": ["custom delivery", "food prank", "order tracker", "funny delivery", "digital prank"],
"canonical_url": "https://digitalprank.com/tools/delivery-tracker-prank",
"primary_color": "#FF8C00",
"secondary_color": "#292929",
"short_description": "Create a shareable, animated custom food delivery tracker to prank your friends. Customize everything from the restaurant name to the chaotic delivery updates.",
"long_description": "Ever wanted to trick your friend into thinking their pizza was being delivered by a circus clown? Or that their burrito was delayed by a goose attack? The Delivery Tracker Tracker lets you do just that. Generate a realistic-looking but completely custom delivery screen with a live map, absurd status updates, and even simulated SMS messages from the driver. It's the perfect digital prank for anyone waiting on a real food order.",
"features": [
{
"name": "Customizable Orders (Pro)",
"description": "Enter any restaurant and food item you can imagine. The more ridiculous, the better!",
"icon": "edit"
},
{
"name": "Live Animated Map (Pro)",
"description": "Watch the 'driver' move across a map, encounter strange delays, and get hopelessly lost.",
"icon": "map"
},
{
"name": "Simulated SMS Updates (Pro)",
"description": "Add another layer of realism with custom text messages from your delivery driver.",
"icon": "sms"
},
{
"name": "Multiple Themes",
"description": "Choose from Modern, Retro, Fast Food, or even a spooky Horror theme to set the tone.",
"icon": "palette"
},
{
"name": "API Access (Ultimate)",
"description": "Automate prank generation and integrate the tracker into your own applications.",
"icon": "code"
},
{
"name": "Instant Sharable Link",
"description": "Generate your prank and get a unique link to send to your target immediately.",
"icon": "share"
}
],
"user_guide": {
"title": "How to Prank Your Friends",
"steps": [
"Navigate to the Delivery Tracker Tracker tool.",
"For the best results, use the Pro options to enter a custom restaurant and food item that your friend might actually order.",
"Select a theme. 'Modern' is more believable, while 'Horror' is great for a laugh.",
"Click 'Generate Prank Tracker' to get your unique, shareable link.",
"Send the link to your friend and tell them 'Your food is on the way!'"
]
},
"technical_details": {
"frontend": "HTML, CSS, JavaScript (for dynamic form and result display)",
"backend": "PHP 8.1+",
"database": "MySQL for storing prank history",
"dependencies": "Relies on core platform functions for user management and usage tracking."
},
"structured_data": {
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Delivery Tracker Tracker",
"description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates.",
"applicationCategory": "Entertainment",
"operatingSystem": "Any (Web-based)",
"url": "https://delivery-tracker-prank.digitalprank.com",
"publisher": {
"@type": "Organization",
"name": "DigitalPrank.com"
}
}
}
FILE 7: /home/delivery-tracker-prank.digitalprank.com/public_html/deploy.sh
code
Bash
#!/bin/bash
set -e
TOOL_SLUG="delivery-tracker-prank"
TOOL_DOMAIN="${TOOL_SLUG}.digitalprank.com"
TOOL_DIR="/home/${TOOL_DOMAIN}/public_html"
VHOST_CONF_DIR="/usr/local/lsws/conf/vhosts"
DB_NAME="digitalprank_db"
DB_USER="dp_user"
DB_PASS="#$Dealer2355"
echo "--- Starting deployment for ${TOOL_SLUG} ---"
# 1. System & PHP Dependencies
echo "Installing dependencies..."
# Assuming apt-based system
apt-get update
apt-get install -y php8.1-json php8.1-mysql python3-venv
# 2. Directory Structure and Permissions
echo "Creating tool directories at ${TOOL_DIR}..."
mkdir -p ${TOOL_DIR}/api/v1
mkdir -p ${TOOL_DIR}/assets/css
mkdir -p ${TOOL_DIR}/assets/js
chown -R www-data:www-data ${TOOL_DIR}
chmod -R 755 ${TOOL_DIR}
# 3. Python Virtual Environment
echo "Setting up Python virtual environment..."
python3 -m venv ${TOOL_DIR}/venv
source ${TOOL_DIR}/venv/bin/activate
pip install --upgrade pip
pip install flask faker
deactivate
chown -R www-data:www-data ${TOOL_DIR}/venv
# 4. Database Table Creation
echo "Creating database table 'custom_delivery_history'..."
SQL_CREATE_TABLE="
CREATE TABLE IF NOT EXISTS \`custom_delivery_history\` (
\`id\` BIGINT NOT NULL AUTO_INCREMENT,
\`prank_uuid\` VARCHAR(32) NOT NULL UNIQUE,
\`user_id\` BIGINT DEFAULT 0,
\`restaurant_name\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`food_item\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`theme\` VARCHAR(50),
\`delivery_steps_json\` JSON,
\`sms_messages_json\` JSON,
\`created_at\` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (\`id\`),
INDEX \`idx_user_id\` (\`user_id\`),
INDEX \`idx_created_at\` (\`created_at\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"
mysql -u"${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" -e "${SQL_CREATE_TABLE}"
echo "Database table check/creation complete."
# 5. OpenLiteSpeed Virtual Host Configuration
echo "Configuring OpenLiteSpeed virtual host..."
# NOTE: This creates a basic vhost config. A production setup might be more complex.
VHOST_CONFIG="
docRoot \$SERVER_ROOT/vhosts/${TOOL_DOMAIN}/public_html/
vhDomain ${TOOL_DOMAIN}
vhAliases www.${TOOL_DOMAIN}
adminEmails admin@digitalprank.com
enableGzip 1
scripthandler {
add lsapi:php81 php
}
extprocessor php81 {
type lsapi
address uds://tmp/lshttpd/php81.sock
maxConns 35
path /usr/local/lsws/lsphp81/bin/lsphp
}
rewrite {
enable 1
autoLoadHtaccess 1
}
"
echo "${VHOST_CONFIG}" > "${VHOST_CONF_DIR}/${TOOL_DOMAIN}.conf"
echo "Virtual host config file created."
# 6. Log Rotation
echo "Setting up log rotation..."
LOG_ROTATE_CONF="
/home/${TOOL_DOMAIN}/logs/*.log {
daily
missingok
rotate 7
compress
notifempty
}
"
echo "${LOG_ROTATE_CONF}" > /etc/logrotate.d/${TOOL_SLUG}
# 7. Final Steps
echo "Restarting OpenLiteSpeed to apply changes..."
/usr/local/lsws/bin/lswsctrl restart
echo "--- Deployment for ${TOOL_SLUG} complete. ---"
echo "Please verify the site is accessible at https://${TOOL_DOMAIN}"
FILE 8: /home/delivery-tracker-prank.digitalprank.com/public_html/tracker.php
code
PHP
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT * FROM custom_delivery_history WHERE prank_uuid = :uuid LIMIT 1");
$stmt->execute([':uuid' => $prank_uuid]);
$prank_data = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$prank_data) {
die("Invalid delivery ID.");
}
$timeline = json_decode($prank_data['delivery_steps_json'], true);
$sms_messages = json_decode($prank_data['sms_messages_json'], true);
} catch (PDOException $e) {
die("Error retrieving delivery information.");
}
?>
Track Your Order
Your order for a is on its way!
Driver Updates
FILE 9: /home/delivery-tracker-prank.digitalprank.com/public_html/assets/css/tracker.css
code
CSS
body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; margin: 0; padding: 20px; color: #E0E0E0; transition: background-color 0.5s; }
.theme-modern { background-color: #1a1a1a; }
.theme-retro { background-color: #000084; font-family: 'Courier New', Courier, monospace; }
.theme-fastfood { background-color: #FFD700; color: #D21404; }
.theme-horror { background-color: #100000; color: #ff4d4d; font-family: 'Creepster', cursive; }
.tracker-container { max-width: 700px; margin: auto; background: rgba(0,0,0,0.2); padding: 20px; border-radius: 12px; }
.header { text-align: center; margin-bottom: 30px; }
.header h1 { margin: 0; font-size: 2em; }
.header p { margin-top: 5px; }
.progress-bar { width: 100%; background: #555; border-radius: 10px; height: 20px; overflow: hidden; }
.progress-bar-fill { width: 0; height: 100%; background: #FF8C00; transition: width 1s ease-in-out; }
.theme-horror .progress-bar-fill { background: #8B0000; }
.theme-fastfood .progress-bar-fill { background: #228B22; }
.timeline { list-style: none; padding: 0; margin-top: 20px; }
.timeline li { padding: 10px; border-left: 3px solid #555; margin-bottom: 10px; transition: all 0.5s; opacity: 0.5; }
.timeline li.active { border-left-color: #FF8C00; opacity: 1; transform: scale(1.02); }
.timeline li.completed { border-left-color: #4CAF50; opacity: 0.8; }
.theme-horror .timeline li.active { border-left-color: #ff4d4d; }
.theme-horror .timeline li.completed { border-left-color: #8B0000; }
.sms-container { margin-top: 30px; padding: 15px; background: rgba(0,0,0,0.3); border-radius: 8px; }
.sms { display: none; margin-bottom: 10px; }
.sms.driver { text-align: left; }
.sms p { display: inline-block; padding: 8px 12px; border-radius: 15px; max-width: 70%; }
.sms.driver p { background-color: #333; }
.theme-fastfood .sms.driver p { background: #fff; }
FILE 10: /home/delivery-tracker-prank.digitalprank.com/public_html/assets/js/tracker.js
code
JavaScript
document.addEventListener('DOMContentLoaded', () => {
const timelineElements = document.querySelectorAll('#timeline li');
const smsElements = document.querySelectorAll('#smsFeed .sms');
const progressBarFill = document.getElementById('progressBarFill');
let currentStep = -1;
let currentSms = 0;
function updateTracker() {
currentStep++;
if (currentStep >= timelineData.length) {
clearInterval(interval);
return;
}
// Update progress bar
const progress = ((currentStep + 1) / timelineData.length) * 100;
progressBarFill.style.width = progress + '%';
// Update timeline status
timelineElements.forEach((li, index) => {
if (index < currentStep) {
li.className = 'completed';
} else if (index === currentStep) {
li.className = 'active';
} else {
li.className = '';
}
});
// Show a random SMS message occasionally, after the first few steps
if (smsData.length > 0 && currentStep > 1 && Math.random() > 0.4 && currentSms < smsData.length) {
smsElements[currentSms].style.display = 'block';
currentSms++;
}
}
// Set a variable interval for a more "realistic" feel
const scheduleNextUpdate = () => {
const randomDelay = Math.random() * 3000 + 2000; // 2 to 5 seconds
if (currentStep < timelineData.length -1) {
setTimeout(() => {
updateTracker();
scheduleNextUpdate();
}, randomDelay);
} else {
updateTracker(); // Run the last step
}
};
updateTracker(); // Initial call for the first step
scheduleNextUpdate();
});
FILE 11: /home/delivery-tracker-prank.digitalprank.com/public_html/api/v1/generate.php
code
PHP
false, 'message' => 'An unknown error occurred.'];
try {
// --- API Authentication ---
$api_key = null;
$headers = getallheaders();
if (isset($headers['Authorization'])) {
$auth_header = $headers['Authorization'];
if (preg_match('/Bearer\s(\S+)/', $auth_header, $matches)) {
$api_key = $matches[1];
}
}
if (!$api_key) {
throw new Exception('API key is missing.', 401);
}
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$user_data = checkApiKey($pdo, $api_key, $tool_slug); // This function should return user_id, tier, etc.
if (!$user_data || $user_data['tier'] !== 'ultimate') {
throw new Exception('Invalid API key or insufficient permissions.', 403);
}
$json_config = json_decode(file_get_contents('../tool_config.json'), true)['tool'];
$input = json_decode(file_get_contents('php://input'), true);
if (!$input) {
throw new Exception('Invalid JSON input.', 400);
}
// --- API-Specific Processing (Simplified version of main processor) ---
$max_len = $json_config['security']['max_input_length'];
$restaurant_name = isset($input['restaurant_name']) ? trim(htmlspecialchars(substr($input['restaurant_name'], 0, $max_len))) : '';
$food_item = isset($input['food_item']) ? trim(htmlspecialchars(substr($input['food_item'], 0, $max_len))) : '';
$theme_style = isset($input['theme_style']) ? $input['theme_style'] : 'modern';
if (empty($restaurant_name) || empty($food_item)) {
throw new Exception('restaurant_name and food_item are required for API calls.', 400);
}
// Generate timeline (re-using logic from main processor)
$timeline = [];
$timeline[] = ['status' => 'Order Confirmed', 'detail' => 'We\'ve received the order for ' . $food_item . '.'];
$timeline[] = ['status' => 'Preparation', 'detail' => 'Our questionable chef is preparing the meal.'];
$timeline[] = ['status' => 'Out for Delivery', 'detail' => 'A driver has picked up the order.'];
$timeline[] = ['status' => 'Delivered', 'detail' => 'Your order has been left at the door.'];
$prank_uuid = uniqid('prank_api_', true);
// Store in DB
$stmt = $pdo->prepare(
"INSERT INTO custom_delivery_history (prank_uuid, user_id, restaurant_name, food_item, theme, delivery_steps_json, sms_messages_json, created_at)
VALUES (:uuid, :user_id, :restaurant, :item, :theme, :steps, '[]', NOW())"
);
$stmt->execute([
':uuid' => $prank_uuid,
':user_id' => $user_data['user_id'],
':restaurant' => $restaurant_name,
':item' => $food_item,
':theme' => $theme_style,
':steps' => json_encode($timeline)
]);
// --- Success Response ---
$response = [
'success' => true,
'data' => [
'prank_id' => $prank_uuid,
'tracker_url' => "https://{$tool_slug}.digitalprank.com/tracker.php?id=" . $prank_uuid
]
];
logUsage($pdo, $tool_slug, 'api', $user_data['user_id'], 'api_generate', $input, $response['data'], 0, 'success');
} catch (Exception $e) {
$code = $e->getCode() >= 400 ? $e->getCode() : 500;
http_response_code($code);
$response['message'] = $e->getMessage();
}
echo json_encode($response);
Model
ThinkingThoughts
(experimental)
Auto
Expand to view model thoughts
chevron_right
FILE 1: /home/delivery-tracker-prank.digitalprank.com/public_html/tool_config.json
code
JSON
{
"tool": {
"identity": {
"slug": "delivery-tracker-prank",
"name": "Delivery Tracker Tracker",
"category": "prank",
"tagline": "Track your hilarious custom food delivery in real-time!",
"description": "Simulate a custom food delivery with absurd restaurant names, ridiculous items, and chaotic delivery updates. Perfect for pranking your hungry friends.",
"keywords": ["custom delivery", "food prank", "order tracker", "funny delivery", "digital prank"]
},
"features": {
"bulk_enabled": false,
"history_enabled": true,
"export_enabled": true,
"api_enabled": true
},
"fields": [
{
"id": "restaurant_name",
"type": "text",
"label": "Restaurant Name",
"placeholder": "e.g., Soggy Pizza Co.",
"required": false,
"pro_only": true,
"help_text": "Custom name of the custom restaurant. Leave blank to randomize."
},
{
"id": "food_item",
"type": "text",
"label": "Food Item",
"placeholder": "e.g., Extra-Wet Burrito",
"required": false,
"pro_only": true,
"help_text": "Name the custom food item. Leave blank to randomize."
},
{
"id": "recipient_name",
"type": "text",
"label": "Recipient Name",
"placeholder": "e.g., Mario",
"required": false,
"pro_only": true,
"help_text": "Name to display in the delivery updates. Optional for added realism."
},
{
"id": "enable_map",
"type": "checkbox",
"label": "Enable Live Map Animation",
"default": true,
"pro_only": true,
"help_text": "Show a custom delivery map with the driver icon moving in real time."
},
{
"id": "include_sms",
"type": "checkbox",
"label": "Show Custom SMS Updates",
"default": true,
"pro_only": true,
"help_text": "Simulate SMS-style updates from your 'delivery driver'."
},
{
"id": "theme_style",
"type": "select",
"label": "Tracker Theme",
"default": "modern",
"options": [
{ "value": "modern", "label": "Modern" },
{ "value": "retro", "label": "Retro" },
{ "value": "fastfood", "label": "Fast Food Style" },
{ "value": "horror", "label": "Scary Delivery" }
],
"pro_only": false,
"help_text": "Pick a fun theme for the prank tracker UI."
}
],
"limits": {
"tier_daily": {
"free": 3,
"basic": 20,
"gold": 200,
"ultimate": -1
},
"rate_limit_per_minute": 10,
"max_concurrent_requests": 5
},
"billing": {
"credit_cost": 1,
"one_off_enabled": true,
"one_off_price_cents": 99,
"bill_on": "success"
},
"ui": {
"theme": {
"primary_color": "#FF8C00",
"secondary_color": "#292929"
},
"layout": {
"show_sidebar_ads": true,
"form_style": "standard",
"result_display": "animated_tracker"
}
},
"dependencies": {
"php_extensions": ["json", "pdo_mysql"],
"system_packages": [],
"python_packages": ["flask", "faker"],
"external_apis": [],
"requires_internet": false
},
"database": {
"tool_specific_table": "custom_delivery_history",
"store_results": true,
"enable_history": true,
"retention_days": 30
},
"seo": {
"meta_title": "Delivery Tracker Tracker | Hilarious Order Updates | DigitalPrank.com",
"meta_description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates. Create your prank now!",
"canonical_url": "https://digitalprank.com/tools/delivery-tracker-prank",
"structured_data": {
"type": "WebApplication",
"category": "Entertainment"
}
},
"help": {
"quick_start": [
"Step 1: Choose or randomize a restaurant and food item.",
"Step 2: Pick a theme and optional recipient name.",
"Step 3: Enable map or SMS simulation if desired.",
"Step 4: Generate and share the prank delivery tracker!"
],
"faq": [
{
"question": "Is this a real delivery?",
"answer": "No. This tool is for entertainment only and generates a custom tracker with funny updates. No food will actually be delivered."
},
{
"question": "Can I share the prank with friends?",
"answer": "Yes! After generating, you’ll get a shareable link or screenshot option."
},
{
"question": "Can I customize the steps or add delays?",
"answer": "Not yet — advanced prank flow editing is coming soon for Pro users."
}
],
"examples": [
{
"title": "The Wrong Order",
"description": "Send a delivery for a 'Cold Anchovy Milkshake' from 'Ye Olde Taco Shack'.",
"input": {
"restaurant_name": "Ye Olde Taco Shack",
"food_item": "Cold Anchovy Milkshake",
"theme_style": "retro"
}
},
{
"title": "Cursed Delivery",
"description": "Make it look like the delivery driver got lost in a graveyard.",
"input": {
"restaurant_name": "Ghost Tacos",
"food_item": "Ectoplasm Burrito",
"theme_style": "horror"
}
}
]
},
"monitoring": {
"track_usage": true,
"track_performance": true,
"error_reporting": true,
"analytics_events": [
"delivery_prank_created",
"theme_selected",
"export_clicked"
]
},
"security": {
"input_sanitization": true,
"csrf_protection": true,
"rate_limiting": true,
"blocked_domains": [],
"max_input_length": 200,
"allowed_file_types": []
},
"version": {
"schema": "3.0.0",
"tool": "1.0.0",
"api_version": "v1"
}
}
}
FILE 2: /home/delivery-tracker-prank.digitalprank.com/public_html/processor.php
code
PHP
false,
'message' => 'An unknown error occurred.',
'data' => null,
'usage' => null,
'access' => null,
'features' => null,
];
$pdo = null;
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$json_config = json_decode(file_get_contents('tool_config.json'), true)['tool'];
// --- User and Input Handling ---
session_start();
$user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0;
$user_ip = $_SERVER['REMOTE_ADDR'];
$input = json_decode(file_get_contents('php://input'), true);
if (!$input) {
throw new Exception('Invalid input data.');
}
// CSRF Check
if (!isset($input['csrf_token']) || !isset($_SESSION['csrf_token']) || !hash_equals($_SESSION['csrf_token'], $input['csrf_token'])) {
throw new Exception('CSRF token validation failed.');
}
// --- Access and Usage Control ---
$access = getUserAccessLevel($pdo, $user_id, $tool_slug);
$limit = $json_config['limits']['tier_daily'][$access['tier']];
$usage_check = checkDailyUsage($pdo, $tool_slug, $user_ip, $user_id, $limit);
if (!$usage_check['can_proceed']) {
throw new Exception('Daily usage limit exceeded.');
}
// Fetch feature overrides
$overrides = getToolOverrides($pdo, $tool_slug);
$response['features'] = $overrides;
// {{TOOL_PROCESSING_START}}
// --- Input Validation & Sanitization ---
$max_len = $json_config['security']['max_input_length'];
$restaurant_name = isset($input['restaurant_name']) ? trim(htmlspecialchars(substr($input['restaurant_name'], 0, $max_len))) : '';
$food_item = isset($input['food_item']) ? trim(htmlspecialchars(substr($input['food_item'], 0, $max_len))) : '';
$recipient_name = isset($input['recipient_name']) ? trim(htmlspecialchars(substr($input['recipient_name'], 0, $max_len))) : '';
$enable_map = isset($input['enable_map']) ? (bool)$input['enable_map'] : false;
$include_sms = isset($input['include_sms']) ? (bool)$input['include_sms'] : false;
$theme_style = isset($input['theme_style']) && in_array($input['theme_style'], ['modern', 'retro', 'fastfood', 'horror']) ? $input['theme_style'] : 'modern';
// --- Pro Feature Gating ---
if (!$access['has_pro_access']) {
if (!empty($restaurant_name) || !empty($food_item) || !empty($recipient_name) || $enable_map || $include_sms) {
throw new Exception('Using custom names, map, or SMS updates requires a Pro subscription.');
}
}
// --- Data Generation ---
if (empty($restaurant_name)) {
$restaurants = ["Soggy Pizza Co.", "The Greasy Spoon", "Cosmic Cantina", "Ye Olde Taco Shack", "Ghost Tacos", "Burger Apocalypse"];
$restaurant_name = $restaurants[array_rand($restaurants)];
}
if (empty($food_item)) {
$foods = ["Extra-Wet Burrito", "Cold Anchovy Milkshake", "Ectoplasm Burrito", "Glow-in-the-dark Fries", "Sentient Meatball Sub", "Questionable Calzone"];
$food_item = $foods[array_rand($foods)];
}
$prank_recipient = empty($recipient_name) ? 'your' : htmlspecialchars($recipient_name) . "'s";
// --- Delivery Timeline Generation ---
$timeline = [];
$timeline[] = ['status' => 'Order Confirmed', 'detail' => 'We\'ve received the order for ' . $food_item . '.', 'icon' => 'receipt'];
$timeline[] = ['status' => 'Preparation', 'detail' => 'Our questionable chef is now preparing ' . $prank_recipient . ' meal.', 'icon' => 'chef'];
$timeline[] = ['status' => 'Quality Check', 'detail' => 'A manager is poking the food with a stick. It seems fine.', 'icon' => 'check'];
$timeline[] = ['status' => 'Out for Delivery', 'detail' => 'A driver has picked up the order. Their location is now visible.', 'icon' => 'delivery'];
if (rand(0,1)) $timeline[] = ['status' => 'Minor Delay', 'detail' => 'Driver is currently fighting a goose for a piece of bread.', 'icon' => 'warning'];
if (rand(0,1)) $timeline[] = ['status' => 'En Route', 'detail' => 'Driver has escaped the goose and is back on the road.', 'icon' => 'route'];
$timeline[] = ['status' => 'Arriving Soon', 'detail' => 'The driver is just around the corner, probably.', 'icon' => 'location'];
$timeline[] = ['status' => 'Delivered', 'detail' => $prank_recipient . ' order has been left at the door. Or a door. Definitely a door.', 'icon' => 'home'];
// --- SMS Generation ---
$sms_messages = [];
if ($include_sms && $access['has_pro_access']) {
$sms_messages[] = ['sender' => 'Driver', 'message' => 'On my way with your food.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'Ok I have to ask... you really ordered the ' . $food_item . '? Brave.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'I think your food is looking at me.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'Almost there. Dropped it once but it seems okay. 5 second rule.'];
}
// --- Final Data Structure ---
$prank_uuid = uniqid('prank_', true);
$output_data = [
'prank_id' => $prank_uuid,
'restaurant_name' => $restaurant_name,
'food_item' => $food_item,
'recipient_name' => $recipient_name,
'enable_map' => $enable_map,
'include_sms' => $include_sms,
'theme_style' => $theme_style,
'timeline' => $timeline,
'sms_messages' => $sms_messages,
'tracker_url' => "https://{$tool_slug}.digitalprank.com/tracker.php?id=" . $prank_uuid
];
// --- Database Storage ---
if ($json_config['database']['store_results']) {
$stmt = $pdo->prepare(
"INSERT INTO custom_delivery_history (prank_uuid, user_id, restaurant_name, food_item, theme, delivery_steps_json, sms_messages_json, created_at)
VALUES (:uuid, :user_id, :restaurant, :item, :theme, :steps, :sms, NOW())"
);
$stmt->execute([
':uuid' => $prank_uuid,
':user_id' => $user_id,
':restaurant' => $restaurant_name,
':item' => $food_item,
':theme' => $theme_style,
':steps' => json_encode($timeline),
':sms' => json_encode($sms_messages)
]);
}
$response['success'] = true;
$response['message'] = 'Prank delivery tracker generated successfully!';
$response['data'] = $output_data;
// {{TOOL_PROCESSING_END}}
$processing_time = microtime(true) - $start_time;
logUsage($pdo, $tool_slug, $user_ip, $user_id, 'generate', $input, $response['data'], $processing_time, 'success');
$response['usage'] = checkDailyUsage($pdo, $tool_slug, $user_ip, $user_id, $limit); // Get updated usage
$response['access'] = $access;
} catch (Exception $e) {
$response['message'] = $e->getMessage();
$processing_time = microtime(true) - $start_time;
$error_data = ['error' => $e->getMessage()];
if ($pdo) {
logUsage($pdo, $tool_slug, $user_ip, $user_id, 'generate_error', isset($input) ? $input : [], $error_data, $processing_time, 'failed');
}
}
echo json_encode($response);
FILE 3: /home/delivery-tracker-prank.digitalprank.com/public_html/tool_form.php
code
PHP
- DigitalPrank
FILE 5: /home/delivery-tracker-prank.digitalprank.com/public_html/help.md
code
Markdown
# Help: Delivery Tracker Tracker
Simulate a custom food delivery with absurd restaurant names, ridiculous items, and chaotic delivery updates. Perfect for pranking your hungry friends.
## Quick Start Guide
Here's how to get your prank running in seconds:
1. **Step 1:** Choose or randomize a restaurant and food item. For a more personal touch, Pro users can enter custom names.
2. **Step 2:** Pick a theme for the tracker page. `Modern` is subtle, while `Horror` is over-the-top.
3. **Step 3 (Pro):** Enable map or SMS simulations for extra realism.
4. **Step 4:** Generate the prank and share the unique link with your friend!
## Features
- **Custom Restaurant & Food Names (PRO):** Specify your own hilarious restaurant and food items for a personalized prank. If left blank, the tool will pick from a list of absurd options.
- **Custom Recipient Name (PRO):** Add your friend's name to the tracker updates for maximum believability.
- **Live Map Animation (PRO):** Displays a custom map with a driver icon moving towards the destination, complete with silly updates. (This feature is simulated on the tracker page).
- **Custom SMS Updates (PRO):** Shows a simulated text message exchange with the increasingly unhinged delivery driver.
- **Tracker Themes:** Choose from several UI themes to match the mood of your prank:
- **Modern:** A sleek, standard delivery app look.
- **Retro:** A pixelated, old-school computer interface.
- **Fast Food Style:** Bright, bold, and greasy-looking.
- **Scary Delivery:** A horror-themed tracker for a truly cursed meal.
## API Access (Ultimate Tier)
Automate prank generation using our simple API. Send a POST request with a JSON body.
**Endpoint:** `https://delivery-tracker-prank.digitalprank.com/api/v1/generate.php`
**Headers:** `Authorization: Bearer YOUR_API_KEY`
**Example Request Body:**
```json
{
"restaurant_name": "Cosmic Cantina",
"food_item": "Meteor Meatballs",
"theme_style": "retro"
}
Frequently Asked Questions (FAQ)
Q: Is this a real delivery?
A: No. This tool is for entertainment only and generates a custom tracker with funny updates. No food will actually be delivered.
Q: Can I share the prank with friends?
A: Yes! After generating, you’ll get a shareable link. That's the whole point!
Q: Can I customize the delivery steps or add delays?
A: Not yet — advanced prank flow editing is coming soon for Pro users.
Usage Examples
1. The Wrong Order
Send a delivery for a 'Cold Anchovy Milkshake' from 'Ye Olde Taco Shack'.
Restaurant Name: Ye Olde Taco Shack
Food Item: Cold Anchovy Milkshake
Tracker Theme: Retro
2. Cursed Delivery
Make it look like the delivery driver got lost in a graveyard.
Restaurant Name: Ghost Tacos
Food Item: Ectoplasm Burrito
Tracker Theme: Horror
code
Code
### FILE 6: /home/digitalprank.com/public_html/blog/data/tools/delivery-tracker-prank.json
```json
{
"slug": "delivery-tracker-prank",
"name": "Delivery Tracker Tracker",
"meta_title": "Delivery Tracker Tracker | Hilarious Order Updates | DigitalPrank.com",
"meta_description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates. Create your prank now!",
"keywords": ["custom delivery", "food prank", "order tracker", "funny delivery", "digital prank"],
"canonical_url": "https://digitalprank.com/tools/delivery-tracker-prank",
"primary_color": "#FF8C00",
"secondary_color": "#292929",
"short_description": "Create a shareable, animated custom food delivery tracker to prank your friends. Customize everything from the restaurant name to the chaotic delivery updates.",
"long_description": "Ever wanted to trick your friend into thinking their pizza was being delivered by a circus clown? Or that their burrito was delayed by a goose attack? The Delivery Tracker Tracker lets you do just that. Generate a realistic-looking but completely custom delivery screen with a live map, absurd status updates, and even simulated SMS messages from the driver. It's the perfect digital prank for anyone waiting on a real food order.",
"features": [
{
"name": "Customizable Orders (Pro)",
"description": "Enter any restaurant and food item you can imagine. The more ridiculous, the better!",
"icon": "edit"
},
{
"name": "Live Animated Map (Pro)",
"description": "Watch the 'driver' move across a map, encounter strange delays, and get hopelessly lost.",
"icon": "map"
},
{
"name": "Simulated SMS Updates (Pro)",
"description": "Add another layer of realism with custom text messages from your delivery driver.",
"icon": "sms"
},
{
"name": "Multiple Themes",
"description": "Choose from Modern, Retro, Fast Food, or even a spooky Horror theme to set the tone.",
"icon": "palette"
},
{
"name": "API Access (Ultimate)",
"description": "Automate prank generation and integrate the tracker into your own applications.",
"icon": "code"
},
{
"name": "Instant Sharable Link",
"description": "Generate your prank and get a unique link to send to your target immediately.",
"icon": "share"
}
],
"user_guide": {
"title": "How to Prank Your Friends",
"steps": [
"Navigate to the Delivery Tracker Tracker tool.",
"For the best results, use the Pro options to enter a custom restaurant and food item that your friend might actually order.",
"Select a theme. 'Modern' is more believable, while 'Horror' is great for a laugh.",
"Click 'Generate Prank Tracker' to get your unique, shareable link.",
"Send the link to your friend and tell them 'Your food is on the way!'"
]
},
"technical_details": {
"frontend": "HTML, CSS, JavaScript (for dynamic form and result display)",
"backend": "PHP 8.1+",
"database": "MySQL for storing prank history",
"dependencies": "Relies on core platform functions for user management and usage tracking."
},
"structured_data": {
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Delivery Tracker Tracker",
"description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates.",
"applicationCategory": "EntertainmentApplication",
"operatingSystem": "Any (Web-based)",
"url": "https://delivery-tracker-prank.digitalprank.com",
"publisher": {
"@type": "Organization",
"name": "DigitalPrank.com"
}
}
}
FILE 7: /home/delivery-tracker-prank.digitalprank.com/public_html/deploy.sh
code
Bash
#!/bin/bash
set -e
TOOL_SLUG="delivery-tracker-prank"
TOOL_DOMAIN="${TOOL_SLUG}.digitalprank.com"
TOOL_DIR="/home/${TOOL_DOMAIN}/public_html"
VHOST_CONF_DIR="/usr/local/lsws/conf/vhosts"
DB_NAME="digitalprank_db"
DB_USER="dp_user"
DB_PASS="#$Dealer2355"
echo "--- [START] Deployment for ${TOOL_SLUG} ---"
# 1. System & PHP Dependencies
echo "--> Installing system dependencies..."
apt-get update > /dev/null
apt-get install -y php8.1-json php8.1-mysql python3-venv
# 2. Directory Structure and Permissions
echo "--> Creating tool directories at ${TOOL_DIR}..."
mkdir -p ${TOOL_DIR}/api/v1
mkdir -p ${TOOL_DIR}/assets/css
mkdir -p ${TOOL_DIR}/assets/js
chown -R www-data:www-data ${TOOL_DIR}
chmod -R 755 ${TOOL_DIR}
# 3. Python Virtual Environment
echo "--> Setting up Python virtual environment..."
if [ ! -d "${TOOL_DIR}/venv" ]; then
python3 -m venv ${TOOL_DIR}/venv
source ${TOOL_DIR}/venv/bin/activate
pip install --upgrade pip > /dev/null
pip install flask faker > /dev/null
deactivate
chown -R www-data:www-data ${TOOL_DIR}/venv
echo "Python venv created and packages installed."
else
echo "Python venv already exists."
fi
# 4. Database Table Creation
echo "--> Creating database table 'custom_delivery_history' if not exists..."
SQL_CREATE_TABLE="
CREATE TABLE IF NOT EXISTS \`custom_delivery_history\` (
\`id\` BIGINT NOT NULL AUTO_INCREMENT,
\`prank_uuid\` VARCHAR(32) NOT NULL UNIQUE,
\`user_id\` BIGINT DEFAULT 0,
\`restaurant_name\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`food_item\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`theme\` VARCHAR(50),
\`delivery_steps_json\` JSON,
\`sms_messages_json\` JSON,
\`created_at\` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (\`id\`),
INDEX \`idx_user_id\` (\`user_id\`),
INDEX \`idx_created_at\` (\`created_at\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"
mysql -h localhost -u"${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" -e "${SQL_CREATE_TABLE}"
echo "Database table check/creation complete."
# 5. OpenLiteSpeed Virtual Host Configuration
echo "--> Configuring OpenLiteSpeed virtual host..."
VHOST_CONFIG_FILE="${VHOST_CONF_DIR}/${TOOL_DOMAIN}.conf"
if [ ! -f "$VHOST_CONFIG_FILE" ]; then
cat > "$VHOST_CONFIG_FILE" < Restarting OpenLiteSpeed to apply changes..."
/usr/local/lsws/bin/lswsctrl restart
echo "--- [SUCCESS] Deployment for ${TOOL_SLUG} complete. ---"
echo "Verify the site at https://${TOOL_DOMAIN}"
FILE 8: /home/delivery-tracker-prank.digitalprank.com/public_html/tracker.php
code
PHP
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT * FROM custom_delivery_history WHERE prank_uuid = :uuid LIMIT 1");
$stmt->execute([':uuid' => $prank_uuid]);
$prank_data = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$prank_data) {
die("Invalid delivery ID.");
}
$timeline = json_decode($prank_data['delivery_steps_json'], true);
$sms_messages = json_decode($prank_data['sms_messages_json'], true);
} catch (PDOException $e) {
// In a real app, log this error instead of dying.
error_log("Tracker DB Error: " . $e->getMessage());
die("Error retrieving delivery information.");
}
?>
Track Your Order
Your order for a is on its way!
Driver Updates
FILE 9: /home/delivery-tracker-prank.digitalprank.com/public_html/assets/css/tracker.css
code
CSS
body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; margin: 0; padding: 20px; color: #E0E0E0; transition: background-color 0.5s; }
.theme-modern { background-color: #1a1a1a; }
.theme-retro { background-color: #000084; font-family: 'Press Start 2P', cursive; color: #00ff00; }
.theme-fastfood { background-color: #FFD700; color: #D21404; }
.theme-horror { background-color: #100000; color: #ff4d4d; font-family: 'Creepster', cursive; font-size: 1.2em; }
.tracker-container { max-width: 700px; margin: auto; background: rgba(0,0,0,0.2); padding: 20px; border-radius: 12px; }
.theme-retro .tracker-container { border: 4px solid #00ff00; }
.header { text-align: center; margin-bottom: 30px; }
.header h1 { margin: 0; font-size: 2em; }
.header p { margin-top: 5px; }
.progress-bar { width: 100%; background: #555; border-radius: 10px; height: 20px; overflow: hidden; }
.theme-retro .progress-bar { border-radius: 0; background: #005500; }
.progress-bar-fill { width: 0; height: 100%; background: #FF8C00; transition: width 1s ease-in-out; }
.theme-retro .progress-bar-fill { background: #00ff00; }
.theme-horror .progress-bar-fill { background: #8B0000; }
.theme-fastfood .progress-bar-fill { background: #228B22; }
.timeline { list-style: none; padding: 0; margin-top: 20px; }
.timeline li { padding: 10px; border-left: 3px solid #555; margin-bottom: 10px; transition: all 0.5s; opacity: 0.5; }
.timeline li.active { border-left-color: #FF8C00; opacity: 1; transform: scale(1.02); background: rgba(255, 140, 0, 0.1); }
.timeline li.completed { border-left-color: #4CAF50; opacity: 0.8; }
.theme-retro .timeline li { border-image: none; border-left: 4px solid #005500; }
.theme-retro .timeline li.active { border-left-color: #00ff00; }
.theme-retro .timeline li.completed { border-left-color: #00aa00; opacity: 0.6; }
.sms-container { margin-top: 30px; padding: 15px; background: rgba(0,0,0,0.3); border-radius: 8px; }
.sms { display: none; margin-bottom: 10px; }
.sms.driver { text-align: left; }
.sms p { display: inline-block; padding: 8px 12px; border-radius: 15px; max-width: 70%; }
.sms.driver p { background-color: #333; }
.theme-fastfood .sms.driver p { background: #fff; }
.theme-retro .sms p { border-radius: 0; }
FILE 10: /home/delivery-tracker-prank.digitalprank.com/public_html/assets/js/tracker.js
code
JavaScript
document.addEventListener('DOMContentLoaded', () => {
if (typeof timelineData === 'undefined' || timelineData.length === 0) {
console.error("Tracker data not found.");
return;
}
const timelineElements = document.querySelectorAll('#timeline li');
const smsElements = document.querySelectorAll('#smsFeed .sms');
const progressBarFill = document.getElementById('progressBarFill');
let currentStep = -1;
let currentSms = 0;
function updateTracker() {
currentStep++;
// Update progress bar
const progress = ((currentStep + 1) / timelineData.length) * 100;
progressBarFill.style.width = progress + '%';
// Update timeline status
timelineElements.forEach((li, index) => {
if (index < currentStep) {
li.className = 'completed';
} else if (index === currentStep) {
li.className = 'active';
} else {
li.className = '';
}
});
// Show a random SMS message occasionally, after the first few steps
if (smsData && smsData.length > 0 && currentStep > 1 && Math.random() > 0.4 && currentSms < smsData.length) {
smsElements[currentSms].style.display = 'block';
smsElements[currentSms].scrollIntoView({ behavior: 'smooth', block: 'end' });
currentSms++;
}
}
const scheduleNextUpdate = () => {
if (currentStep >= timelineData.length - 1) {
return; // All steps are shown
}
const randomDelay = Math.random() * 3000 + 2000; // 2 to 5 seconds
setTimeout(() => {
updateTracker();
scheduleNextUpdate();
}, randomDelay);
};
// Initial call for the first step
updateTracker();
// Start scheduling subsequent updates
scheduleNextUpdate();
});
FILE 11: /home/delivery-tracker-prank.digitalprank.com/public_html/api/v1/generate.php```php
false, 'message' => 'An unknown error occurred.'];
$pdo = null;
try {
// --- API Authentication ---
$api_key = null;
$headers = getallheaders();
if (isset($headers['Authorization'])) {
if (preg_match('/Bearer\s(\S+)/', $headers['Authorization'], $matches)) {
$api_key = $matches[1];
}
}
if (!$api_key) {
throw new Exception('API key is missing.', 401);
}
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$user_data = checkApiKey($pdo, $api_key, $tool_slug); // This should return ['user_id' => X, 'tier' => 'ultimate'] on success
if (!$user_data || $user_data['tier'] !== 'ultimate') {
throw new Exception('Invalid API key or insufficient permissions.', 403);
}
$json_config = json_decode(file_get_contents('../../tool_config.json'), true)['tool'];
$input = json_decode(file_get_contents('php://input'), true);
if (!$input) {
throw new Exception('Invalid JSON input.', 400);
}
// --- API-Specific Processing ---
$max_len = $json_config['security']['max_input_length'];
$restaurant_name = isset($input['restaurant_name']) ? trim(htmlspecialchars(substr($input['restaurant_name'], 0, $max_len))) : '';
$food_item = isset($input['food_item']) ? trim(htmlspecialchars(substr($input['food_item'], 0, $max_len))) : '';
$theme_style = isset($input['theme_style']) ? $input['theme_style'] : 'modern';
if (empty($restaurant_name) || empty($food_item)) {
throw new Exception('restaurant_name and food_item are required for API calls.', 400);
}
$timeline = [];
$timeline[] = ['status' => 'Order Confirmed', 'detail' => 'We\'ve received the order for ' . $food_item . '.'];
$timeline[] = ['status' => 'Preparation', 'detail' => 'Our questionable chef is preparing the meal.'];
$timeline[] = ['status' => 'Out for Delivery', 'detail' => 'A driver has picked up the order.'];
$timeline[] = ['status' => 'Delivered', 'detail' => 'Your order has been left at the door.'];
$prank_uuid = uniqid('api_', true);
$stmt = $pdo->prepare(
"INSERT INTO custom_delivery_history (prank_uuid, user_id, restaurant_name, food_item, theme, delivery_steps_json, sms_messages_json, created_at)
VALUES (:uuid, :user_id, :restaurant, :item, :theme, :steps, '[]', NOW())"
);
$stmt->execute([
':uuid' => $prank_uuid,
':user_id' => $user_data['user_id'],
':restaurant' => $restaurant_name,
':item' => $food_item,
':theme' => $theme_style,
':steps' => json_encode($timeline)
]);
// --- Success Response ---
$response = [
'success' => true,
'message' => 'Prank tracker created successfully.',
'data' => [
'prank_id' => $prank_uuid,
'tracker_url' => "https://{$tool_slug}.digitalprank.com/tracker.php?id=" . $prank_uuid
]
];
logUsage($pdo, $tool_slug, 'api', $user_data['user_id'], 'api_generate', $input, $response['data'], 0, 'success');
} catch (Exception $e) {
$code = $e->getCode();
http_response_code(is_int($code) && $code >= 400 && $code < 600 ? $code : 500);
$response['message'] = $e->getMessage();
if ($pdo && isset($user_data['user_id'])) {
logUsage($pdo, $tool_slug, 'api', $user_data['user_id'], 'api_error', $input ?? [], ['error' => $e->getMessage()], 0, 'failed');
}
}
echo json_encode($response);
```
Model
ThinkingThoughts
(experimental)
Auto
Expand to view model thoughts
chevron_right
FILE 1: /home/delivery-tracker-prank.digitalprank.com/public_html/tool_config.json
code
JSON
{
"tool": {
"identity": {
"slug": "delivery-tracker-prank",
"name": "Delivery Tracker Tracker",
"category": "prank",
"tagline": "Track your hilarious custom food delivery in real-time!",
"description": "Simulate a custom food delivery with absurd restaurant names, ridiculous items, and chaotic delivery updates. Perfect for pranking your hungry friends.",
"keywords": ["custom delivery", "food prank", "order tracker", "funny delivery", "digital prank"]
},
"features": {
"bulk_enabled": false,
"history_enabled": true,
"export_enabled": true,
"api_enabled": true
},
"fields": [
{
"id": "restaurant_name",
"type": "text",
"label": "Restaurant Name",
"placeholder": "e.g., Soggy Pizza Co.",
"required": false,
"pro_only": true,
"help_text": "Custom name of the custom restaurant. Leave blank to randomize."
},
{
"id": "food_item",
"type": "text",
"label": "Food Item",
"placeholder": "e.g., Extra-Wet Burrito",
"required": false,
"pro_only": true,
"help_text": "Name the custom food item. Leave blank to randomize."
},
{
"id": "recipient_name",
"type": "text",
"label": "Recipient Name",
"placeholder": "e.g., Mario",
"required": false,
"pro_only": true,
"help_text": "Name to display in the delivery updates. Optional for added realism."
},
{
"id": "enable_map",
"type": "checkbox",
"label": "Enable Live Map Animation",
"default": true,
"pro_only": true,
"help_text": "Show a custom delivery map with the driver icon moving in real time."
},
{
"id": "include_sms",
"type": "checkbox",
"label": "Show Custom SMS Updates",
"default": true,
"pro_only": true,
"help_text": "Simulate SMS-style updates from your 'delivery driver'."
},
{
"id": "theme_style",
"type": "select",
"label": "Tracker Theme",
"default": "modern",
"options": [
{ "value": "modern", "label": "Modern" },
{ "value": "retro", "label": "Retro" },
{ "value": "fastfood", "label": "Fast Food Style" },
{ "value": "horror", "label": "Scary Delivery" }
],
"pro_only": false,
"help_text": "Pick a fun theme for the prank tracker UI."
}
],
"limits": {
"tier_daily": {
"free": 3,
"basic": 20,
"gold": 200,
"ultimate": -1
},
"rate_limit_per_minute": 10,
"max_concurrent_requests": 5
},
"billing": {
"credit_cost": 1,
"one_off_enabled": true,
"one_off_price_cents": 99,
"bill_on": "success"
},
"ui": {
"theme": {
"primary_color": "#FF8C00",
"secondary_color": "#292929"
},
"layout": {
"show_sidebar_ads": true,
"form_style": "standard",
"result_display": "animated_tracker"
}
},
"dependencies": {
"php_extensions": ["json", "pdo_mysql"],
"system_packages": [],
"python_packages": ["flask", "faker"],
"external_apis": [],
"requires_internet": false
},
"database": {
"tool_specific_table": "custom_delivery_history",
"store_results": true,
"enable_history": true,
"retention_days": 30
},
"seo": {
"meta_title": "Delivery Tracker Tracker | Hilarious Order Updates | DigitalPrank.com",
"meta_description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates. Create your prank now!",
"canonical_url": "https://digitalprank.com/tools/delivery-tracker-prank",
"structured_data": {
"type": "WebApplication",
"category": "Entertainment"
}
},
"help": {
"quick_start": [
"Step 1: Choose or randomize a restaurant and food item.",
"Step 2: Pick a theme and optional recipient name.",
"Step 3: Enable map or SMS simulation if desired.",
"Step 4: Generate and share the prank delivery tracker!"
],
"faq": [
{
"question": "Is this a real delivery?",
"answer": "No. This tool is for entertainment only and generates a custom tracker with funny updates. No food will actually be delivered."
},
{
"question": "Can I share the prank with friends?",
"answer": "Yes! After generating, you’ll get a shareable link or screenshot option."
},
{
"question": "Can I customize the steps or add delays?",
"answer": "Not yet — advanced prank flow editing is coming soon for Pro users."
}
],
"examples": [
{
"title": "The Wrong Order",
"description": "Send a delivery for a 'Cold Anchovy Milkshake' from 'Ye Olde Taco Shack'.",
"input": {
"restaurant_name": "Ye Olde Taco Shack",
"food_item": "Cold Anchovy Milkshake",
"theme_style": "retro"
}
},
{
"title": "Cursed Delivery",
"description": "Make it look like the delivery driver got lost in a graveyard.",
"input": {
"restaurant_name": "Ghost Tacos",
"food_item": "Ectoplasm Burrito",
"theme_style": "horror"
}
}
]
},
"monitoring": {
"track_usage": true,
"track_performance": true,
"error_reporting": true,
"analytics_events": [
"delivery_prank_created",
"theme_selected",
"export_clicked"
]
},
"security": {
"input_sanitization": true,
"csrf_protection": true,
"rate_limiting": true,
"blocked_domains": [],
"max_input_length": 200,
"allowed_file_types": []
},
"version": {
"schema": "3.0.0",
"tool": "1.0.0",
"api_version": "v1"
}
}
}
FILE 2: /home/delivery-tracker-prank.digitalprank.com/public_html/processor.php
code
PHP
false,
'message' => 'An unknown error occurred.',
'data' => null,
'usage' => null,
'access' => null,
'features' => null,
];
$pdo = null;
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$json_config = json_decode(file_get_contents('tool_config.json'), true)['tool'];
// --- User and Input Handling ---
session_start();
$user_id = isset($_SESSION['user_id']) ? (int)$_SESSION['user_id'] : 0;
$user_ip = $_SERVER['REMOTE_ADDR'];
$input = json_decode(file_get_contents('php://input'), true);
if (!$input) {
throw new Exception('Invalid input data.');
}
// CSRF Check
if (!isset($input['csrf_token']) || !isset($_SESSION['csrf_token']) || !hash_equals($_SESSION['csrf_token'], $input['csrf_token'])) {
throw new Exception('CSRF token validation failed.');
}
// --- Access and Usage Control ---
$access = getUserAccessLevel($pdo, $user_id, $tool_slug);
$limit = $json_config['limits']['tier_daily'][$access['tier']];
$usage_check = checkDailyUsage($pdo, $tool_slug, $user_ip, $user_id, $limit);
if (!$usage_check['can_proceed']) {
throw new Exception('Daily usage limit exceeded.');
}
// Fetch feature overrides
$overrides = getToolOverrides($pdo, $tool_slug);
$response['features'] = $overrides;
// {{TOOL_PROCESSING_START}}
// --- Input Validation & Sanitization ---
$max_len = $json_config['security']['max_input_length'];
$restaurant_name = isset($input['restaurant_name']) ? trim(htmlspecialchars(substr($input['restaurant_name'], 0, $max_len))) : '';
$food_item = isset($input['food_item']) ? trim(htmlspecialchars(substr($input['food_item'], 0, $max_len))) : '';
$recipient_name = isset($input['recipient_name']) ? trim(htmlspecialchars(substr($input['recipient_name'], 0, $max_len))) : '';
$enable_map = isset($input['enable_map']) ? (bool)$input['enable_map'] : false;
$include_sms = isset($input['include_sms']) ? (bool)$input['include_sms'] : false;
$theme_style = isset($input['theme_style']) && in_array($input['theme_style'], ['modern', 'retro', 'fastfood', 'horror']) ? $input['theme_style'] : 'modern';
// --- Pro Feature Gating ---
if (!$access['has_pro_access']) {
if (!empty($restaurant_name) || !empty($food_item) || !empty($recipient_name) || $enable_map || $include_sms) {
throw new Exception('Using custom names, map, or SMS updates requires a Pro subscription.');
}
}
// --- Data Generation ---
if (empty($restaurant_name)) {
$restaurants = ["Soggy Pizza Co.", "The Greasy Spoon", "Cosmic Cantina", "Ye Olde Taco Shack", "Ghost Tacos", "Burger Apocalypse"];
$restaurant_name = $restaurants[array_rand($restaurants)];
}
if (empty($food_item)) {
$foods = ["Extra-Wet Burrito", "Cold Anchovy Milkshake", "Ectoplasm Burrito", "Glow-in-the-dark Fries", "Sentient Meatball Sub", "Questionable Calzone"];
$food_item = $foods[array_rand($foods)];
}
$prank_recipient = empty($recipient_name) ? 'your' : htmlspecialchars($recipient_name) . "'s";
// --- Delivery Timeline Generation ---
$timeline = [];
$timeline[] = ['status' => 'Order Confirmed', 'detail' => 'We\'ve received the order for ' . $food_item . '.', 'icon' => 'receipt'];
$timeline[] = ['status' => 'Preparation', 'detail' => 'Our questionable chef is now preparing ' . $prank_recipient . ' meal.', 'icon' => 'chef'];
$timeline[] = ['status' => 'Quality Check', 'detail' => 'A manager is poking the food with a stick. It seems fine.', 'icon' => 'check'];
$timeline[] = ['status' => 'Out for Delivery', 'detail' => 'A driver has picked up the order. Their location is now visible.', 'icon' => 'delivery'];
if (rand(0,1)) $timeline[] = ['status' => 'Minor Delay', 'detail' => 'Driver is currently fighting a goose for a piece of bread.', 'icon' => 'warning'];
if (rand(0,1)) $timeline[] = ['status' => 'En Route', 'detail' => 'Driver has escaped the goose and is back on the road.', 'icon' => 'route'];
$timeline[] = ['status' => 'Arriving Soon', 'detail' => 'The driver is just around the corner, probably.', 'icon' => 'location'];
$timeline[] = ['status' => 'Delivered', 'detail' => $prank_recipient . ' order has been left at the door. Or a door. Definitely a door.', 'icon' => 'home'];
// --- SMS Generation ---
$sms_messages = [];
if ($include_sms && $access['has_pro_access']) {
$sms_messages[] = ['sender' => 'Driver', 'message' => 'On my way with your food.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'Ok I have to ask... you really ordered the ' . $food_item . '? Brave.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'I think your food is looking at me.'];
$sms_messages[] = ['sender' => 'Driver', 'message' => 'Almost there. Dropped it once but it seems okay. 5 second rule.'];
}
// --- Final Data Structure ---
$prank_uuid = uniqid('prank_', true);
$output_data = [
'prank_id' => $prank_uuid,
'restaurant_name' => $restaurant_name,
'food_item' => $food_item,
'recipient_name' => $recipient_name,
'enable_map' => $enable_map,
'include_sms' => $include_sms,
'theme_style' => $theme_style,
'timeline' => $timeline,
'sms_messages' => $sms_messages,
'tracker_url' => "https://{$tool_slug}.digitalprank.com/tracker.php?id=" . $prank_uuid
];
// --- Database Storage ---
if ($json_config['database']['store_results']) {
$stmt = $pdo->prepare(
"INSERT INTO custom_delivery_history (prank_uuid, user_id, restaurant_name, food_item, theme, delivery_steps_json, sms_messages_json, created_at)
VALUES (:uuid, :user_id, :restaurant, :item, :theme, :steps, :sms, NOW())"
);
$stmt->execute([
':uuid' => $prank_uuid,
':user_id' => $user_id,
':restaurant' => $restaurant_name,
':item' => $food_item,
':theme' => $theme_style,
':steps' => json_encode($timeline),
':sms' => json_encode($sms_messages)
]);
}
$response['success'] = true;
$response['message'] = 'Prank delivery tracker generated successfully!';
$response['data'] = $output_data;
// {{TOOL_PROCESSING_END}}
$processing_time = microtime(true) - $start_time;
logUsage($pdo, $tool_slug, $user_ip, $user_id, 'generate', $input, $response['data'], $processing_time, 'success');
$response['usage'] = checkDailyUsage($pdo, $tool_slug, $user_ip, $user_id, $limit); // Get updated usage
$response['access'] = $access;
} catch (Exception $e) {
$response['message'] = $e->getMessage();
$processing_time = microtime(true) - $start_time;
$error_data = ['error' => $e->getMessage()];
if ($pdo) {
logUsage($pdo, $tool_slug, (isset($user_ip) ? $user_ip : 'unknown'), (isset($user_id) ? $user_id : 0), 'generate_error', (isset($input) ? $input : []), $error_data, $processing_time, 'failed');
}
}
echo json_encode($response);
FILE 3: /home/delivery-tracker-prank.digitalprank.com/public_html/tool_form.php
code
PHP
- DigitalPrank
FILE 5: /home/delivery-tracker-prank.digitalprank.com/public_html/help.md
code
Markdown
# Help: Delivery Tracker Tracker
Simulate a custom food delivery with absurd restaurant names, ridiculous items, and chaotic delivery updates. Perfect for pranking your hungry friends.
## Quick Start Guide
Here's how to get your prank running in seconds:
1. **Step 1:** Choose or randomize a restaurant and food item. For a more personal touch, Pro users can enter custom names.
2. **Step 2:** Pick a theme for the tracker page. `Modern` is subtle, while `Horror` is over-the-top.
3. **Step 3 (Pro):** Enable map or SMS simulations for extra realism.
4. **Step 4:** Generate the prank and share the unique link with your friend!
## Features
- **Custom Restaurant & Food Names (PRO):** Specify your own hilarious restaurant and food items for a personalized prank. If left blank, the tool will pick from a list of absurd options.
- **Custom Recipient Name (PRO):** Add your friend's name to the tracker updates for maximum believability.
- **Live Map Animation (PRO):** Displays a custom map with a driver icon moving towards the destination, complete with silly updates. (This feature is simulated on the tracker page).
- **Custom SMS Updates (PRO):** Shows a simulated text message exchange with the increasingly unhinged delivery driver.
- **Tracker Themes:** Choose from several UI themes to match the mood of your prank:
- **Modern:** A sleek, standard delivery app look.
- **Retro:** A pixelated, old-school computer interface.
- **Fast Food Style:** Bright, bold, and greasy-looking.
- **Scary Delivery:** A horror-themed tracker for a truly cursed meal.
## API Access (Ultimate Tier)
Automate prank generation using our simple API. Send a POST request with a JSON body.
**Endpoint:** `https://delivery-tracker-prank.digitalprank.com/api/v1/generate.php`
**Headers:** `Authorization: Bearer YOUR_API_KEY`
**Example Request Body:**
```json
{
"restaurant_name": "Cosmic Cantina",
"food_item": "Meteor Meatballs",
"theme_style": "retro"
}
Frequently Asked Questions (FAQ)
Q: Is this a real delivery?
A: No. This tool is for entertainment only and generates a custom tracker with funny updates. No food will actually be delivered.
Q: Can I share the prank with friends?
A: Yes! After generating, you’ll get a shareable link. That's the whole point!
Q: Can I customize the delivery steps or add delays?
A: Not yet — advanced prank flow editing is coming soon for Pro users.
Usage Examples
1. The Wrong Order
Send a delivery for a 'Cold Anchovy Milkshake' from 'Ye Olde Taco Shack'.
Restaurant Name: Ye Olde Taco Shack
Food Item: Cold Anchovy Milkshake
Tracker Theme: Retro
2. Cursed Delivery
Make it look like the delivery driver got lost in a graveyard.
Restaurant Name: Ghost Tacos
Food Item: Ectoplasm Burrito
Tracker Theme: Horror
code
Code
### FILE 6: /home/digitalprank.com/public_html/blog/data/tools/delivery-tracker-prank.json```json
{
"slug": "delivery-tracker-prank",
"name": "Delivery Tracker Tracker",
"meta_title": "Delivery Tracker Tracker | Hilarious Order Updates | DigitalPrank.com",
"meta_description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates. Create your prank now!",
"keywords": ["custom delivery", "food prank", "order tracker", "funny delivery", "digital prank"],
"canonical_url": "https://digitalprank.com/tools/delivery-tracker-prank",
"primary_color": "#FF8C00",
"secondary_color": "#292929",
"short_description": "Create a shareable, animated custom food delivery tracker to prank your friends. Customize everything from the restaurant name to the chaotic delivery updates.",
"long_description": "Ever wanted to trick your friend into thinking their pizza was being delivered by a circus clown? Or that their burrito was delayed by a goose attack? The Delivery Tracker Tracker lets you do just that. Generate a realistic-looking but completely custom delivery screen with a live map, absurd status updates, and even simulated SMS messages from the driver. It's the perfect digital prank for anyone waiting on a real food order.",
"features": [
{
"name": "Customizable Orders (Pro)",
"description": "Enter any restaurant and food item you can imagine. The more ridiculous, the better!",
"icon": "edit"
},
{
"name": "Live Animated Map (Pro)",
"description": "Watch the 'driver' move across a map, encounter strange delays, and get hopelessly lost.",
"icon": "map"
},
{
"name": "Simulated SMS Updates (Pro)",
"description": "Add another layer of realism with custom text messages from your delivery driver.",
"icon": "sms"
},
{
"name": "Multiple Themes",
"description": "Choose from Modern, Retro, Fast Food, or even a spooky Horror theme to set the tone.",
"icon": "palette"
},
{
"name": "API Access (Ultimate)",
"description": "Automate prank generation and integrate the tracker into your own applications.",
"icon": "code"
},
{
"name": "Instant Sharable Link",
"description": "Generate your prank and get a unique link to send to your target immediately.",
"icon": "share"
}
],
"user_guide": {
"title": "How to Prank Your Friends",
"steps": [
"Navigate to the Delivery Tracker Tracker tool.",
"For the best results, use the Pro options to enter a custom restaurant and food item that your friend might actually order.",
"Select a theme. 'Modern' is more believable, while 'Horror' is great for a laugh.",
"Click 'Generate Prank Tracker' to get your unique, shareable link.",
"Send the link to your friend and tell them 'Your food is on the way!'"
]
},
"technical_details": {
"frontend": "HTML, CSS, JavaScript (for dynamic form and result display)",
"backend": "PHP 8.1+",
"database": "MySQL for storing prank history",
"dependencies": "Relies on core platform functions for user management and usage tracking."
},
"structured_data": {
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Delivery Tracker Tracker",
"description": "Simulate hilarious custom food deliveries with live order tracking, ridiculous items, and absurd updates.",
"applicationCategory": "EntertainmentApplication",
"operatingSystem": "Any (Web-based)",
"url": "https://delivery-tracker-prank.digitalprank.com",
"publisher": {
"@type": "Organization",
"name": "DigitalPrank.com"
}
}
}
FILE 7: /home/delivery-tracker-prank.digitalprank.com/public_html/deploy.sh
code
Bash
#!/bin/bash
set -e
TOOL_SLUG="delivery-tracker-prank"
TOOL_DOMAIN="${TOOL_SLUG}.digitalprank.com"
TOOL_DIR="/home/${TOOL_DOMAIN}/public_html"
VHOST_CONF_DIR="/usr/local/lsws/conf/vhosts"
DB_NAME="digitalprank_db"
DB_USER="dp_user"
DB_PASS="#$Dealer2355"
echo "--- [START] Deployment for ${TOOL_SLUG} ---"
# 1. System & PHP Dependencies
echo "--> Installing system dependencies..."
apt-get update > /dev/null
apt-get install -y php8.1-json php8.1-mysql python3-venv
# 2. Directory Structure and Permissions
echo "--> Creating tool directories at ${TOOL_DIR}..."
mkdir -p ${TOOL_DIR}/api/v1
mkdir -p ${TOOL_DIR}/assets/css
mkdir -p ${TOOL_DIR}/assets/js
chown -R www-data:www-data ${TOOL_DIR}
chmod -R 755 ${TOOL_DIR}
# 3. Python Virtual Environment
echo "--> Setting up Python virtual environment..."
if [ ! -d "${TOOL_DIR}/venv" ]; then
python3 -m venv ${TOOL_DIR}/venv
source ${TOOL_DIR}/venv/bin/activate
pip install --upgrade pip > /dev/null
pip install flask faker > /dev/null
deactivate
chown -R www-data:www-data ${TOOL_DIR}/venv
echo "Python venv created and packages installed."
else
echo "Python venv already exists."
fi
# 4. Database Table Creation
echo "--> Creating database table 'custom_delivery_history' if not exists..."
SQL_CREATE_TABLE="
CREATE TABLE IF NOT EXISTS \`custom_delivery_history\` (
\`id\` BIGINT NOT NULL AUTO_INCREMENT,
\`prank_uuid\` VARCHAR(32) NOT NULL UNIQUE,
\`user_id\` BIGINT DEFAULT 0,
\`restaurant_name\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`food_item\` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
\`theme\` VARCHAR(50),
\`delivery_steps_json\` JSON,
\`sms_messages_json\` JSON,
\`created_at\` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (\`id\`),
INDEX \`idx_user_id\` (\`user_id\`),
INDEX \`idx_created_at\` (\`created_at\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"
mysql -h localhost -u"${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" -e "${SQL_CREATE_TABLE}"
echo "Database table check/creation complete."
# 5. OpenLiteSpeed Virtual Host Configuration
echo "--> Configuring OpenLiteSpeed virtual host..."
VHOST_CONFIG_FILE="${VHOST_CONF_DIR}/${TOOL_DOMAIN}.conf"
if [ ! -f "$VHOST_CONFIG_FILE" ]; then
cat > "$VHOST_CONFIG_FILE" < Restarting OpenLiteSpeed to apply changes..."
/usr/local/lsws/bin/lswsctrl restart
echo "--- [SUCCESS] Deployment for ${TOOL_SLUG} complete. ---"
echo "Verify the site at https://${TOOL_DOMAIN}"
FILE 8: /home/delivery-tracker-prank.digitalprank.com/public_html/tracker.php
code
PHP
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT * FROM custom_delivery_history WHERE prank_uuid = :uuid LIMIT 1");
$stmt->execute([':uuid' => $prank_uuid]);
$prank_data = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$prank_data) {
die("Invalid delivery ID.");
}
$timeline = json_decode($prank_data['delivery_steps_json'], true);
$sms_messages = json_decode($prank_data['sms_messages_json'], true);
} catch (PDOException $e) {
error_log("Tracker DB Error: " . $e->getMessage());
die("Error retrieving delivery information.");
}
?>
Track Your Order