Renaming everything to RosterHash.
This commit is contained in:
parent
981b704872
commit
329f2bfea6
9 changed files with 33 additions and 33 deletions
10
README.md
10
README.md
|
|
@ -1,8 +1,8 @@
|
||||||
# <div align="center"><img src="gametime_logo.png" alt="GameTime Logo" width="200"/></div>
|
# <div align="center"><img src="rosterhash_logo.png" alt="RosterHash Logo" width="200"/></div>
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
# 🏈 GameTime
|
# 🏈 RosterHash
|
||||||
|
|
||||||
**Your Fantasy Football Command Center**
|
**Your Fantasy Football Command Center**
|
||||||
|
|
||||||
|
|
@ -14,11 +14,11 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## What is GameTime?
|
## What is RosterHash?
|
||||||
|
|
||||||
GameTime is your all-in-one fantasy football dashboard that connects to your Sleeper account to give you an overview of every league, every player, over a calendar view.
|
RosterHash is your all-in-one fantasy football dashboard that connects to your Sleeper account to give you an overview of every league, every player, over a calendar view.
|
||||||
|
|
||||||
You can check it out here: [gametime.edfig.dev](https://gametime.edfig.dev)
|
You can check it out here: [rosterhash.edfig.dev](https://rosterhash.edfig.dev)
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
|
|
|
||||||
10
app.py
10
app.py
|
|
@ -10,7 +10,7 @@ from config import Config
|
||||||
# Force unbuffered output for Docker logs
|
# Force unbuffered output for Docker logs
|
||||||
os.environ['PYTHONUNBUFFERED'] = '1'
|
os.environ['PYTHONUNBUFFERED'] = '1'
|
||||||
|
|
||||||
print("=== GameTime Starting ===", flush=True)
|
print("=== RosterHash Starting ===", flush=True)
|
||||||
print(f"=== Version: {Config.VERSION} ===", flush=True)
|
print(f"=== Version: {Config.VERSION} ===", flush=True)
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
@ -367,17 +367,17 @@ def refresh_data(username, week):
|
||||||
return jsonify({'error': str(e)}), 500
|
return jsonify({'error': str(e)}), 500
|
||||||
|
|
||||||
# Static file routes
|
# Static file routes
|
||||||
@app.route('/gametime_logo.png')
|
@app.route('/rosterhash_logo.png')
|
||||||
def logo():
|
def logo():
|
||||||
"""Serve the logo file"""
|
"""Serve the logo file"""
|
||||||
return send_file('gametime_logo.png', mimetype='image/png')
|
return send_file('rosterhash_logo.png', mimetype='image/png')
|
||||||
|
|
||||||
@app.route('/favicon.ico')
|
@app.route('/favicon.ico')
|
||||||
def favicon():
|
def favicon():
|
||||||
"""Serve the favicon"""
|
"""Serve the favicon"""
|
||||||
return send_file('gametime_logo.png', mimetype='image/png')
|
return send_file('rosterhash_logo.png', mimetype='image/png')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("DEBUG: Starting Flask app on 0.0.0.0:5000", flush=True)
|
print("DEBUG: Starting Flask app on 0.0.0.0:5000", flush=True)
|
||||||
print(f"DEBUG: GameTime {app.config['VERSION']} ready!", flush=True)
|
print(f"DEBUG: RosterHash {app.config['VERSION']} ready!", flush=True)
|
||||||
app.run(host='0.0.0.0', port=5000, debug=True)
|
app.run(host='0.0.0.0', port=5000, debug=True)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
services:
|
services:
|
||||||
gametime:
|
rosterhash:
|
||||||
image: gametime:latest
|
image: rosterhash:latest
|
||||||
ports:
|
ports:
|
||||||
- "5000:5000"
|
- "5000:5000"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "GameTime - Fantasy Football Dashboard",
|
"name": "RosterHash - Fantasy Football Dashboard",
|
||||||
"short_name": "GameTime",
|
"short_name": "RosterHash",
|
||||||
"description": "View your Sleeper fantasy football leagues and player schedules",
|
"description": "View your Sleeper fantasy football leagues and player schedules",
|
||||||
"start_url": "/",
|
"start_url": "/",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
"orientation": "portrait-primary",
|
"orientation": "portrait-primary",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/gametime_logo.png",
|
"src": "/rosterhash_logo.png",
|
||||||
"sizes": "any",
|
"sizes": "any",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "any maskable"
|
"purpose": "any maskable"
|
||||||
|
|
|
||||||
16
static/sw.js
16
static/sw.js
|
|
@ -1,20 +1,20 @@
|
||||||
// GameTime Service Worker
|
// RosterHash Service Worker
|
||||||
const CACHE_NAME = 'gametime-v1.0.0';
|
const CACHE_NAME = 'rosterhash-v1.0.0';
|
||||||
const STATIC_CACHE = [
|
const STATIC_CACHE = [
|
||||||
'/',
|
'/',
|
||||||
'/static/style.css',
|
'/static/style.css',
|
||||||
'/static/manifest.json',
|
'/static/manifest.json',
|
||||||
'/gametime_logo.png',
|
'/rosterhash_logo.png',
|
||||||
'/favicon.ico'
|
'/favicon.ico'
|
||||||
];
|
];
|
||||||
|
|
||||||
// Install event - cache static resources
|
// Install event - cache static resources
|
||||||
self.addEventListener('install', event => {
|
self.addEventListener('install', event => {
|
||||||
console.log('GameTime SW: Installing...');
|
console.log('RosterHash SW: Installing...');
|
||||||
event.waitUntil(
|
event.waitUntil(
|
||||||
caches.open(CACHE_NAME)
|
caches.open(CACHE_NAME)
|
||||||
.then(cache => {
|
.then(cache => {
|
||||||
console.log('GameTime SW: Caching static resources');
|
console.log('RosterHash SW: Caching static resources');
|
||||||
return cache.addAll(STATIC_CACHE);
|
return cache.addAll(STATIC_CACHE);
|
||||||
})
|
})
|
||||||
.then(() => self.skipWaiting())
|
.then(() => self.skipWaiting())
|
||||||
|
|
@ -23,13 +23,13 @@ self.addEventListener('install', event => {
|
||||||
|
|
||||||
// Activate event - clean up old caches
|
// Activate event - clean up old caches
|
||||||
self.addEventListener('activate', event => {
|
self.addEventListener('activate', event => {
|
||||||
console.log('GameTime SW: Activating...');
|
console.log('RosterHash SW: Activating...');
|
||||||
event.waitUntil(
|
event.waitUntil(
|
||||||
caches.keys().then(cacheNames => {
|
caches.keys().then(cacheNames => {
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
cacheNames.map(cacheName => {
|
cacheNames.map(cacheName => {
|
||||||
if (cacheName !== CACHE_NAME) {
|
if (cacheName !== CACHE_NAME) {
|
||||||
console.log('GameTime SW: Deleting old cache:', cacheName);
|
console.log('RosterHash SW: Deleting old cache:', cacheName);
|
||||||
return caches.delete(cacheName);
|
return caches.delete(cacheName);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -57,7 +57,7 @@ self.addEventListener('fetch', event => {
|
||||||
return new Response(`
|
return new Response(`
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>GameTime - Offline</title>
|
<title>RosterHash - Offline</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
</head>
|
</head>
|
||||||
<body style="font-family: sans-serif; text-align: center; padding: 50px;">
|
<body style="font-family: sans-serif; text-align: center; padding: 50px;">
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{% block title %}GameTime{% endblock %}</title>
|
<title>{% block title %}RosterHash{% endblock %}</title>
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||||
<link rel="icon" type="image/png" href="/favicon.ico">
|
<link rel="icon" type="image/png" href="/favicon.ico">
|
||||||
<link rel="apple-touch-icon" href="/gametime_logo.png">
|
<link rel="apple-touch-icon" href="/rosterhash_logo.png">
|
||||||
<link rel="manifest" href="{{ url_for('static', filename='manifest.json') }}">
|
<link rel="manifest" href="{{ url_for('static', filename='manifest.json') }}">
|
||||||
<meta name="theme-color" content="#8b7ff5">
|
<meta name="theme-color" content="#8b7ff5">
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
<div class="sidebar-section">
|
<div class="sidebar-section">
|
||||||
<h3>About This WebApp</h3>
|
<h3>About This WebApp</h3>
|
||||||
<div class="about-text">
|
<div class="about-text">
|
||||||
<p>GameTime gives you an at-a-glance view of your Sleeper leagues player's schedules and status.</p>
|
<p>RosterHash gives you an at-a-glance view of your Sleeper leagues player's schedules and status.</p>
|
||||||
<p><strong>How to use:</strong></p>
|
<p><strong>How to use:</strong></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Enter your Sleeper username on the home page</li>
|
<li>Enter your Sleeper username on the home page</li>
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
|
|
||||||
<!-- App version footer -->
|
<!-- App version footer -->
|
||||||
<footer class="app-footer">
|
<footer class="app-footer">
|
||||||
<div class="version">GameTime v{{ app_version }}</div>
|
<div class="version">RosterHash v{{ app_version }}</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<!-- Set theme based on server-side session -->
|
<!-- Set theme based on server-side session -->
|
||||||
|
|
@ -178,10 +178,10 @@
|
||||||
window.addEventListener('load', function() {
|
window.addEventListener('load', function() {
|
||||||
navigator.serviceWorker.register('/static/sw.js')
|
navigator.serviceWorker.register('/static/sw.js')
|
||||||
.then(function(registration) {
|
.then(function(registration) {
|
||||||
console.log('GameTime SW: Registered successfully');
|
console.log('RosterHash SW: Registered successfully');
|
||||||
})
|
})
|
||||||
.catch(function(error) {
|
.catch(function(error) {
|
||||||
console.log('GameTime SW: Registration failed:', error);
|
console.log('RosterHash SW: Registration failed:', error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<!-- Header with user name and week navigation -->
|
<!-- Header with user name and week navigation -->
|
||||||
<header class="dashboard-header">
|
<header class="dashboard-header">
|
||||||
<h1>GameTime for {{ user.display_name }}</h1>
|
<h1>RosterHash for {{ user.display_name }}</h1>
|
||||||
<div class="week-nav">
|
<div class="week-nav">
|
||||||
<a href="/{{ user.username }}/{{ week - 1 }}" class="week-btn">← Week {{ week - 1 }}</a>
|
<a href="/{{ user.username }}/{{ week - 1 }}" class="week-btn">← Week {{ week - 1 }}</a>
|
||||||
<span class="current-week">Week {{ week }}</span>
|
<span class="current-week">Week {{ week }}</span>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block title %}GameTime - Enter Username{% endblock %}
|
{% block title %}RosterHash - Enter Username{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="welcome-container">
|
<div class="welcome-container">
|
||||||
<div class="brand">
|
<div class="brand">
|
||||||
<img src="/gametime_logo.png" alt="GameTime Logo" class="app-logo">
|
<img src="/rosterhash_logo.png" alt="RosterHash Logo" class="app-logo">
|
||||||
<h1 class="app-name">GameTime</h1>
|
<h1 class="app-name">RosterHash</h1>
|
||||||
<div class="tagline">* * * * 4,7,1</div>
|
<div class="tagline">* * * * 4,7,1</div>
|
||||||
</div>
|
</div>
|
||||||
<p>Enter your Sleeper username to get your league schedules.</p>
|
<p>Enter your Sleeper username to get your league schedules.</p>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue