Commit Graph

14 Commits

Author SHA1 Message Date
Michilis
5d02d1396f Admin API key auth, account_too_new fixes, clear-all-users cache
- Add ADMIN_API_KEY to config; accept via X-Admin-Key or Bearer (constant-time compare)
- Never serve cached null for nostr_first_seen_at; admin clear-cache and override-age
- Add clearAllUsersCache() and POST /admin/users/clear-cache for all users
- Update .env.example with admin API key and pubkeys comments

Made-with: Cursor
2026-03-16 19:53:05 +00:00
Michilis
f43f0bc501 Add sponsor price endpoint and fetch pricing from backend on frontend
Made-with: Cursor
2026-03-16 18:21:41 +00:00
Michilis
a47868d17c Fix account_too_new false positive for old Nostr accounts
- Force refresh profile when denying account_too_new, then re-check
- Use querySync for age probe instead of pool.get (all relays, more reliable)
- Add default relays: nostr.info, snort.social, mostr.pub
- Skip cache when cached first-seen is borderline (10-14 days)

Made-with: Cursor
2026-03-16 18:16:05 +00:00
Michilis
a1509f21fc Add schema-driven db:migrate for SQLite and Postgres
- Parse schema files to detect expected columns per table
- Add missing columns automatically when schema is updated
- Add payment_request to sponsors schema
- Add db:migrate script to root package.json

Made-with: Cursor
2026-03-16 00:13:06 +00:00
Michilis
dc7007f708 Add sponsors system with time slider, LNbits invoices, and UX improvements
- Sponsors table, LNbits createInvoice, webhook handler
- Sponsor routes: create, homepage, list, my-ads, click, extend, check-payment
- Admin routes for sponsor management
- Frontend: SponsorForm, SponsorTimeSlider, SponsorCard, SponsorsSection
- Sponsors page, My Ads page, homepage sponsor block
- Header login dropdown with My Ads, Create Sponsor
- Transactions integration for sponsor payments
- View/click tracking
- OG meta fetch for sponsor images
- Sponsor modal spacing, invoice polling fallback
- Remove Lightning address and Category fields from sponsor form

Made-with: Cursor
2026-03-16 00:01:19 +00:00
SatsFaucet
22a3c1bced Add deploy/ to .gitignore; backend index and openapi updates
Made-with: Cursor
2026-03-02 15:01:26 +01:00
SatsFaucet
623eb720dc Redesign faucet claim flow: login → loading → eligibility → claim
- Backend: payout is now random between FAUCET_MIN_SATS and FAUCET_MAX_SATS
- Remove weighted buckets; simplify config and .env.example
- Frontend: show loading and eligibility in main body, modal only for confirm/success
- Rename Confirm payout to Claim; add styles for body loading and eligible state

Made-with: Cursor
2026-03-02 14:59:37 +01:00
SatsFaucet
381597c96f Add Swagger docs at /docs and /openapi.json; frontend and backend updates
Made-with: Cursor
2026-03-01 01:24:51 +01:00
Michaël
bdb4892014 Backend: add PUBLIC_BASE_PATH for NIP-98 URL behind /api proxy
Made-with: Cursor
2026-02-28 00:21:01 -03:00
Michaël
184732c2a5 Fix backend TS: npub decode type guard for login-npub
Made-with: Cursor
2026-02-27 17:58:15 -03:00
Michaël
9fff2d427f Add public key (npub) login support
- Backend: POST /auth/login-npub endpoint, JWT carries login method
- Backend: Enforce Lightning address lock for npub logins in claim/quote
- Frontend: LoginModal supports npub via new endpoint, clear copy
- Frontend: Track loginMethod, lock LN address editing for npub users
- Handle missing Lightning address for npub users with helpful message

Made-with: Cursor
2026-02-27 17:56:15 -03:00
Michaël
5b516f02cb Production-ready overhaul: backend fixes, claim flow polish, SEO, mobile, nginx
Backend:
- Fix activity score (followersCount check), NIP-98 URL proto, wallet balance guard
- Add payment_hash to confirm response, spentTodaySats to stats
- Add idx_claims_ip_hash; security headers, graceful shutdown, periodic nonce cleanup

Frontend:
- Remove 8 legacy components; polish wizard (rules summary, profile card, confetti, share)
- Stats budget bar uses spentTodaySats; ErrorBoundary with reload

SEO & production:
- Full meta/OG/Twitter, favicon, JSON-LD, robots.txt, sitemap.xml
- Mobile CSS fixes; nginx static dist + gzip + cache + security headers
- Vite manualChunks; aria-labels, dynamic page titles

Made-with: Cursor
2026-02-27 16:29:37 -03:00
Michaël
ecc4e6d4bb Backend build: copy SQL schema files to dist for production start
Made-with: Cursor
2026-02-26 19:13:44 -03:00
Michaël
3734365463 first commit
Made-with: Cursor
2026-02-26 18:33:00 -03:00