📋 About
negotiatR was created to help the team of the non-governmental organization Munich European Forum e.V. organize simulation events throughout the year. It encompasses the three committees emulated in its flagship event, the Brussels European Forum.
Through this tool, chairs and secretariat staff can manage different debate modes, select the committee to be simulated, restrict the number of participating countries, and impose time restrictions on speeches. First developed in 2023 to replace outdated tools, negotiatR is fully written in Dart using the Flutter framework.
✨ Features
Formal Debate
Manage speakers lists with per-speech timers and country flags.
Informal Debate
Free-form discussion timer with start, pause, and reset controls.
Suspension
Break timer with the option to set a specific end time-of-day.
Country Selection
Toggle which delegations are present for the current session.
Committee Switching
Switch between G20, NAC, and FAC committees at any time.
Persistent State
Session selections are saved locally and restored on next launch.
🏛️ Supported Committees
| Committee | Full Name | Members |
|---|---|---|
| G20 | Group of Twenty | 19 countries |
| NAC | NATO Atlantic Council | 31 countries |
| FAC | Foreign Affairs Council (EU) | 27 countries |
📖 How to Use
-
Select a committee On launch, choose G20, NAC, or FAC from the login screen.
-
Manage delegations Hold the add button in formal debate to open the "Select Countries" tab to check/uncheck which delegations are present.
-
Run a Formal Debate Add countries to the speakers list, set a speech duration, and let the timer count down per speaker.
-
Run an Informal Debate Start, pause, or reset the free-form discussion timer as needed.
-
Declare a Suspension Set a break duration or an exact end time; the countdown displays prominently for all to see.
-
Switch committees Use the Settings tab and confirm the logout dialog to return to the committee selection screen.
💻 Supported Platforms
🚀 Getting Started
Prerequisites
- Flutter SDK ≥ 3.1.3
- Dart SDK ≥ 3.1.3 < 4.0.0
- macOS builds: Xcode + CocoaPods
- Windows builds: Visual Studio with "Desktop development with C++" workload
Build & Run
# Install dependencies flutter pub get # Run on macOS flutter run -d macos # Run on Windows flutter run -d windows # Build release for macOS flutter build macos # Build release for Windows flutter build windows
📁 Project Structure
├── main.dart — App entry point & bottom navigation
├── screens/
│ ├── login.dart — Committee selection screen
│ ├── formal.dart — Formal debate (speakers list + timer)
│ ├── informal.dart — Informal debate timer
│ ├── suspension.dart — Suspension/break timer
│ ├── dialog_timer.dart — Reusable timer dialog widget
│ ├── select_countries.dart — Delegation toggle list
│ ├── settings.dart — App settings & logout
│ ├── logout_warning.dart — Logout confirmation dialog
│ └── about.dart — Version, author & license info
├── ressources/
│ ├── bar_button.dart — Navigation bar button widget
│ ├── button_widget.dart — Reusable styled button
│ ├── countries.dart — Country data per committee
│ └── country_dropdown.dart — Country selector widget
└── utils/
├── functions.dart — Country list helpers
└── shared_prefs.dart — Local persistence singleton
📦 Key Dependencies
| Package | Purpose |
|---|---|
| shared_preferences | Persist committee & country selections locally |
| font_awesome_flutter | Icon set used throughout the UI |
| loading_indicator | Animated loading spinners |
| cupertino_icons | iOS-style icon set |
| flutter_launcher_icons | Generate app icons for all platforms |
ℹ️ App Info
⚖️ License
End User License Agreement (EULA)
This software is proprietary. The owner grants you a non-exclusive, non-transferable license to use negotiatR on any device you own or control.
You may not modify, adapt, translate, reverse-engineer, decompile, disassemble, or create derivative works based on the software. You may not rent, lease, lend, sell, redistribute, or sublicense it.
The software is provided without warranty. In no event shall the owner be liable for any direct, indirect, incidental, special, or consequential damages arising from its use.
© 2023 Joao Lucas D. R. Hilgert. All rights reserved.