Lizandro Guarnizo and Claude Sonnet 4.6
e56807b75e
feat: rediseño dashboard estilo InDrive con mapa completo
...
Mapa ocupa toda la pantalla, pin central fijo, barra de busqueda
flotante con autocomplete, tarjeta inferior para profesional/fecha.
Al mover el mapa hace geocodificacion inversa y actualiza la direccion.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 08:18:02 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
4a2588f6f2
feat: load Google Maps key dynamically from backend
...
- MapsService: obtiene la key via API e inyecta el script Maps JS en runtime
- LocationPickerDialog: muestra error descriptivo si la key no esta configurada
- index.html: eliminado script estatico de Maps
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 07:59:40 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
863546f0fc
feat: Google Maps location picker in dashboard
...
- LocationPickerDialog: detecta ubicación del dispositivo, pin draggable,
reverse geocoding para obtener dirección y ciudad
- Dashboard: campo de dirección abre el mapa al tocar
- index.html: carga Maps JS API (key pendiente de configurar)
- pubspec: google_maps_flutter + geolocator
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 07:52:01 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
77f44ac43a
feat: redesign sidebar with corporate branding and ProsApp logo
...
- Logo: network image in white card + tagline
- Sidebar: deep navy gradient (#0D1B3E) with blue accent active states
- MenuItem: left accent bar indicator, cleaner hover, better contrast
- Mode toggle: gradient button matching brand colors
- TextSeparator: uppercase label with divider line
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 07:40:08 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
c8e5d481ed
fix: handle null city for phone-registered users in dashboard
...
user.city is null for users registered via OTP — null assertion caused
crash showing grey DashboardLayout background.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-27 07:37:48 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
2688aa94c9
fix: logo not showing and duplicate ProsApp text in auth layout
...
- Put logo inside white container on gradient so colors are correct
- Remove BlendMode.srcATop which was making logo invisible on gradient
- Simplify auth_layout mobile/desktop branches
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:17:49 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
1ae5b72ed7
fix: wrap auth views in AuthLayout and remove duplicate logo from PhoneLoginView
...
- admin_handlers: wrap PhoneLoginView, LoginView, RegisterView in AuthLayout
so the gradient split panel / header renders correctly
- phone_login_view: remove standalone logo block (AuthLayout provides it)
and remove unused phone_form_provider import
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:09:12 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
bf3c380e8e
feat: redesign auth layout and login view with ProsApp logo
...
- auth_layout: gradient header (mobile) / split panel (desktop)
- background_auth: gradient blue with network logo, tagline and feature list
- custom_title: network logo replacing local asset
- login_view: consistent UI matching phone_login_view (inputs, buttons,
links to register/phone login, brand colors)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:02:03 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
cc18246e1f
feat: SMS OTP auth + phone verification gate + improved login UI
...
- Usuario model: add isPhoneVerified field from is_phone_verified
- auth_provider.dart: fix access_token key, add _navigateAfterAuth gate
(redirects to phoneLoginRoute if phone not verified), add verifyPhoneNumber,
signInWithOTP, verifyPhoneNumberForLink, linkPhoneWithOTP methods
- phone_login_view.dart: full rewrite with logo, +57 prefix, two-step OTP flow
(phone input → code input), 60s resend timer, email login fallback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 15:54:15 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
0ecca498ad
fix: align Flutter endpoints and model parsing with actual NestJS backend
...
- Auth: phone login → POST /auth/phone (direct, no OTP); link phone → POST /auth/verify-phone; add email → POST /auth/link-email
- Services: replace query-param paths with dedicated role endpoints (/services/me, /services/professional/requests, /services/professional, etc.)
- Services: PATCH /services/:id → PATCH /services/:id/status
- Calendar: → GET /services/professional/calendar
- Professionals: /users/professionals → /professionals (handles {data:[...]} response)
- Professional info: /professional-info/:id → /professionals/:id; PATCH → /professionals/me
- Comments: /comments?... → /comments/user/:id and /comments/professional/:id
- Chat: /chats → /chat; start chat → POST /chat/start/:professionalId; poll GET /chat/:chatId/messages; send → POST /chat/:chatId/message
- Cities: /cities → GET /locations/countries (parse nested countries→regions→cities)
- Profesional.fromDocument: null-safe fields; convert schedules array→Schedules, specializations array→name/picture lists, payment_methods object/array
- Usuario.fromDocument: null-safe professional_state and id
- UsuarioProfesional.fromDocument: handle backend format (users nested, professional at top level)
- ScheduleEntity.parseTime: handle ISO8601 time strings from backend
- MessageEntity.fromDocument: accept sender_id (backend) or owner_id (legacy)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 16:07:44 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
60216fd0e3
feat: migrate Firebase → NestJS REST API backend
...
Replace all Firebase SDK (Auth, Firestore, Storage) with HTTP calls
to backend.prosapp.co/api/v1:
- New ApiService singleton (JWT token, GET/POST/PATCH/DELETE/upload)
- auth_provider: Firebase Auth → /auth/login, /auth/register, /auth/phone/*
- services_provider + calendar_services_provider → /services endpoints
- professional_provider + professionals_provider → /professional-info, /users/professionals
- profile_form_provider + professional_form_provider → /users/me, /storage/upload
- cities/professions/settings providers → /cities, /professions, /settings
- firebase_chat_repository → polling via /chats endpoints (3s interval)
- firebase_score_repository → polling via /comments endpoints (10s interval)
- professional_detail_provider → /users/:id + /professional-info/:id
- dashboard_view: Firestore.add → POST /services
- chat_view + rating_view: FirebaseAuth.uid → AuthProvider.user.id
- Models: Timestamp → String for createdAt fields
- google_fonts upgraded to ^8.1.0 (Dart 3.12 compat)
- Remove firebase_core, firebase_auth, cloud_firestore, firebase_storage from pubspec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 15:53:39 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
15175c1b91
replace: swap prosappweb content for prosapp_web_app (more complete version)
...
prosapp_web_app has chat, dashboard, calendar, support, 13 providers and
Fluro URL routing. Keep Dockerfile + nginx.conf from previous prosappweb.
Upgrade google_fonts 6.2.1 → 8.1.0 (Dart 3.12 compat fix).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 15:26:32 -05:00