Rebrand app to GameTime and add league info to game cards
- Rename app from FantasyCron to GameTime across all templates and code - Update league color palette to 6 visually distinct colors (navy, gold, purple, pink, turquoise, plum) - Add subtle league footer to game cards showing which leagues have players with player counts - Bump version to 1.0.0 - Update Docker compose service name to match rebrand 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
437401f731
commit
8aa400eef6
7 changed files with 78 additions and 16 deletions
4
app.py
4
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("=== FantasyCron Starting ===", flush=True)
|
print("=== GameTime Starting ===", flush=True)
|
||||||
print(f"=== Version: {Config.VERSION} ===", flush=True)
|
print(f"=== Version: {Config.VERSION} ===", flush=True)
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
@ -361,5 +361,5 @@ def refresh_data(username, week):
|
||||||
|
|
||||||
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: FantasyCron {app.config['VERSION']} ready!", flush=True)
|
print(f"DEBUG: GameTime {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:
|
||||||
fantasycron:
|
gametime:
|
||||||
image: fantasycron:latest
|
image: gametime:latest
|
||||||
ports:
|
ports:
|
||||||
- "5000:5000"
|
- "5000:5000"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import os
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
# App version
|
# App version
|
||||||
VERSION = '0.1.0'
|
VERSION = '1.0.0'
|
||||||
|
|
||||||
SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key'
|
SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key'
|
||||||
|
|
||||||
|
|
@ -12,6 +12,5 @@ class Config:
|
||||||
|
|
||||||
# League colors - assigned in order
|
# League colors - assigned in order
|
||||||
LEAGUE_COLORS = [
|
LEAGUE_COLORS = [
|
||||||
'#006400', '#00FFFF', '#FF0000', '#FFD700', '#1E90FF',
|
'#003594', '#ffa300', '#8a2be2', '#ff69b4', '#40e0d0', '#dda0dd'
|
||||||
'#C71585', '#00FF00', '#00FFFF', '#0000FF', '#1E90FF'
|
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1293,4 +1293,48 @@ body {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Game league footer - subtle info at bottom of game cards */
|
||||||
|
.game-league-footer {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 12px;
|
||||||
|
margin-top: 12px;
|
||||||
|
padding-top: 8px;
|
||||||
|
border-top: 1px solid var(--border-light);
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.league-footer-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
font-size: 10px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
opacity: 0.7;
|
||||||
|
padding: 2px 6px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background: var(--overlay-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.league-footer-item .league-dot {
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
border-radius: 50%;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.league-name-small {
|
||||||
|
font-weight: 500;
|
||||||
|
max-width: 80px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.player-count {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<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 %}FantasyCron{% endblock %}</title>
|
<title>{% block title %}GameTime{% endblock %}</title>
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -50,16 +50,15 @@
|
||||||
<div class="sidebar-section">
|
<div class="sidebar-section">
|
||||||
<h3>About This App</h3>
|
<h3>About This App</h3>
|
||||||
<div class="about-text">
|
<div class="about-text">
|
||||||
<p>FantasyCron gives you an at-a-glance view of your fantasy football teams and when your players play.</p>
|
<p>GameTime 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>
|
||||||
<li>View all your leagues' matchup scores at the top</li>
|
<li>View all your leagues' matchup scores at the top</li>
|
||||||
<li>See when each of your players plays, grouped by league (indicated by colored borders)</li>
|
<li>See when each of your players plays, grouped by league (indicated by colored borders)</li>
|
||||||
<li>Navigate between weeks using the arrows</li>
|
<li>Benched players are right-aligned and greyed out</li>
|
||||||
<li>Scores auto-refresh during game times</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<p class="cron-note">* * * * 0,1,4 - Updates every Sunday, Monday, and Thursday!</p>
|
<p class="cron-note">* * * * 0,1,4</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -74,7 +73,7 @@
|
||||||
|
|
||||||
<!-- App version footer -->
|
<!-- App version footer -->
|
||||||
<footer class="app-footer">
|
<footer class="app-footer">
|
||||||
<div class="version">FantasyCron v{{ app_version }}</div>
|
<div class="version">GameTime v{{ app_version }}</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<!-- Set theme based on server-side session -->
|
<!-- Set theme based on server-side session -->
|
||||||
|
|
|
||||||
|
|
@ -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>{{ user.display_name }}</h1>
|
<h1>GameTime 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>
|
||||||
|
|
@ -160,6 +160,26 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Small league info footer -->
|
||||||
|
<div class="game-league-footer">
|
||||||
|
{% for league_info in league_data %}
|
||||||
|
{% set players_in_game = [] %}
|
||||||
|
{% for player in league_info.all_players %}
|
||||||
|
{% if player.team in game.teams %}
|
||||||
|
{% set _ = players_in_game.append(player) %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if players_in_game %}
|
||||||
|
<div class="league-footer-item">
|
||||||
|
<span class="league-dot" style="background-color: {{ league_info.league_color }};"></span>
|
||||||
|
<span class="league-name-small">{{ league_info.league.name }}</span>
|
||||||
|
<span class="player-count">({{ players_in_game|length }})</span>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block title %}FantasyCron - Enter Username{% endblock %}
|
{% block title %}GameTime - Enter Username{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="welcome-container">
|
<div class="welcome-container">
|
||||||
<div class="brand">
|
<div class="brand">
|
||||||
<h1 class="app-name">FantasyCron</h1>
|
<h1 class="app-name">GameTime</h1>
|
||||||
<div class="tagline">* * * * 0,1,4</div>
|
<div class="tagline">* * * * 0,1,4</div>
|
||||||
</div>
|
</div>
|
||||||
<p>Enter your Sleeper username to view your fantasy teams</p>
|
<p>Enter your Sleeper username to view your fantasy teams</p>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue