Commit Graph

4 Commits

Author SHA1 Message Date
Dev Server e49fa9e746 feat: subscriptions, referrals, students/mentors removal, email templates, calendar fixes
Deploy to Dev / deploy-dev (push) Failing after 31s Details
Backend:
- Subscriptions: add duration_days field to plan, fix duration logic, remove allowed_durations restriction
- Users: add StudentMentorViewSet (remove_mentor), fix remove_client (board access + notification)
- Users: add STATUS_REMOVED to MentorStudentConnection, fix re-invite after removal
- Users: add authentication_classes=[] to all public auth endpoints (fix user_not_found 401)
- Users: fix verify-email and reset-password URLs in email tasks
- Users: validate IANA timezone on registration
- Schedule: add group/group_name to LessonCalendarItemSerializer
- Referrals: add tasks.py for Celery, add process_pending_referral_bonuses to beat schedule
- Email templates: redesign all 5 templates (gradient header, icons, Училл branding)

Frontend:
- Calendar: fix SWR revalidation after create/update/delete (match childId key), clear errors on tab switch
- Students: add remove buttons with warning dialog (mentor removes student, student removes mentor)
- Students: add tabs for client (Мои менторы / Входящие / Исходящие), fix pending_student filter
- Payment: fix duration_days from plan, show Бесплатно for 0₽, show X дн. period
- Referrals: full redesign — stats, levels progress, referrals list, earnings history, bonus balance
- Sign-up: add referral code field, auto-fill from ?ref= param
- Subscription guard: redirect mentor to /payment-platform if no active subscription
- Error pages: translate to Russian
- Page titles: dynamic Russian titles via usePageTitle hook
- Logo: fix full-page reload on click (use react-router Link directly)
- Favicon: use /logo/favicon.png
- Remove logo from header (keep in nav only)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:39:37 +03:00
Dev Server 1b06404d64 feat: chat fixes, header cleanup, scrollbar, UI improvements
- chat: fix create_direct endpoint (was /chats/ → /chats/create_direct/ with user_id)
- chat: fix backend NotSupportedError — remove select_for_update()+distinct() combo
- chat: normalize chat objects (participant_id from other_participant.id)
- chat: enrich new chats with contact data so contacts section updates correctly
- chat: sendMessage — JSON when no file, FormData only with attachment
- chat: show send errors in UI instead of silent catch
- header: hide search, language, contacts, workspaces, account buttons
- theme: thin custom scrollbar (6px, theme-aware light/dark)
- settings: always high contrast, vertical nav only, purple default, Inter font
- settings-button: replaced gear icon with dark/light toggle + fullscreen button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 21:25:36 +03:00
Dev Server b55c8dc602 feat: migrate front_minimal from Next.js to Vite + React SPA
- package.json: replace next scripts with vite dev/build/preview,
  add react-router-dom + vite/plugin-react/svgr devDeps, remove next + @mui/material-nextjs
- vite.config.js: add NEXT_PUBLIC_* → process.env define map for backward compat,
  add rollup manual chunks (mui, fullcalendar), loadEnv support
- front_minimal/.env: add VITE_* prefix vars alongside legacy NEXT_PUBLIC_*
- routes/sections.jsx: replace 691-line template routes with 160-line platform-only router
- routes/paths.js: trim to platform paths only (no mock IDs, no template pages)
- app.jsx: remove CheckoutProvider (not needed)
- theme-provider.jsx: remove AppRouterCacheProvider from @mui/material-nextjs
- routes/hooks: replace next/navigation re-exports with react-router-dom wrappers
  (useRouter → useNavigate adapter, useSearchParams, usePathname, useParams)
- routes/components/router-link.jsx: Link from react-router-dom
- sections: replace all next/navigation imports with react-router-dom
- analytics-view, my-progress-view: replace next/dynamic with direct import (no SSR)
- Remove all 'use client' directives (231 files) — not needed in Vite SPA
- Build: vite build ✓ in ~8s

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 17:04:53 +03:00
Dev Server f679f0c0f4 feat: board list view, excalidraw basePath fix, analytics, feedback pages
- Board: replace blank iframe with board list (my_boards + shared_with_me),
  mentor gets per-student buttons to open/create boards,
  iframe fills full available height via CSS vars (dvh)
- Excalidraw: build with NEXT_PUBLIC_BASE_PATH=/devboard so _next/ assets
  served under /devboard/_next/ and nginx path proxy works correctly
- Nginx: preserve /devboard/ path in proxy_pass (no trailing slash),
  add /yjs WebSocket proxy to devapi.uchill.online for dev YJS on port 1235
- Analytics: real API charts (income/lessons/students) with DateRangePicker
- Feedback: mentor kanban view of completed lessons, grade + notes drawer
- Nav: dynamic role-based menu (getNavData(role)), mentor-only analytics/feedback
- New API utils: analytics-api.js, board-api.js (full), dashboard-api getLessons()
- Routes: paths.dashboard.analytics, feedback, board added

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 16:35:30 +03:00