First registered user becomes admin automatically. Admins see a
"Manage Users" button in the dashboard header that opens a new
/admin page for listing, creating, and deleting users. Backend
enforces admin-only access on /admin/* routes. Startup migration
adds the is_admin column to existing SQLite databases.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Resolved conflict by keeping env var approach from main and updating
the default to include both localhost:3000 and localhost:3001.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add localhost:3001 to allowed CORS origins to fix local Docker setup
where frontend is mapped to port 3001. Also update stats grid to fixed
3-column layout and reorder stat cards.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Defaults to localhost:3000 for local dev. Server deployments can
pass a comma-separated list via the environment.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
New GET /history endpoint fetches 365 days of BTC/EUR data from
CoinGecko, deduplicates by date, and joins the user's purchases.
BTCHistoryChart component renders the price line with orange dot
markers on purchase dates and a dashed cyan avg buy price line.
Tooltip shows purchase details on marked dates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>