diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9825696 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Michael Maurakis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/content.js b/content.js index a1ca17b..61ceca5 100644 --- a/content.js +++ b/content.js @@ -1,12 +1,77 @@ -// Create the button -const button = document.createElement('button'); -button.id = 'fumbleButton'; -button.textContent = 'Fumble!'; +// Create the floating button +const floatingButton = document.createElement('button'); +floatingButton.id = 'openInNewTab'; +floatingButton.className = 'floating-button'; +floatingButton.title = 'Open in new window'; +floatingButton.innerHTML = ` + + + +`; // Add click handler -button.addEventListener('click', () => { - window.location.href = 'https://wiby.me/surprise/'; +floatingButton.addEventListener('click', () => { + window.open(window.location.href, '_blank'); }); -// Add button to page -document.body.appendChild(button); \ No newline at end of file +// Add styles +const style = document.createElement('style'); +style.textContent = ` + .floating-button { + position: fixed; + right: 20px; + top: 20px; + width: 40px; + height: 40px; + border-radius: 50%; + background: rgba(255, 69, 0, 0.9); + border: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + transform: scale(0.9); + transition: opacity 0.3s ease, transform 0.3s ease, background-color 0.3s ease; + z-index: 999999; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); + } + + .floating-button svg { + width: 20px; + height: 20px; + color: white; + } + + body:hover .floating-button { + opacity: 1; + transform: scale(1); + } + + .floating-button:hover { + background: rgba(255, 69, 0, 1); + transform: scale(1.1); + } + + @media (hover: none) { + .floating-button { + opacity: 0.9; + transform: scale(1); + } + + .floating-button:hover { + transform: scale(1); + } + } + + @media (max-width: 768px) { + .floating-button { + bottom: 20px; + top: auto; + } + } +`; + +// Add elements to page +document.head.appendChild(style); +document.body.appendChild(floatingButton); \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..bef9915 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +services: + tailscale-fumble: + image: tailscale/tailscale:latest + hostname: fumblearound # Assign a name this so that you can set your domain name ex. https://tail.penguin-dory.ts.net + ports: # Uncomment the next two lines to expose the container to your local area network. + - 80:80 + environment: + - TS_AUTHKEY= # BE SURE TO ADD YOUR KEY AS NOTHING WILL WORK + #- TS_EXTRA_ARGS=--advertise-tags=tag:container # Uncomment this if you want to add a tag to your node. Useful for access control lists. + #- TS_FUNNEL_CONFIG=/config/funnel.json # Uncomment this and comment the next line if you want to host your app publicly. + #- TS_SERVE_CONFIG=/config/serve.json # Comment this line if you uncomment the one above. + - TS_STATE_DIR=/var/lib/tailscale + - TS_USERSPACE=true + - TS_ACCEPT_DNS=false + volumes: + - ${PWD}/tailserve-config:/config + - ${PWD}/tailscale/state:/var/lib/tailscale + - /dev/net/tun:/dev/net/tun + cap_add: + - net_admin + - sys_module + restart: unless-stopped + + fumblearound: + image: nginx:alpine + volumes: + - .:/usr/share/nginx/html + - ./nginx.conf:/etc/nginx/conf.d/default.conf + restart: unless-stopped + network_mode: service:tailscale-fumble + depends_on: + - tailscale-fumble + diff --git a/index.html b/index.html index 5aa870c..0cce989 100644 --- a/index.html +++ b/index.html @@ -1,349 +1,466 @@ - + - - + + FumbleAround - - - + + + - - - - - - - + + + + + + + - - - - - + + + + + - +
- +
- -
- - -
+ +
+ + +
- +
-
-
-

Settings

- -
-
-

Display

-
- - -
-
-
-

Actions

-
- -
-
-
-

About

-
-
- -
-

Discover the hidden gems of the internet, powered by Wiby.me's search engine.

-
-
Disclaimer
-

We are not responsible for the content that appears. Use at your own discretion.

-
-
-

A homage to the classic StumbleUpon, reimagined for the modern web.

-
-
-
-
-
+
+
+

Settings

+
+
+

Display

+
+ + +
+
+
+

Interactions

+
+
+
🖱️
+
+

Fumble Button

+

Click the "Fumble!" button to discover a new website

+
+
+
+
🔄
+
+

Page Refresh

+

Refresh the page to load a new website

+
+
+
+
📱
+
+

Shake to Fumble

+

+ On mobile devices, shake your phone to discover a new site +

+
+
+
+
+
+

About

+
+
+ +
+

+ Discover the hidden gems of the internet, powered by Wiby.me's + search engine. +

+
+
Disclaimer
+

+ We are not responsible for the content that appears. Use at + your own discretion. +

+
+
+

+ A homage to the classic StumbleUpon, reimagined for the + modern web. +

+
+
+
+
+
+
+

License

+
+
+

FumbleAround - A modern web discovery tool

+

Copyright (c) 2024 Michael Maurakis

+

Licensed under the MIT License

+
+ + +
+
+
+
+