{% extends "base.html" %} {% block title %}Dashboard - {{ config.INSTANCE_NAME or 'Data Analyst Portal' }}{% endblock %} {% block head_extra %} {% if not config.THEME_FONT_URL %} {% endif %} {% endblock %} {% block layout %} {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %}
{% for category, message in messages %}
{{ message }}
{% endfor %}
{% endif %} {% endwith %} {% if user_info.exists %} {# ── EXISTING USER ── #}
{% if not account_details or not account_details.last_sync_display %}

Set up a new Claude Code

Generates a personal access token and copies a ready-to-paste setup script to your clipboard. Paste into Claude Code to finish.

Valid 90 days · token stays in clipboard only Open the full setup page →
{% endif %}
Tables {{ data_stats.tables }}
Columns {{ data_stats.columns }}
Rows {{ data_stats.rows_display }}
Data Size {{ data_stats.size_display }}
{{ config.INSTANCE_NAME }}
Notifications Manage
Telegram
{% if not telegram_status.linked %} Not linked {% endif %}
{% if telegram_status.linked %} Active {% else %} {% endif %}
macOS App
private beta {% if not desktop_status.linked %} Not linked {% endif %}
{% if desktop_status.linked %} Active {% endif %}
  1. Message /start to @{{ config.TELEGRAM_BOT_USERNAME or 'your-bot' }} on Telegram
  2. Enter the verification code below
{% if account_details and account_details.last_sync_display %} {% endif %}
{% else %} {# ── NEW USER ── #}
{% if not username_available %}
!

Username Not Available

{{ username_error }}

Your email generates username {{ username }}, which cannot be used. Contact an administrator.

{% endif %}

Get Started

Set up your workspace in 4 steps
{# ── Steps 1-3: Terminal commands ── #}
1 Create folder 2 Generate SSH key 3 Copy public key Run these in your terminal
$ mkdir -p {{ project_dir }} && cd {{ project_dir }}
$ ssh-keygen -t ed25519 -f {{ ssh_key }} -N ''
$ cat {{ ssh_key }}.pub
# Copy the output above and paste it below
{# ── Step 4: Register ── #} {% if username_available %}
4 Create your account Username: {{ username }}
{% endif %} {# Step 5 (Claude Code setup) appears on dashboard after account creation #}
{{ config.INSTANCE_NAME }} - need help? Contact your platform team.
{% endif %} {# Setup-CTA JS (copyToClipboard, defaultTokenName, showSetupFallback, setupNewClaude) + the SETUP_INSTRUCTIONS_TEMPLATE renderer all live in the shared partial below. Both /dashboard and /home include it so the clipboard payload, error handling, and fallback modal stay in lockstep. The partial exposes copyToClipboard on window so the copyCode / copyTermLine helpers below resolve it via global scope. #} {% include "_claude_setup_cta.jinja" %} {% endblock %}