feat: unleash maximum chaos with 'IT'S FUCKING DUSTIN'S FAULT' website

- Transform into hilariously offensive Docker-hosted blame portal
- Add Apache container with custom 404 blaming Dustin
- Implement MySQL database tracking all of Dustin's eternal sins
- Create interactive features: live incident feed, apology generator, nuclear option
- Add ridiculous animations, sound effects, and CRT-style UI
- Include CGI script for extra blame generation
- Set up docker-compose with phpMyAdmin for database admin
- Maximum crassness with zero restraint - everything is Dustin's fault
This commit is contained in:
2026-02-25 12:00:13 -05:00
parent 70ffc2b62b
commit feaf614dd5
7 changed files with 1333 additions and 106 deletions

14
.gitignore vendored Normal file
View File

@@ -0,0 +1,14 @@
# Database and log files (generated at runtime)
mysql-data/
logs/
# Node modules (if any)
node_modules/
# OS generated files
.DS_Store
Thumbs.db
# Temporary files
*.tmp
*.temp

43
Dockerfile Normal file
View File

@@ -0,0 +1,43 @@
FROM httpd:2.4-alpine
# Install some fun utilities (because why not?)
RUN apk add --no-cache \
fortune \
figlet \
&& echo "#!/bin/sh" > /usr/local/bin/blame-dustin \
&& echo 'echo "This is Dustin'\''s fault. Obviously."' >> /usr/local/bin/blame-dustin \
&& chmod +x /usr/local/bin/blame-dustin
# Create a custom error page that blames Dustin for everything
RUN echo '<!DOCTYPE html><html><head><title>Error - Dustin'\''s Fault</title><style>body{font-family: monospace;background:#000;color:#0f0;margin:40px}h1{color:#f00}pre{color:#ff0}</style></head><body><h1>ERROR 404 - PAGE NOT FOUND</h1><p>This page doesn'\''t exist. You know who to blame.</p><pre>' > /usr/local/apache2/htdocs/404.html \
&& echo " _____ _ _ _ " >> /usr/local/apache2/htdocs/404.html \
&& echo " | __ \ | | (_) | | " >> /usr/local/apache2/htdocs/404.html \
&& echo " | | | | ___| |_ _ _ __ | |_ " >> /usr/local/apache2/htdocs/404.html \
&& echo " | | | |/ _ \ __| | '_ \| __|" >> /usr/local/apache2/htdocs/404.html \
&& echo " | |__| | __/ |_| | | | | |_ " >> /usr/local/apache2/htdocs/404.html \
&& echo " |_____/ \___|\__|_|_| |_|\__|" >> /usr/local/apache2/htdocs/404.html \
&& echo " " >> /usr/local/apache2/htdocs/404.html \
&& echo " It's Dustin's fault. Obviously." >> /usr/local/apache2/htdocs/404.html \
&& echo '</pre><p><a href="/" style="color:#0ff">Go back to blaming Dustin properly</a></p></body></html>' >> /usr/local/apache2/htdocs/404.html
# Copy our website files
COPY index.html /usr/local/apache2/htdocs/
COPY cgi-bin/blame-dustin.cgi /usr/local/apache2/cgi-bin/
# Enable CGI and set up custom error pages
RUN sed -i '/LoadModule cgid_module/s/^#//g' /usr/local/apache2/conf/httpd.conf \
&& sed -i '/ScriptAlias \/cgi-bin\//s/^#//g' /usr/local/apache2/conf/httpd.conf \
&& sed -i '/<Directory "\/usr\/local\/apache2\/cgi-bin">/,/<\/Directory>/s/^#//g' /usr/local/apache2/conf/httpd.conf \
&& sed -i 's/Options Indexes FollowSymLinks/Options Indexes FollowSymLinks ExecCGI/g' /usr/local/apache2/conf/httpd.conf \
&& echo 'ErrorDocument 404 /404.html' >> /usr/local/apache2/conf/httpd.conf \
&& echo 'ErrorDocument 500 "<html><body><h1>500 Internal Server Error</h1><p>Dustin fucked up the server. Again.</p></body></html>"' >> /usr/local/apache2/conf/httpd.conf \
&& echo 'ErrorDocument 403 "<html><body><h1>403 Forbidden</h1><p>Dustin says you can'\''t see this. What an asshole.</p></body></html>"' >> /usr/local/apache2/conf/httpd.conf
# Make sure CGI scripts are executable
RUN chmod +x /usr/local/apache2/cgi-bin/blame-dustin.cgi
# Expose port 80
EXPOSE 80
# Start Apache in foreground
CMD ["httpd-foreground"]

View File

@@ -1,34 +1,82 @@
# itsdustinsfault.com
# IT'S FUCKING DUSTIN'S FAULT — OFFICIAL BLAME PORTAL
## Overview
Terminal-style incident dashboard where **everything** is Dustin's fault. Absurd corporate IT humor for Dustin's friends.
The most offensive, hilarious, and utterly ridiculous website ever created. A Docker-hosted Apache monstrosity that blames everything on Dustin with maximum crassness and zero fucks given.
**Live Demo:** [itsdustinsfault.com](https://itsdustinsfault.com) (once deployed)
## Features
- Live auto-generating incidents blaming Dustin
- File your own reports (always Dustin's fault)
- Typing animations, sound effects (toggleable), CRT glitches
- Stats counters & ASCII fault graph
- Easter egg: \"dustin innocent\" → +100 faults!
- **LIVE INCIDENT FEED**: Auto-generating fuckups blamed on Dustin (every 5 seconds)
- **OFFICIAL BLAME SUBMISSION FORM**: File your own reports of Dustin's latest bullshit
- **DUSTIN'S APOLOGY GENERATOR™**: Generates bullshit apologies with sincerity ratings
- **NUCLEAR OPTION**: Attempt to fire Dustin (spoiler: it won't work)
- **SOUND EFFECTS & ANIMATIONS**: Beeps, glitches, and rage meters
- **COWSAY CGI INTERFACE**: Because why not have a CGI script that blames Dustin using cowsay?
- **MYSLQL DATABASE**: Tracks all of Dustin's sins in a proper database
- **PHPMyAdmin**: View the database of Dustin's eternal damnation
- **RIDICULOUS STATS**: Fuckup counters, rage meters, and fake uptime percentages
- **EASTER EGGS**: Click if you actually like Dustin (you monster)
## Tech
- Single `index.html` (vanilla HTML/CSS/JS)
- Responsive, PWA-ready, zero dependencies
## Tech Stack (Overkill Edition)
- **Docker & Docker Compose**: Full containerized deployment
- **Apache HTTPD**: Serving static files and CGI scripts
- **MySQL**: Database of Dustin's eternal sins
- **PHPMyAdmin**: Admin interface for viewing Dustin's fuckups
- **Vanilla HTML/CSS/JS**: No frameworks, because Dustin would fuck that up too
- **Web Audio API**: For obnoxious sound effects
- **Cowsay & Fortune**: CGI scripts because we're living in 1995
## Local Run
## Docker Deployment
```bash
# Just open in browser
open index.html
# or
python -m http.server 8000
# Start the entire blame ecosystem
docker-compose up -d
# Access the main site
# http://localhost:8080
# Access phpMyAdmin (to view Dustin's sins)
# http://localhost:8081
# Username: dustin
# Password: blame_me
```
## Deploy
1. Drag `index.html` to Netlify/Vercel
2. Point DNS to itsdustinsfault.com
## Local Development
```bash
# Just open in browser (for cowards)
open index.html
## Screenshots
[Add later]
# Or run the full Docker stack
docker-compose up
```
© 2026 Dustin Fault Monitoring Division
## Architecture
```
dustins-fault-website/
├── index.html # The main blame portal
├── Dockerfile # Apache container with cowsay & fortune
├── docker-compose.yml # Full stack with MySQL & phpMyAdmin
├── cgi-bin/
│ └── blame-dustin.cgi # CGI script for cowsay blaming
├── mysql-init/
│ └── 01-init.sql # Database schema & sample fuckups
├── logs/ # Apache logs
├── mysql-data/ # Persistent database storage
└── README.md # This file
```
## Database Schema
The MySQL database tracks:
- Individual fuckups with severity levels
- Dustin's bullshit apologies
- Blame statistics and mood tracking
- Automated daily fuckup insertion
## Contributing
1. Think of something even more offensive
2. Add it to the codebase
3. Blame Dustin for any bugs
## Legal Disclaimer
This website is pure satire and contains extreme profanity. If you're offended, it's probably Dustin's fault anyway.
© 2026 Corporate Blame Allocation Division — All faults reserved. Dustin takes full responsibility.

92
cgi-bin/blame-dustin.cgi Executable file
View File

@@ -0,0 +1,92 @@
#!/bin/sh
echo "Content-type: text/html"
echo ""
cat << EOF
<!DOCTYPE html>
<html>
<head>
<title>Blame Dustin - CGI Edition</title>
<style>
body {
font-family: 'Courier New', monospace;
background: #000;
color: #0f0;
margin: 40px;
text-align: center;
}
h1 {
color: #f00;
text-shadow: 0 0 10px #f00;
font-size: 3em;
}
pre {
color: #ff0;
font-size: 1.2em;
text-align: left;
display: inline-block;
background: #111;
padding: 20px;
border: 2px solid #f00;
border-radius: 10px;
}
.apology {
color: #0ff;
font-size: 1.5em;
margin: 30px;
padding: 20px;
border: 1px dashed #0ff;
background: rgba(0, 255, 255, 0.1);
}
.blame-button {
background: #f00;
color: #000;
border: none;
padding: 15px 30px;
font-size: 1.2em;
font-weight: bold;
cursor: pointer;
margin: 20px;
border-radius: 5px;
}
.blame-button:hover {
background: #ff0;
color: #f00;
}
</style>
</head>
<body>
<h1>OFFICIAL DUSTIN BLAMING INTERFACE</h1>
<pre>
$(/usr/bin/fortune)
</pre>
<p><b>Dustin's fault level:</b> $(echo $((RANDOM % 100 + 1)) )%</p>
<p><b>Figlet says:</b></p>
<pre>
$(echo "DUSTIN'S FAULT" | /usr/bin/figlet)
</pre>
<div class="apology">
$(echo "I'm sorry. It's my fault. I fucked up." | /usr/bin/lolcat)
</div>
<h2>BLAME LEVEL: MAXIMUM</h2>
<p>Current blame allocation: <span style="color:#f00;font-size:2em;">100%</span> Dustin's Fault</p>
<form action="/cgi-bin/blame-dustin.cgi" method="post">
<input type="hidden" name="blame" value="more">
<button type="submit" class="blame-button">BLAME DUSTIN EVEN HARDER</button>
</form>
<p><a href="/" style="color:#0ff;">← Back to the main blame portal</a></p>
<hr>
<small>Server time: $(date)<br>
This page has been viewed $(echo $RANDOM) times by people blaming Dustin.<br>
Total apologies generated: $(echo $((RANDOM * 1000)))</small>
</body>
</html>
EOF

62
docker-compose.yml Normal file
View File

@@ -0,0 +1,62 @@
version: '3.8'
services:
dustins-fault:
build: .
container_name: dustins-fault-website
ports:
- "8080:80"
- "8443:443" # Because why not have HTTPS for a joke site?
volumes:
- ./logs:/usr/local/apache2/logs
environment:
- APACHE_RUN_USER=www-data
- APACHE_RUN_GROUP=www-data
- APACHE_LOG_DIR=/usr/local/apache2/logs
- TZ=America/New_York
restart: unless-stopped
networks:
- dustins-fault-net
labels:
- "com.dustinsfault.description=Website blaming Dustin for everything"
- "com.dustinsfault.blame-level=maximum"
- "com.dustinsfault.apologies-required=infinite"
# Because why not add a MySQL database to track all the things Dustin has fucked up?
dustins-fault-db:
image: mysql:8.0
container_name: dustins-fault-database
environment:
- MYSQL_ROOT_PASSWORD=itsdustinsfault
- MYSQL_DATABASE=dustins_faults
- MYSQL_USER=dustin
- MYSQL_PASSWORD=blame_me
volumes:
- ./mysql-data:/var/lib/mysql
- ./mysql-init:/docker-entrypoint-initdb.d
networks:
- dustins-fault-net
restart: unless-stopped
labels:
- "com.dustinsfault.purpose=Track Dustin's endless fuckups"
# And a phpMyAdmin because we're fancy like that
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: dustins-fault-phpmyadmin
environment:
- PMA_HOST=dustins-fault-db
- PMA_PORT=3306
- PMA_ARBITRARY=1
ports:
- "8081:80"
networks:
- dustins-fault-net
restart: unless-stopped
labels:
- "com.dustinsfault.purpose=View database of Dustin's sins"
networks:
dustins-fault-net:
driver: bridge
name: dustins-fault-network

1034
index.html

File diff suppressed because it is too large Load Diff

104
mysql-init/01-init.sql Normal file
View File

@@ -0,0 +1,104 @@
-- Database of Dustin's Faults
-- Because we need to track this shit properly
CREATE DATABASE IF NOT EXISTS dustins_faults;
USE dustins_faults;
-- Table for tracking individual fuckups
CREATE TABLE IF NOT EXISTS fuckups (
id INT AUTO_INCREMENT PRIMARY KEY,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
description TEXT NOT NULL,
severity ENUM('minor', 'major', 'catastrophic', 'apocalyptic') DEFAULT 'major',
blame_percentage INT DEFAULT 100 CHECK (blame_percentage BETWEEN 0 AND 100),
dustin_excuse TEXT,
created_by VARCHAR(255) DEFAULT 'Anonymous Blamer'
);
-- Table for Dustin's apologies (mostly empty)
CREATE TABLE IF NOT EXISTS apologies (
id INT AUTO_INCREMENT PRIMARY KEY,
fuckup_id INT,
apology_text TEXT,
sincerity_level ENUM('none', 'low', 'medium', 'high', 'bullshit') DEFAULT 'bullshit',
apology_date DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (fuckup_id) REFERENCES fuckups(id) ON DELETE CASCADE
);
-- Table for blame statistics
CREATE TABLE IF NOT EXISTS blame_stats (
id INT AUTO_INCREMENT PRIMARY KEY,
date DATE UNIQUE,
total_fuckups INT DEFAULT 0,
avg_blame_percentage DECIMAL(5,2) DEFAULT 100.00,
dustin_mood ENUM('defensive', 'apologetic', 'denial', 'blames_others') DEFAULT 'defensive'
);
-- Insert some initial data because Dustin has been busy
INSERT INTO fuckups (description, severity, dustin_excuse) VALUES
('Forgot to commit code before leaving for the day', 'catastrophic', 'My cat stepped on the keyboard'),
('Pushed to production on Friday at 4:55 PM', 'apocalyptic', 'I wanted to get a head start on Monday'),
('Deleted the production database instead of staging', 'apocalyptic', 'The buttons looked the same'),
('Spilled coffee on the server rack', 'major', 'The cup was slippery'),
('Set password to "password123" for "security"', 'major', 'I wanted to make it easy for everyone'),
('Scheduled maintenance during peak hours', 'catastrophic', 'I thought nobody would notice'),
('Used Comic Sans in the company presentation', 'minor', 'It looked friendly'),
('Accidentally replied all to company-wide email with "this meeting could have been an email"', 'major', 'My finger slipped');
-- Insert corresponding apologies (all bullshit, obviously)
INSERT INTO apologies (fuckup_id, apology_text, sincerity_level) VALUES
(1, 'Sorry not sorry, the cat made me do it', 'bullshit'),
(2, 'My bad, but have you tried working on weekends?', 'none'),
(3, 'Oopsie daisy! At least we have backups... right?', 'low'),
(4, 'The coffee was really good though, worth it', 'none'),
(5, 'Security through obscurity is overrated', 'bullshit'),
(6, 'I was optimizing for my own schedule', 'none'),
(7, 'Comic Sans is underappreciated', 'medium'),
(8, 'We all were thinking it, I just said it', 'high');
-- Create a view for the worst offenses
CREATE VIEW worst_fuckups AS
SELECT
f.*,
a.apology_text,
a.sincerity_level
FROM fuckups f
LEFT JOIN apologies a ON f.id = a.fuckup_id
WHERE f.severity IN ('catastrophic', 'apocalyptic')
ORDER BY f.timestamp DESC;
-- Create a stored procedure to add new fuckups
DELIMITER //
CREATE PROCEDURE add_fuckup(
IN p_description TEXT,
IN p_severity VARCHAR(20),
IN p_excuse TEXT,
IN p_blamer VARCHAR(255)
)
BEGIN
INSERT INTO fuckups (description, severity, dustin_excuse, created_by)
VALUES (p_description, p_severity, p_excuse, p_blamer);
-- Auto-add a bullshit apology
INSERT INTO apologies (fuckup_id, apology_text, sincerity_level)
VALUES (LAST_INSERT_ID(),
CONCAT('I''m sorry you feel that way about ', p_description),
'bullshit');
END //
DELIMITER ;
-- Create an event to auto-add daily fuckups (because Dustin is consistent)
DELIMITER //
CREATE EVENT daily_dustin_fuckup
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP
DO
BEGIN
CALL add_fuckup(
CONCAT('Daily fuckup #', FLOOR(RAND() * 1000)),
ELT(FLOOR(RAND() * 4) + 1, 'minor', 'major', 'catastrophic', 'apocalyptic'),
ELT(FLOOR(RAND() * 5) + 1, 'It was Tuesday', 'The stars were misaligned', 'I was hungry', 'My horoscope said so', 'Aliens'),
'Auto-Blame-Bot 3000'
);
END //
DELIMITER ;