diff --git a/NOTLOOP_INFINITE CRINGE.py.py b/NOTLOOP_INFINITE CRINGE.py.py
new file mode 100644
index 000000000..22f02685e
--- /dev/null
+++ b/NOTLOOP_INFINITE CRINGE.py.py
@@ -0,0 +1,136 @@
+import tkinter as tk
+from tkinter import messagebox
+import threading
+import time
+import random
+from plyer import notification
+from pynput import keyboard
+
+# --- Notification Content ---
+useless_facts = [
+ "A group of flamingos is called a flamboyance.",
+ "Bananas are berries, but strawberries aren't.",
+ "Octopuses have three hearts.",
+ "The Eiffel Tower can grow taller in summer.",
+ "Cows moo with regional accents.",
+ "Mosquitoes are attracted to people who just ate bananas.",
+ "If you lift a goldfish out of water, it forgets everything instantly.",
+]
+
+cringe_dialogues = [
+ "Are you Google? Because you have everything I’ve been searching for.",
+ "If beauty were time, you’d be eternity.",
+ "I put the 'pro' in procrastination.",
+ "You're so bright, even the sun wears shades.",
+ "Are you a keyboard? Because you're just my type.",
+]
+
+roasts = [
+ "Backspace won't fix your life choices.",
+ "Trying to erase your failures with Backspace?",
+ "You press backspace like it’ll delete your personality.",
+ "Deleting won't help. You're still wrong.",
+ "Your keyboard's crying from all the regrets you're backspacing.",
+]
+
+riddles = [
+ ("What has keys but can't open locks?", "keyboard"),
+ ("The more you take, the more you leave behind. What am I?", "footsteps"),
+ ("What gets wetter as it dries?", "towel"),
+ ("What has to be broken before you can use it?", "egg"),
+ ("I'm tall when I'm young and short when I'm old. What am I?", "candle")
+]
+
+# --- Function Definitions ---
+def show_notification(message):
+ notification.notify(
+ title="🔥 Gotcha!",
+ message=message,
+ timeout=3
+ )
+
+def spam_notifications():
+ for _ in range(12):
+ msg = random.choice(useless_facts + cringe_dialogues + roasts)
+ show_notification(msg)
+ time.sleep(5)
+
+def show_riddle_lock():
+ def check_answers():
+ correct = 0
+ for i in range(5):
+ if entries[i].get().strip().lower() == riddles[i][1]:
+ correct += 1
+ if correct == 5:
+ root.destroy()
+ else:
+ result_label.config(text=f"{correct}/5 correct. Try again!")
+
+ root = tk.Toplevel()
+ root.title("🧠 Solve to Escape!")
+ tk.Label(root, text="Solve all 5 riddles to continue", font=("Comic Sans MS", 12, "bold")).pack(pady=5)
+
+ entries = []
+ for q, _ in riddles:
+ tk.Label(root, text=q, font=("Comic Sans MS", 10)).pack()
+ entry = tk.Entry(root, font=("Comic Sans MS", 10))
+ entry.pack(pady=2)
+ entries.append(entry)
+
+ tk.Button(root, text="Submit", command=check_answers, font=("Comic Sans MS", 10), bg="#FFD700").pack(pady=5)
+ result_label = tk.Label(root, text="", font=("Comic Sans MS", 10))
+ result_label.pack()
+
+ root.mainloop()
+
+def on_key_press(key):
+ try:
+ if key == keyboard.Key.backspace:
+ roast = random.choice(roasts)
+ show_notification(roast)
+ except:
+ pass
+
+def fake_notification_trigger():
+ while running_event.is_set():
+ time.sleep(30)
+ if running_event.is_set():
+ threading.Thread(target=spam_notifications).start()
+ app.after(0, show_riddle_lock) # triggers the riddle challenge in main thread
+
+
+def start_app():
+ global running_event
+ start_btn.config(state="disabled")
+ running_event.set()
+ threading.Thread(target=fake_notification_trigger, daemon=True).start()
+ threading.Thread(target=lambda: keyboard.Listener(on_press=on_key_press).run(), daemon=True).start()
+ messagebox.showinfo("App Running", "App is now running in the background. Press Backspace anywhere!")
+
+# --- GUI Interface ---
+app = tk.Tk()
+app.title("🎉 NotiLoop Prank App")
+app.geometry("400x300")
+app.configure(bg="#FFE4E1")
+
+# Cartoon-style header
+tk.Label(app, text="😈 Welcome to NotiLoop!", font=("Comic Sans MS", 16, "bold"), bg="#FFE4E1", fg="#FF1493").pack(pady=20)
+tk.Label(app, text="Your fun, annoying prank app", font=("Comic Sans MS", 10), bg="#FFE4E1").pack(pady=5)
+
+# Start button
+start_btn = tk.Button(app, text="Start Chaos!", command=start_app, font=("Comic Sans MS", 12, "bold"), bg="#FF69B4", fg="white", relief="raised")
+start_btn.pack(pady=30)
+
+
+
+
+# Control flag
+running_event = threading.Event()
+
+def on_app_close():
+ show_riddle_lock()
+
+app.protocol("WM_DELETE_WINDOW", on_app_close)
+
+# Launch GUI
+app.mainloop()
diff --git a/README.md b/README.md
index 597b39b44..07c9e969b 100644
--- a/README.md
+++ b/README.md
@@ -1,60 +1,52 @@
-# [Project Name] 🎯
+# NOTILOOP: INFINITE CRINGE 🎯
## Basic Details
-### Team Name: [Name]
+### Team Name: FIREFLY
### Team Members
-- Team Lead: [Name] - [College]
-- Member 2: [Name] - [College]
-- Member 3: [Name] - [College]
+
+- Member 1: RISHANANDA V R - College of Engineering Attingal
+- Member 2: ANIKA KARUVAN KAVIL - College of Engineering Attingal
### Project Description
-[2-3 lines about what your project does]
+This prototype of an app is a chaotic devil thats triggers a loop of notifications for a certain time period whenever the user recieves a random message/notification. The notification pops up with random pointless facts, cringe dialogues.
+This app further adds to the mess by sending roasts that melts your brain whenever user hit backspace.
+It adds more to the chaos by pushing the user to solve riddles to close this loop.
### The Problem (that doesn't exist)
-[What ridiculous problem are you solving?]
+You are at peace.
### The Solution (that nobody asked for)
-[How are you solving it? Keep it fun!]
+Sends you messages that roasts you
## Technical Details
### Technologies/Components Used
For Software:
-- [Languages used]
-- [Frameworks used]
-- [Libraries used]
-- [Tools used]
+- Languages used - Python
+- Frameworks used - playwright
+- Libraries used - time, threading, tkinter, plyer, pynput, random
+- Tools used - VsCode, pythonv3.13, windows
-For Hardware:
-- [List main components]
-- [List specifications]
-- [List tools required]
### Implementation
-For Software:
+For Software: with the help of chatpgt and mentors
# Installation
-[commands]
+VSCODE, GITHUB, PYTHON
-# Run
-[commands]
### Project Documentation
For Software:
# Screenshots (Add at least 3)
-
-*Add caption explaining what this shows*
-
-
-*Add caption explaining what this shows*
-
-
-*Add caption explaining what this shows*
+SCreenshot 55 - Notifications popping up
+Screenshot 56 - Showing riddles
+Screenshot 2025-08-02 154205 - Copy.png - User interface
+Screenshot 2025-08-02 154230.png - App seeking permission
# Diagrams

@@ -81,17 +73,14 @@ For Hardware:
### Project Demo
# Video
-[Add your demo video link here]
-*Explain what the video demonstrates*
+https://github.com/RISHANANDA/team_firefly/blob/main/NOTLOOP_INFINITE%20CRINGE.py.py%20-%20team_firefly%20-%20Visual%20Studio%20Code%202025-08-02%2016-23-45.mp4
# Additional Demos
[Add any extra demo materials/links]
## Team Contributions
-- [Name 1]: [Specific contributions]
-- [Name 2]: [Specific contributions]
-- [Name 3]: [Specific contributions]
-
+- RISHANANDA VR - TEAMWORK
+- ANIKA KARUVAN KAVIL - TEAMWORK
---
Made with ❤️ at TinkerHub Useless Projects
diff --git a/useless_project.html b/useless_project.html
new file mode 100644
index 000000000..10715272e
--- /dev/null
+++ b/useless_project.html
@@ -0,0 +1,78 @@
+
+
+
Get ready to regret your life choices.
+ + +