System Requirements
Before installing, ensure your development environment meets these requirements:Development Machine
- macOS
- Windows
- Linux
- OS: macOS 10.14 (Mojave) or later
- RAM: 8 GB minimum (16 GB recommended)
- Disk: 10 GB free space
- Xcode: Latest version (for iOS development)
- CocoaPods: Latest version
Required Software
Flutter SDK
Version: 3.7.2 or higherRequired for cross-platform development
Dart SDK
Version: Included with FlutterAutomatically installed with Flutter
Git
Version: 2.x or higherFor version control
Node.js
Version: 14.x or higherRequired for Firebase CLI
Step 1: Install Flutter SDK
Flutter 3.7.2 • channel stable
Framework • revision xxx
Engine • revision xxx
Tools • Dart 3.7.2 • DevTools 2.x.x
Step 2: Set Up Development Environment
Choose your preferred IDE:- VS Code
- Android Studio
Install VS Code
Download from code.visualstudio.comInstall Flutter Extensions
- Open VS Code
- Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
- Install:
- Flutter (by Dart Code)
- Dart (automatically installed with Flutter)
Configure VS Code
settings.json
Step 3: Android Setup (Optional)
If developing for Android:- Android SDK Platform (API 33 or higher)
- Android SDK Build-Tools
- Android SDK Platform-Tools
- Android SDK Command-line Tools
Step 4: iOS Setup (macOS Only)
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
Step 5: Firebase Setup
# macOS/Linux
export PATH="$PATH:$HOME/.pub-cache/bin"
# Add to ~/.bashrc or ~/.zshrc for persistence
Via Console
- Go to Firebase Console
- Click Add project
- Enter project name (e.g., “restaurant-reservations”)
- Accept terms and click Continue
- Disable Google Analytics (or configure)
- Click Create project
- Wait for provisioning to complete
Via CLI
- Email/Password: Toggle on
- Google: Toggle on, add support email
Step 6: Clone and Configure Project
dependencies:
flutter:
sdk: flutter
# Firebase
firebase_core: ^3.3.0
firebase_auth: ^5.1.0
cloud_firestore: ^5.6.12
google_sign_in: ^6.2.1
# State Management
flutter_bloc: ^8.1.3
# Dependency Injection
get_it: ^7.6.4
# Routing
go_router: ^13.0.0
# Utilities
uuid: ^4.0.0
- Android
- iOS
- Web
- macOS (optional)
- Windows (optional)
com.example.app_restaurante or customizecom.example.appRestaurante or customizerules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Business profiles - owners only
match /negocios/{negocioId} {
allow read: if true;
allow write: if request.auth != null && request.auth.uid == resource.data.propietarioId;
}
// Tables - public read, owner write
match /mesas/{mesaId} {
allow read: if true;
allow write: if request.auth != null;
}
// Reservations - authenticated users
match /reservas/{reservaId} {
allow read: if request.auth != null;
allow create: if true; // Allow guest reservations
allow update, delete: if request.auth != null;
}
// Operating hours - public read, owner write
match /horarios/{horarioId} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
Android
- In Firebase Console, go to Project Settings
- Select your Android app
- Download
google-services.json - Place in:
android/app/google-services.json
iOS
- In Firebase Console, go to Project Settings
- Select your iOS app
- Download
GoogleService-Info.plist - Place in:
ios/Runner/GoogleService-Info.plist
- Open
ios/Runner.xcworkspacein Xcode - Drag
GoogleService-Info.plistinto Runner folder - Ensure “Copy items if needed” is checked
Step 7: Initialize Database
Set up initial data in Firestore:- Via Firebase Console
- Via Import Script
Step 8: Build and Run
2 connected devices:
Pixel 5 (mobile) • emulator-5554 • android • Android 13 (API 33)
Chrome (web) • chrome • web • Google Chrome 110.0
# Run on specific device
flutter run -d <device-id>
# Run on Android emulator
flutter run -d emulator-5554
# Run on iOS simulator
flutter run -d "iPhone 14 Pro"
# Run on Chrome
flutter run -d chrome
Verification Checklist
Flutter SDK
Flutter SDK
- Flutter 3.7.2+ installed
-
flutter --versionworks -
flutter doctorshows no errors - PATH configured correctly
Firebase Configuration
Firebase Configuration
- Firebase project created
- Firestore enabled
- Authentication enabled (Email, Google)
-
firebase_options.dartgenerated -
.firebasercconfigured - Security rules deployed
Project Setup
Project Setup
- Repository cloned
- Dependencies installed (
flutter pub get) - Google services files in place
- Build succeeds without errors
Database Initialization
Database Initialization
- Business document created
- Tables added to Firestore
- Operating hours configured
- Test data populated
Troubleshooting Common Issues
Flutter doctor shows errors
Flutter doctor shows errors
Android toolchain issues:Xcode issues (macOS):Command-line tools not found:
- Open Android Studio → SDK Manager → SDK Tools
- Install “Android SDK Command-line Tools”
Firebase initialization fails
Firebase initialization fails
Error: “FirebaseException: [core/no-app]”Solution:
- Verify
firebase_options.dartexists - Check
main.dartinitializes Firebase:
- Run
flutterfire configureagain
Google services files not found
Google services files not found
Android: Place
google-services.json in android/app/iOS:- Open
ios/Runner.xcworkspacein Xcode - Right-click Runner folder
- Add Files to “Runner”
- Select
GoogleService-Info.plist - Check “Copy items if needed”
Gradle build errors (Android)
Gradle build errors (Android)
Error: “Could not resolve firebase-bom”Solution: Update Then run:
android/build.gradle.kts:Pod install fails (iOS)
Pod install fails (iOS)
Solution:If still failing:
Environment Variables
For production deployment, configure:.env.example
Next Steps
Now that your environment is set up:Quickstart Guide
Create your first reservation in under 10 minutes
Architecture Overview
Understand the system design and code structure
API Reference
Explore use cases and repository interfaces
Deployment Guide
Deploy to production environments
Additional Resources
- Flutter Documentation
- Firebase Documentation
- Dart Language Tour
- BLoC Pattern Guide
- GetIt Documentation
For questions or issues, check the project repository’s Issues section or consult the team documentation.