Let the Journey Begin - A modern Flutter barber shop booking application with Firebase integration
📱 About A comprehensive barber shop booking application built with Flutter that allows customers to book appointments for various grooming services. The app features a beautiful dark brown theme, seamless booking system, and powerful admin panel for managing appointments and services.
✨ Features
👤 User Authentication
Google Sign-In Integration - Quick and secure authentication
Email & Password Login - Traditional authentication method
User Profile Management - Personalized user experience
Welcome Back Experience - Smooth returning user flow
💇♂️ Service Booking
Multiple Services Available:
✂️ Classic Shaving
🧴 Hair Washing
👶 Kids Hair Cutting
💇♂️ Hair Cutting
🧔 Beard Trimming
🧖♂️ Facial Services
Date & Time Selection - Flexible appointment scheduling
Real-time Availability - Live booking calendar
Service Promotions - Special offers and discounts (50% OFF)
Comprehensive Dashboard - Admin login and management
Booking Management - View and manage all appointments
Service Overview - Track booking details and customer information
User Management - Handle customer profiles and preferences
🎨 Design & Interface
Modern Dark Theme - Elegant brown and orange color scheme
Professional UI/UX - Barber shop aesthetic with scissors and styling icons
Responsive Design - Optimized for all mobile devices
Smooth Animations - Engaging user interactions
🛠️ Tech Stack Framework: Flutter (Dart)
Backend: Firebase
Authentication: Firebase Auth + Google Sign-In
Database: Firebase Firestore
Storage: Firebase Storage
State Management: Provider / Riverpod
Date/Time Picker: flutter_datetime_picker
Google Services: google_sign_in
📸 Screenshots Admin Login User Authentication Service Booking Admin Auth Booking Services Menu Booking Management User Dashboard Services Management Dashboard 🚀 Getting Started Prerequisites
bash
- Flutter SDK (3.0.0 or higher)
- Dart SDK (2.17.0 or higher)
- Android Studio / VS Code with Flutter extension
- Firebase Account
- Google Cloud Console Account (for Google Sign-In) Installation
Clone the repository
bash git clone https://github.com/gopal334/CUTTER.git cd barber-booking-app Install Flutter dependencies
bash flutter pub get Firebase Setup
Create a new Firebase project
Enable Authentication (Email/Password and Google)
Enable Firestore Database
Download google-services.json (Android) and GoogleService-Info.plist (iOS)
Place files in respective platform folders
Google Sign-In Configuration
Enable Google Sign-In in Firebase Console
Configure OAuth consent screen in Google Cloud Console
Add SHA-1 fingerprints for Android
Run the application
bash flutter run 📦 Dependencies Core Dependencies
text dependencies: flutter: sdk: flutter
cupertino_icons: ^1.0.2 material_color_generator: ^1.0.5
firebase_core: ^2.4.0 firebase_auth: ^4.2.0 cloud_firestore: ^4.3.0 firebase_storage: ^11.0.10
google_sign_in: ^6.0.2
provider: ^6.0.3
intl: ^0.18.0 flutter_datetime_picker: ^1.5.1
cached_network_image: ^3.2.3 shimmer: ^2.0.0 lottie: ^2.2.0
shared_preferences: ^2.0.15 image_picker: ^0.8.6 🔥 Firebase Configuration Firestore Database Structure
javascript // Users Collection users: { userId: { name: "string", email: "string", phone: "string", photoUrl: "string", createdAt: "timestamp" } }
// Bookings Collection bookings: { bookingId: { userId: "string", userName: "string", service: "string", date: "string", time: "string", status: "pending" | "confirmed" | "completed" | "cancelled", createdAt: "timestamp" } }
// Services Collection services: { serviceId: { name: "string", description: "string", price: "number", duration: "number", image: "string", isActive: "boolean" } } Authentication Setup
dart // Firebase Auth Configuration class AuthService { final FirebaseAuth _auth = FirebaseAuth.instance; final GoogleSignIn _googleSignIn = GoogleSignIn();
// Google Sign-In Method Future<UserCredential?> signInWithGoogle() async { final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); if (googleUser == null) return null;
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
return await _auth.signInWithCredential(credential);
} } 🏗️ Project Structure text lib/ ├── main.dart # App entry point ├── app.dart # App configuration ├── core/ # Core functionality │ ├── constants/ # App constants │ ├── themes/ # App themes │ ├── utils/ # Utility functions │ └── services/ # Firebase services ├── features/ # Feature-based modules │ ├── auth/ # Authentication │ │ ├── screens/ # Login/Register screens │ │ ├── services/ # Auth services │ │ └── widgets/ # Auth widgets │ ├── booking/ # Booking system │ │ ├── screens/ # Booking screens │ │ ├── models/ # Booking models │ │ └── services/ # Booking services │ ├── admin/ # Admin panel │ │ ├── screens/ # Admin screens │ │ └── widgets/ # Admin widgets │ └── profile/ # User profile ├── models/ # Data models ├── services/ # App services ├── widgets/ # Reusable widgets └── screens/ # App screens 📱 Platform Support ✅ Android (API 21+)
✅ iOS (iOS 11.0+)
🔄 Web (Firebase Web Support)
🔧 Configuration Files Android Configuration
xml
iOS Configuration
xml
CFBundleURLTypes CFBundleURLName REVERSED_CLIENT_ID CFBundleURLSchemes YOUR_REVERSED_CLIENT_ID
🔐 Security Rules Firestore Security Rules
javascript rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // Users can read/write their own data match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; }
// Users can create bookings, read their own
match /bookings/{bookingId} {
allow create: if request.auth != null;
allow read, update: if request.auth != null &&
(resource.data.userId == request.auth.uid ||
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin');
}
// Services are read-only for users
match /services/{serviceId} {
allow read: if request.auth != null;
allow write: if request.auth != null &&
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin';
}
} } 🧪 Testing bash
flutter test
flutter test test/widget_test.dart
flutter drive --target=test_driver/app.dart 🚀 Build & Release Android
bash
flutter build apk --release
flutter build appbundle --release iOS
bash
flutter build ios --release
flutter build ipa --release 🤝 Contributing We welcome contributions! Please see our Contributing Guidelines for details.
Fork the repository
Create your feature branch (git checkout -b feature/AmazingFeature)
Commit your changes (git commit -m 'Add some AmazingFeature')
Push to the branch (git push origin feature/AmazingFeature)
Open a Pull Request
📄 License This project is licensed under the MIT License - see the LICENSE file for details.
🔗 Links App Store: Coming Soon
Google Play: Coming Soon
📞 Support 📧 Email: support@sengargopal310@gmail.com
🐛 Issues: GitHub Issues
💬 Discussions: GitHub Discussions
🙏 Acknowledgments Flutter team for the amazing cross-platform framework
Firebase for providing excellent backend services
Google Sign-In for seamless authentication
All contributors and beta testers
Barber shop owners who provided valuable feedback
⭐ Star this repository if you found it helpful! ⭐
Flutter Firebase Dart