# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- ## [1.6.1] - 2026-04-04 Phase 4 — animation polish and final feature gaps. Flutter app reaches full feature parity with Consumer Web App v1.4.9. ### Added - **BouncingLoader widget** (`lib/widgets/bouncing_loader.dart`): 3-dot bouncing animation with staggered 200 ms delays using `Curves.bounceOut`. Replaces `CircularProgressIndicator` in home, contribute, and review screens. Accepts `color`, `dotSize`, and `spacing` parameters. - **DiceBear Notionists avatars on review cards** (REV-001): `CachedNetworkImage` fetches `api.dicebear.com/9.x/notionists/svg?seed={username}`. Falls back to coloured initial letter `CircleAvatar` on error or while loading. - **Server-side event search** (HOME-007): Search modal now sends `q` param to `EventsByPincodeView`; client-side filter stays for instant `onChanged` feedback while server results load on submit. Cache is bypassed for search queries. Django backend updated with `Q(title__icontains=q) | Q(description__icontains=q)` OR filter. - **`flutter_staggered_animations: ^1.1.1`** added to pubspec. ### Changed - **Review list stagger animation** (REV-003): `AnimationLimiter` + `AnimationConfiguration.toStaggeredList` wraps review cards with 375 ms slide-up + fade-in per item. - **Review submit success spring animation** (REV-004): Checkmark icon now animates with `ScaleTransition` driven by `Curves.elasticOut` (600 ms) instead of a static icon swap. - **Hero transitions on event cards** (UX-005): `Hero(tag: 'event-hero-{id}')` wraps event images in home screen and matching destination in learn more screen — enabling shared-element transitions. - **FadeTransition on learn more screen** (UX-005): Screen body fades in with `Curves.easeIn` (350 ms) after event data loads. - **AnimatedList stagger on leaderboard** (UX-005): `SliverList` entries animate with `AnimationConfiguration.staggeredList` — 375 ms slide-up + fade-in per row. --- ## [1.6.0] - 2026-04-04 Phase 3 — 26 medium-priority gaps. Profile editing, contributor profiles, share cards, booking promo codes, and UX system components. ### Added - **Eventify ID badge** (AUTH-003): Verified badge displayed on profile and contributor cards for accounts with confirmed identity. - **DiceBear TierAvatarRing** (`lib/widgets/tier_avatar_ring.dart`): Tier-coloured ring around profile avatars using DiceBear seed — Bronze/Silver/Gold/Platinum/Diamond colours. - **Profile photo upload to server** (AUTH-006 / PROF-002): `PATCH /api/user/update-profile/` multipart endpoint; photo picker + crop flow integrated. - **District picker** (PROF-004): 14 Kerala districts selectable from a bottom sheet; stored against user profile. - **183-day profile cooldown lock** (AUTH-005): Username and display name locked for 183 days after last change; countdown shown in edit form. - **Kerala pincodes JSON** (`assets/data/kerala_pincodes.json`) (LOC-003): Full offline pincode dataset covering all 14 districts; powers location-aware event discovery without API round trips. - **Promo code input on booking** (BOOK-003): `POST /bookings/apply-promo/` endpoint; inline validation with success/error state in booking bar. - **Contributor profile screen** (`lib/screens/contributor_profile_screen.dart`) (CTR-004/005): Public view of any contributor's stats, tier, events submitted, and achievements. - **Share rank card** (`lib/features/share/share_rank_card.dart`) (SHARE-001/002): Generates a shareable tier/EP card image; `share_plus` used for native share sheet. - **Share status button on contributor dashboard** (CTR-003): `OutlinedButton.icon` with `Share.share()` near tier/EP display. - **GlassCard widget** (`lib/widgets/glass_card.dart`) (UX-003): Reusable frosted-glass surface used across gamification and profile screens. - **EventifyBottomSheet** (`lib/widgets/eventify_bottom_sheet.dart`) (UX-004): Standardised bottom sheet with drag handle, rounded corners, and safe-area inset. - **Featured events carousel** (HOME-004): Auto-scrolling hero carousel for featured/sponsored events on home screen. - **Event image gallery** (EVT-001): Full-screen `PageView` carousel inside learn more screen with dot indicator. ### Changed - **Real gamification data** (GAM-003/004/006): EP/RP transaction history, tier progression, and leaderboard all wired to live Node.js API — mock data removed. - **Leaderboard card district display** (LDR-003): District badge shown per rank row; district filter pill row added above leaderboard. - **Achievement badge display + unlock animation** (ACH-002/003): Badges rendered from API; confetti-style animation plays on first unlock. - **Review responses** (REV-002): Organiser reply thread displayed below each review card. - **Profile bio and social links** (PROF-001): Edit form includes bio textarea and links for Instagram, Twitter, LinkedIn. --- ## [1.5.1] - 2026-04-04 Phase 2 — 11 high-priority gaps. Authentication hardening, location services, real gamification data hookup, skeleton loading, and booking flow fixes. ### Added - **Email OTP verification** (AUTH-004): 6-digit OTP sent on registration; verification screen blocks app access until confirmed. - **Password reset flow** (AUTH-002): Forgot-password → OTP → new password screens; Django `POST /accounts/password-reset/` endpoint integrated. - **Location permission + haversine distance sorting** (LOC-001/002): `geolocator` requests permission at startup; events sorted by straight-line distance from user's GPS coordinate. - **Skeleton loading with shimmer** (UX-001): `shimmer: ^3.0.0` added; event feed, leaderboard, and profile screens show shimmer placeholders while data loads. - **Contributor stats real API** (CTR-001): EP/RP balance and tier fetched from Node.js gamification endpoint on dashboard load. - **Achievement progress tracking** (ACH-001): Progress bars and completion state fetched from API; local mock removed. - **Profile stats row** (PROF-003): Likes / Posts / Views counts fetched from user profile API and displayed in profile header. ### Changed - **Search modal with server pincode detection** (HOME-001/002/003): Search bottom sheet auto-detects user pincode; category filter chips filter from API results. - **Real tier and EP display** (GAM-002/005): Contributor dashboard shows live tier and EP from Node.js API; tier badge in profile header updated to match. - **District filter on leaderboard** (LDR-002): Leaderboard district pills populated from API; selecting filters rank table in real time. - **Booking bar fixes** (EVT-003/BOOK-004): Fixed ticket-count stepper; booking confirmation screen correctly shows booking reference. --- ## [1.5.0] - 2026-04-04 Phase 1 — critical gaps. Live backend integration replacing all mock/stub data, payment checkout, and OAuth. ### Added - **Gamification API integration**: EP, RP, leaderboard, and achievements wired to live Node.js endpoints at `app.eventifyplus.com/api/v1/` — all mock `GamificationService` data replaced. - **Razorpay checkout** (BOOK-001): Native Razorpay SDK integrated; `POST /bookings/create/` → order creation → Razorpay payment sheet → `POST /bookings/verify/` webhook. - **Google OAuth login** (AUTH-001): `google_sign_in` flow; tokens exchanged with Django `POST /accounts/google-auth/` endpoint. - **Notification panel** (NOTIF-002/003/004): `DraggableScrollableSheet` notification drawer with 4 colour-coded notification types (booking, event, system, promo); mark-individual-read and mark-all-read actions. --- ## [1.4.0] - 2026-03-18 ### Added - **Desktop Contribute Dashboard**: Full desktop layout for the Contribute screen, matching the web version at eventifyplus.com/contribute - "Contributor Dashboard" title with 3-tab navigation (Contribute, Leaderboard, Achievements) - Two-column submit event form — Event Title + Category side-by-side, Date + Location side-by-side - Contributor Level gradient card with 5-tier milestone progress bar (Bronze → Silver → Gold → Platinum → Diamond) - Sub-navigation row: My Events / Submit Event / Reward Shop - Desktop Leaderboard with All Time / This Month toggle, district pills, podium, and full rank table - Desktop Achievements with 3-column badge grid, progress bars, and lock icons - Inline Reward Shop with RP balance badge and shop item cards - **Gamification Feature Module** (`lib/features/gamification/`): - `GamificationProvider` — ChangeNotifier-based state management - `GamificationService` — mock data for EP, RP, leaderboard entries, achievements, and shop items - Models: `LeaderboardUser`, `Achievement`, `ShopItem`, `ContributorStats` - **Bottom Sheet Date Filters**: Home screen event-category filter chips now open in a modal bottom sheet on mobile - Web runner script (`run_web.sh`) for local Flutter web development server ### Changed - **Profile Screen**: Completely redesigned to match the web app layout — gradient header card, avatar, stats row (Likes / Posts / Views), and tabbed content - **Profile Card Animations**: Smooth entrance animations matching the React web component - **Contribute Screen (Mobile)**: Full 4-tab rebuild — Contribute, Leaderboard, Achievements, Shop — with animated glass-glider tab bar indicator - **Login Screen**: Updated UI design aligned with the web version - **Event Detail Screen**: Layout updates and improved API data binding - **Theme**: Refreshed dark/light mode colour palette and surface colours - **API Client**: Updated base URL and endpoint paths in `lib/core/api/api_endpoints.dart` - **Fonts**: Integrated full Gilroy font family (Light, Regular, Medium, SemiBold, Bold, ExtraBold — with italic variants) - **Responsive Layout**: Improved breakpoint handling; desktop threshold set at 820 px ### Fixed - Profile card pixel-perfect alignment with the web version - Calendar screen date-range filter and location search integration - District dropdown naming conflict in leaderboard (`_lbDistricts` vs. `_districts`) - Green points colour (#16A34A) on desktop leaderboard matching web (was blue #0F45CF on mobile) --- ## [1.3.0] - 2026-02-xx ### Added - Leaderboard tab and Achievements tab added to the Contribute screen - Bouncy sliding glass-glider animation for Contribute tab bar --- ## [1.2.0] - 2026-01-xx ### Added - Responsive dual-layout system with 820 px breakpoint - Date filtering on the Home screen event feed - Location search integration - Calendar screen bug fixes and improvements --- ## [1.1.0] - 2025-12-xx ### Added - Initial screens: Login, Home, Events, Profile, Calendar, Search, Booking - Desktop variants: `DesktopLoginScreen`, `HomeDesktopScreen` - Flutter launcher icons and native splash screen - Gilroy font integration (initial) - `shared_preferences` session caching