diff --git a/README.md b/README.md index a39aae0..bbd4c7e 100644 --- a/README.md +++ b/README.md @@ -228,7 +228,7 @@ Bandwidth sharing services generally route legitimate traffic (market research, **How much can I earn?** -Earnings vary widely based on location, number of devices, and which services you run. A realistic expectation for a single residential server running 10-15 services is **$30 - $100/month**. Adding more servers or GPU compute services can increase this significantly. The dashboard shows your actual earnings over time so you can optimize. +Earnings vary widely based on location, ISP, number of devices, and which services you run. The dashboard tracks your actual earnings over time so you can optimize your setup. **Can I run on a VPS or cloud server?** @@ -256,7 +256,6 @@ CashPilot monitors container health continuously. If a service container exits u | Project | Type | Description | |---------|------|-------------| -| [CashPilot-Desktop](https://github.com/GeiserX/CashPilot-Desktop) | Desktop App | Native cross-platform desktop dashboard for monitoring your fleet | | [CashPilot-android](https://github.com/GeiserX/CashPilot-android) | Android Agent | Monitoring agent for passive income apps running on Android devices | | [cashpilot-mcp](https://github.com/GeiserX/cashpilot-mcp) | MCP Server | Monitor earnings from AI assistants via the Model Context Protocol | | [cashpilot-ha](https://github.com/GeiserX/cashpilot-ha) | Home Assistant Integration | Earnings and service status sensors for your smart home dashboard | diff --git a/ROADMAP.md b/ROADMAP.md index 536e088..895af26 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -72,7 +72,7 @@ Turn CashPilot from a deployment tool into an earnings optimization platform. Al - [x] Health score displayed on service cards (color-coded badge) - [x] GET /api/health/scores endpoint - [ ] **Notifications** — webhook/email alerts for container crashes, earnings drops, payout thresholds (collector alerts are in-app only for now) -- ~~**Auto-claim daily rewards**~~ — deferred; manual claim button covers this (each service has different thresholds and conditions) +- [ ] **Auto-claim daily rewards** — automated daily reward collection for services that support it (Honeygain lucky pot, Grass daily check-in, etc.); per-service opt-in with schedule configuration ## v1.2 — Multi-Node Fleet Management ✅ diff --git a/app/main.py b/app/main.py index 3c93f5d..5e467db 100644 --- a/app/main.py +++ b/app/main.py @@ -387,9 +387,9 @@ def _require_private_network(request: Request) -> None: @app.get("/login", response_class=HTMLResponse) async def page_login(request: Request, error: str = ""): - # If no users exist, redirect to register + # If no users exist, redirect to onboarding if not await database.has_any_users(): - return RedirectResponse("/register", status_code=303) + return RedirectResponse("/onboarding", status_code=303) # If already logged in, go to dashboard if auth.get_current_user(request): return RedirectResponse("/", status_code=303) @@ -561,8 +561,7 @@ async def do_register( user_id = await database.create_user(username, hashed, role) token = auth.create_session_token(user_id, username, role) - # First user goes to onboarding, subsequent users go to dashboard - dest = "/onboarding" if is_first else "/" + dest = "/setup" if is_first else "/" response = RedirectResponse(dest, status_code=303) return auth.set_session_cookie(response, token) @@ -580,8 +579,7 @@ async def do_logout(): @app.get("/onboarding", response_class=HTMLResponse) async def page_onboarding(request: Request): - user = auth.get_current_user(request) - if not user: + if await database.has_any_users(): return RedirectResponse("/login", status_code=303) return templates.TemplateResponse(request, "onboarding.html") @@ -595,9 +593,8 @@ async def page_onboarding(request: Request): async def page_dashboard(request: Request): user = auth.get_current_user(request) if not user: - # Check if first run if not await database.has_any_users(): - return RedirectResponse("/register", status_code=303) + return RedirectResponse("/onboarding", status_code=303) return RedirectResponse("/login", status_code=303) return templates.TemplateResponse(request, "dashboard.html", {"user": user}) diff --git a/app/templates/onboarding.html b/app/templates/onboarding.html index ac64f45..44e6a5b 100644 --- a/app/templates/onboarding.html +++ b/app/templates/onboarding.html @@ -1,231 +1,492 @@ -{% extends "base.html" %} -{% block title %}Welcome - CashPilot{% endblock %} -{% block page %}onboarding{% endblock %} -{% block topbar_title %}Welcome to CashPilot{% endblock %} - -{% block content %} - -
-
- -
-
1
-
-
2
-
-
3
-
-
4
-
+ + + + + + + Welcome - CashPilot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + - Already running services - I have containers running (e.g. money4band, manual Docker). I just want earnings tracking and a unified dashboard. + CashPilot
- -
-
- -
-

What would you like to share?

-

Select the resource types you're interested in. You can change this anytime.

-
-