Evento Organizer Event Management App

Evento Organizer is a production-ready, fully functional, and API-integrated mobile application built with Flutter for event organizers (vendor side). It is the organizer companion app for the Evento ecosystem, connecting to the backend at https://your-domain.com. It ships with comprehensive event management features, clean architecture, and integrated tools (auth, event creation, ticket management, bookings, income analytics, withdrawals, support tickets, multi-language, dark mode) so organizers can manage their events efficiently on both Android and iOS.

What you get out of the box

  • Organizer dashboard with income analytics, revenue charts, and booking overview.
  • Event management: Create, edit, and manage both online and venue events with multi-language support, rich text descriptions, gallery images, and location maps.
  • Ticket management: Add/edit ticket types, configure pricing (free/paid/variations), early-bird discounts, seat mapping, and ticket slot configuration.
  • Booking management: View all, pending, completed, and rejected bookings with detailed customer information, variation breakdowns, and booking reports.
  • Financial tools: Income analytics with monthly charts, withdrawal requests, transaction history, and balance tracking.
  • Support system: Create and manage support tickets with full conversation threads.
  • Modern features: Dark mode, RTL support (Arabic), multi-language, responsive layouts.

Architecture at a glance (feature-first)

  • lib/app: application layer and cross-cutting concerns
    • Core app files: app_colors.dart, app_theme_data.dart, assets_path.dart, app_routes.dart, app_text_styles.dart, urls.dart
  • lib/features: domain modules with clear boundaries
    • auth/: organizer login, signup, profile editing, change password
    • dashboard/: analytics, income charts, booking stats
    • event_management/: add/edit online & venue events, event listing, ticket management, seat mapping, ticket settings
    • event_bookings/: all bookings, pending/completed/rejected, booking details, booking reports
    • income/: monthly income analytics with charts
    • withdraw/: balance tracking, withdrawal requests, history
    • transactions/: complete transaction history with pagination
    • support_tickets/: ticket creation, listing, and conversation threads
    • nav_appbar/: main navigation shell, drawer, bottom nav
    • common/: reusable UI components and widgets
  • lib/services: API service layer
    • api_client.dart: Dio-based HTTP client with auth interceptor, 401 auto-logout
    • Domain services: auth_service.dart, event_management_service.dart, withdraw_service.dart, etc.
  • lib/utils: utility classes app_logger.dart, number_formatter.dart

Key integrations

  • State management with provider all ChangeNotifier providers registered globally in app.dart.
  • Networking with dio auto-injects Authorization: Bearer token and Accept-Language header on every request.
  • Multi-language support with RTL for Arabic (direction driven by API language data).
  • Dark mode with full light/dark theme via AppThemeData.
  • Rich text editing with flutter_quill for event descriptions.
  • Maps & location using google_maps_flutter for venue event location picking.
  • Image handling with image_picker and file_picker for thumbnails and gallery uploads.
  • Charts with fl_chart and syncfusion_flutter_charts for income analytics.
  • Compact number formatting (1M/1B/1T) for large financial figures.

Branding and theming

  • Primary teal color: #008585, accent: #00b1b6 defined in AppColors.
  • Full light/dark theme in AppThemeData. Font family: Inter.
  • Dark mode support with automatic theme switching based on user preference.
  • Supporting colors and accent tones can be customized in lib/app/app_colors.dart and lib/app/theme_data.dart.

The result is a maintainable, scalable codebase that adheres to Flutter best practices. You can customize typography, colors, layouts, assets, and module-level behavior without fighting the structure making it faster to ship features and iterate.

Folder Structure

All you need to follow the lib (Library) Folder for any logical and UI changes in this project.

lib
├── app
│   ├── app.dart
│   ├── app_colors.dart
│   ├── app_routes.dart
│   ├── app_text_styles.dart
│   ├── assets_path.dart
│   ├── theme_data.dart
│   └── urls.dart
├── features
│   ├── auth
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens
│   ├── dashboard
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens
│   ├── event_management
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens & widgets
│   ├── event_bookings
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens & widgets
│   ├── income
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens
│   ├── withdraw
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens & widgets
│   ├── transactions
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens & widgets
│   ├── support_tickets
│   │   ├── data/models
│   │   ├── providers
│   │   └── ui/screens & widgets
│   ├── nav_appbar
│   │   └── ui/screens
│   └── common
│       └── ui/widgets
├── services
│   ├── api_client.dart
│   ├── auth_service.dart
│   ├── event_management_service.dart
│   ├── withdraw_service.dart
│   └── ...other services
└── utils
    ├── app_logger.dart
    └── number_formatter.dart
Project Folder Structure

Screens

Organizer App Screens (35 Total):

