Lizandro Guarnizo and Claude Sonnet 4.6
f60e268375
fix: remove duplicate AuthLayout wrapping in admin_handlers
...
main.dart builder already wraps unauthenticated routes in AuthLayout.
Wrapping again in handlers caused double login screen on all viewports.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 18:54:43 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
014d20604f
fix: remove tagline from splash to avoid duplicate text during fade
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:31:11 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
c52745107e
feat: add splash screen and remove unused scripts from index.html
...
- Add full-screen gradient splash (blue #42A4EF → #1565C0) with logo
and spinner shown while Flutter engine loads
- Fade out splash on flutter-first-frame event (smooth 300ms transition)
- Remove unused Firebase and reCAPTCHA scripts that slowed initial load
- Set body background-color to match splash so no white flash at any point
- Update title/description to ProsApp branding
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:19:52 -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
f941270bd9
feat: implement SMS OTP auth and fix access_token key
...
- verifyPhoneNumber / verifyPhoneNumberForLink: call POST /auth/send-otp
- signInWithOTP: pass code to POST /auth/phone, use access_token key
- linkPhoneWithOTP: pass code to POST /auth/verify-phone
- login / register: fix token key data['token'] → data['access_token']
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 15:26:47 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
a4a6099722
fix: runtime fixes for service model and paginated responses
...
- Service.fromJson: string status/location enums, ISO8601 time parsing, additional_address field name
- _loadServices: unwrap {data:[...]} paginated response; extract embedded user from response instead of extra API calls
- calendar_services_provider: same response unwrap; fallback user when not embedded
- Add ProState import where needed
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 16:20:12 -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
Lizandro Guarnizo and Claude Sonnet 4.6
74a4f41902
fix: redirect favicon.ico to favicon.png in nginx
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 14:52:57 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
309f250d47
fix: remove font_awesome_flutter (incompatible with Dart 3.12)
...
Replace FaIcon(FontAwesomeIcons.google) with plain Text widget.
Remove font_awesome_flutter from pubspec — package extends final
class IconData which is forbidden in Dart 3.12/Flutter 3.44.
Fix currentUser.value → currentUser (was Rx<UserModel?>, now UserModel?).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 14:44:21 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
eb01e96e5d
fix: remove get package, upgrade Flutter 3.44 compat deps
...
- Remove `get` package (incompatible with Flutter 3.44/Dart 3.12 due to
removed ThemeData.backgroundColor and final IconData class)
- Replace GetMaterialApp → MaterialApp with GlobalKey navigatorKey
- Convert AuthenticationRepository and all 7 controllers from
GetxController to plain singletons
- Replace Get.snackbar/offAll/to/back/defaultDialog with app_navigator
helpers and native Flutter APIs
- Add ApiService.baseUrl static + parseJson method
- Add UserModel.getUser static method
- Add UserProvider.score via ScoresModel API
- Fix user?.photo → user?.picture in drawer_menu, service_after
- Fix logout(uid!) → logout() in drawer_menu
- Fix photo_view_web.dart missing dart:typed_data import
- Remove getCoordsOfCity call from ubicacion.dart
- Fix UserModel.getUser?.name null-safety in map/service.dart
- Upgrade: google_maps_flutter ^2.9.0, url_launcher ^6.3.0,
font_awesome_flutter ^10.8.0, image_picker ^1.1.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 14:33:22 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
33ee7ea2f4
fix: resolve web build failures
...
- Update SDK constraint to >=3.0.0 <4.0.0 (Flutter stable uses Dart 3.x)
- Remove flutter_email_sender (no web support) — replace with mailto: via url_launcher
- support.dart: unified _sendEmail works on both web and mobile
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 13:30:37 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
5f9da1eefe
feat: add Dockerfile + nginx config for Coolify deployment
...
Multi-stage build: Flutter stable builds web release, nginx:alpine serves it.
nginx.conf handles SPA routing (all paths → index.html) and caches assets.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 12:58:53 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
b9a034f37f
fix: replace user.state string checks with user.proState int in drawer_menu
...
user.state (Spanish string) no longer exists — UserModel uses proState (int)
from backend pro_state field: 0=inactive, 1=pending, 2=active, 3=denied.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 12:22:27 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
9be1c3b678
fix: update status string comparisons in service list screens to English
...
_statusIcon switch cases and tileColor checks were comparing against Spanish
status strings (aprobado/iniciado/terminado/denegado); backend returns English
(accepted/active/completed/cancelled/denied) so they always fell to default.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 12:20:12 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
dc99169ef1
fix: correct remaining route mismatches and Spanish status strings in prosappweb
...
- solicitudes: GET /services/professional/requests (not query params)
- my_services: GET /services/me with paginated response handling
- my_services_pro: GET /services/professional with paginated response handling
- professional: handle paginated GET /professionals response
- cita: PATCH /services/:id/status (not /services/:id); translate all Spanish
status comparisons (pendiente/aprobado/iniciado/terminado) to backend English
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 12:16:00 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
ce11aa813e
fix: align route DTOs and field names with NestJS backend
...
- event_model: snake_case fields, status translation map (es→en), public-calendar route
- chat_model: both roles use GET /chat/my (JWT identifies user)
- score: correct POST /comments DTO (destination_id, service_id, content, score, is_from_user)
- horario: PATCH /professionals/me/schedules with array format instead of /users/me
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-18 12:09:42 -05:00
Lizandro Guarnizo and Claude Sonnet 4.6
b95e0630de
feat: migrate prosapp_web_app from Firebase to NestJS API
...
- Replace Firebase Auth with JWT stored in SharedPreferences
- Replace Firestore with REST API calls via new ApiService
- Replace Firebase Storage with POST /storage/upload
- Remove firebase_auth, firebase_core, cloud_firestore,
firebase_storage, firebase_messaging, google_sign_in deps
- Add api_service.dart as central HTTP client
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-17 13:19:28 -05:00
lizandrogd
1c20d0c0cd
update
2024-01-16 21:48:38 -05:00
lizandrogd
35657f89ac
update
2024-01-16 21:48:32 -05:00
Felipe
1e181d3dd6
abrir calendario desde fecha y hora
2024-01-15 09:35:20 -05:00
Felipe
6dc5fe6f88
update
2024-01-13 11:10:24 -05:00
Felipe
240791fb93
update
2024-01-09 17:24:14 -05:00
Felipe
ae932ca582
calendario disponibles y ocupados
2024-01-06 18:14:35 -05:00
Felipe
7977a9be24
update
2024-01-06 13:59:44 -05:00
Felipe
a7db9d986d
update
2024-01-05 16:10:39 -05:00
Felipe
278fdfd9e1
update
2024-01-05 15:57:46 -05:00
Felipe
d9a62ce404
desing
2024-01-02 18:11:05 -05:00
Felipe
aa0d17ed18
fix web
2024-01-02 18:01:21 -05:00
Felipe
0f319cd84c
domicilio null
2024-01-02 17:57:18 -05:00
Felipe
cf34fdfb8e
update calendar
2024-01-02 16:16:02 -05:00
Felipe
956222de76
update
2023-12-23 11:06:10 -05:00
Felipe
c19f75c6a6
update
2023-12-22 16:38:55 -05:00
Felipe
695630ae47
boton
2023-12-22 16:06:32 -05:00
Felipe
cce805664e
update
2023-12-21 15:54:22 -05:00
Felipe
8f042d9ef8
fix
2023-12-15 18:08:27 -05:00
Felipe
d651b140fb
update 15 dec
2023-12-15 16:04:01 -05:00
lizandrogd
aaf82b4072
Merge branch 'main' of https://github.com/lizandrogd/prosappco
2023-12-03 12:42:05 -05:00
lizandrogd
a99c2c242a
update
2023-12-03 12:41:51 -05:00
Felipe
221a59b5f5
update
2023-12-01 12:17:12 -05:00
Felipe
19ef57c0da
update version limpiar prints
2023-12-01 09:46:46 -05:00
Felipe
80a9713e9c
version
2023-12-01 09:44:30 -05:00
Felipe
f0d18de550
compilado para web
2023-11-18 08:12:37 -05:00
lizandrogd
9762ba6998
up
2023-11-17 20:16:29 -05:00
Felipe
a760c3c863
update
2023-11-17 17:53:54 -05:00
Felipe
ef58892c13
update
2023-11-17 16:32:30 -05:00