Authentication (5 screens)

1. Splash Screen
2. Login Screen
3. Signup Screen
4. Edit Profile Screen
5. Change Password Screen

Dashboard (1 screen)

6. Dashboard Screen (income analytics, booking stats, revenue chart)

Event Management (14 screens)

7. All Events Screen (combined list)
8. Online Events Screen
9. Venue Events Screen
10. Choose Event Type Screen
11. Add Online Event Screen
12. Add Venue Event Screen
13. Edit Online Event Screen
14. Edit Venue Event Screen
15. Tickets Screen (ticket list per event)
16. Add Tickets Screen
17. Edit Ticket Screen
18. Ticket Settings Screen
19. Seat Mapping Screen
20. Event Card Widget

Event Bookings (6 screens)

21. All Bookings Screen
22. Pending Bookings Screen
23. Completed Bookings Screen
24. Rejected Bookings Screen
25. Booking Details Screen
26. Booking Report Screen

Financial (3 screens)

27. Monthly Income Screen (charts)
28. Withdraw / Balance Screen
29. Withdrawal Request Screen
30. Transactions Screen

Support (3 screens)

31. All Support Tickets Screen
32. Add Support Ticket Screen
33. Support Ticket Details / Conversation Screen

Navigation (2 screens)

34. App Home (main shell with bottom nav / drawer)
35. Organizer Drawer Widget

Requirements

Download and install any one of these IDEs (Android Studio, VS Code) on your computer.

Set up Flutter and Dart SDK on your computer if you want to modify the source code.

Must install Flutter and Dart plugins in your IDE.

Install Flutter on Windows

Install Flutter on Mac

Installation

After downloading the file from CodeCanyon you will get a zip file. Extracting it gives you a Documentation folder and the app source zip:

  • Unzip the source and open it in your IDE.
  • Find pubspec.yaml and run pub get (top-right in Android Studio) or run flutter pub get in terminal.
  • Make sure you are using Flutter version 3.30.0 or higher.
  • Open an emulator or connect a real device, then click Run.
Installation Screenshot

Flutter Packages

Core UI & Design

cupertino_icons >> iOS-style icon set

flutter_svg >> Render SVG assets

font_awesome_flutter >> Font Awesome icon library

dotted_border >> Dotted/dashed border widget for image upload areas

flutter_colorpicker >> Color picker widget (used in seat mapping)

cached_network_image >> Network images with caching

Charts & Analytics

fl_chart >> Customizable charts for income analytics

syncfusion_flutter_charts >> Advanced charts (Syncfusion)

syncfusion_flutter_sliders >> Range sliders

syncfusion_flutter_core >> Core Syncfusion utilities

Localization & Text

flutter_localizations >> Built-in Flutter localizations (en, ar, es)

intl >> Date/number formatting and i18n utilities

flutter_quill >> Rich text editor for event descriptions

flutter_quill_delta_from_html >> Convert HTML to Quill delta

flutter_html >> Render HTML content

State Management

provider >> Officially recommended state management (ChangeNotifier)

Networking & Data

dio >> Powerful HTTP client with interceptors (auth token injection)

shared_preferences >> Persistent key-value storage (token, locale)

logger >> Pretty logging via AppLogger

url_launcher >> Launch URLs in external apps

device_info_plus >> Device information

File & Image Handling

image_picker >> Capture or select images (thumbnails, gallery)

file_picker >> Pick files from device storage

share_plus >> Share content from the app

path_provider >> Access device file system paths

Note: This app does NOT use Firebase or push notifications.

Setup Application

Change App Name

Android

  1. Open <project>/android/app/src/main/AndroidManifest.xml
  2. Update the android:label value inside the <application> tag:
<application
    android:label="Evento Organizer"
    android:icon="@mipmap/ic_launcher">
</application>

iOS

  1. Open <project>/ios/Runner/Info.plist
  2. Change CFBundleName:
<key>CFBundleName</key>
<string>Evento Organizer</string>

Reinstall after rename

  • Uninstall the previously installed app from the device/emulator, then rebuild and run.
adb uninstall com.example.evento_organizer

Change App Launcher Icons

  1. Update the flutter_launcher_icons config in pubspec.yaml:
flutter_launcher_icons:
  android: true
  ios: true
  image_path: "assets/icons/icon.png"
  adaptive_icon_foreground: "assets/icons/icon.png"
  adaptive_icon_background: "assets/icons/bg.png"
  1. Place your icons at assets/icons/icon.png (10241024 recommended)
  2. Generate icons:
dart run flutter_launcher_icons
  1. Rebuild the app. Clear build caches if icons do not update.

Change API URL

  1. Open lib/app/urls.dart
  2. Update the base URL constant to your server URL (no trailing slash):
class Urls {
  static const String _baseUrl = 'https://your-domain.com/evento'; //  change this to your domain + install directory
  static const String _apiBaseUrl = '$_baseUrl/api'; //  if your API prefix is different (e.g. /api/v2), change 'api' here

  // Auth
  static const String login      = '$_apiBaseUrl/organizer/auth/login';
  static const String register   = '$_apiBaseUrl/organizer/auth/register';

  // Events
  static const String getEvents  = '$_apiBaseUrl/organizer/event-management/events';
  static const String addEvent   = '$_apiBaseUrl/organizer/event-management/event/store';

  // Bookings
  static const String getBookings = '$_apiBaseUrl/organizer/event-booking';

  // Transactions
  static const String getTransactions = '$_apiBaseUrl/organizer/transcation';

  // Withdraw
  static const String getWithdrawData = '$_apiBaseUrl/organizer/withdraw';

  // Support Tickets
  static const String getSupportTickets = '$_apiBaseUrl/organizer/support-ticket';

  // ... other endpoints
}
  • Do not add a trailing / to _baseUrl.
  • If your backend is installed in a different directory (e.g. /evento2, /app, or at the root), update _baseUrl to match:
    // Backend at root domain
    static const String _baseUrl = 'https://your-domain.com';
    
    // Backend in a subdirectory
    static const String _baseUrl = 'https://your-domain.com/evento';
    
    // Backend on a subdomain
    static const String _baseUrl = 'https://api.your-domain.com';
  • If the API prefix changes (e.g. /api/v2 instead of /api), update _apiBaseUrl accordingly:
    static const String _apiBaseUrl = '$_baseUrl/api/v2';
  • The ApiClient singleton automatically injects the Bearer token and Accept-Language header on every request.
  • After changing the URL, restart the app and log out to refresh tokens.
Change API URL in urls.dart

App Logo & Branding

  • App Logos: Defined in AssetsPath (lib/app/assets_path.dart):
    • assets/images/logo.pngAssetsPath.appLogoSvg (main logo)
    • assets/images/applogo.pngAssetsPath.appLogoMainSvg (alternate/splash logo)
  • Replace the PNG files with your own logos (recommended size: 1024×1024 for applogo, transparent background).
  • If you rename files, update the constants in lib/app/assets_path.dart accordingly.
App Logo Assets

Theme Colors

All colors are defined in lib/app/app_colors.dart (class AppColors).

  • Primary: #008585AppColors.primaryColor
  • Accent: #00b1b6AppColors.secondaryColor
  • Pink Accent: #F83758AppColors.colorPink
  • Text Color: #182D53AppColors.colorText
  • Title Color: #222B45AppColors.titleColor
  • Dark Background: #121212AppColors.darkBackground
  • Dark Surface: #1E1E1EAppColors.darkSurface
  • Dark On-Surface: #E0E0E0AppColors.darkOnSurface
  • Dark Input Background: #2C2C2CAppColors.darkInputBackground
  • Dark Title Color: #E0E0E0AppColors.darkTitleColor
  • Dark Text Color: #B0B0B0AppColors.darkTextColor

Full light/dark theme defined in lib/app/theme_data.dart (AppThemeData). Font family: Inter — swap in pubspec.yaml fonts section and update AppThemeData.

App Theme Colors

Localization

The app supports English (en), Arabic (ar / RTL), and Spanish (es). Language is managed by LocaleProvider and persisted under the app_locale key in SharedPreferences (language code only, e.g. en). Check LocaleProvider.isRTL when layout direction matters.

Build & Run App

Run the Application:

  • Select an Android/iOS device in the target selector in your IDE.
  • Or run from the command line:
flutter run
Run App Screenshot

Build Release & Publish App

1. Build Release APK

After making all changes, open the terminal, navigate to the project folder, and run:

flutter build apk --release

For Play Store, use App Bundles to reduce final APK size.

Build App Bundle (recommended for Play Store):

flutter build appbundle --target-platform android-arm,android-arm64,android-x64
Learn more

Split APKs per ABI:

flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi

Signing the App (required for Google Play):

Generate a signing key:

keytool -genkey -v -keystore android/app/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

Create android/key.properties:

storePassword=your_store_password
keyPassword=your_key_password
keyAlias=key
storeFile=../app/key.jks

Update android/app/build.gradle with signing config referencing key.properties.

2. Android (Play Store)

https://flutter.dev/docs/deployment/android

3. iOS (App Store)

flutter build ios --release
https://flutter.dev/docs/deployment/ios

Support

📩 For support, customization, or queries, contact us via https://kreativdev.freshdesk.com