- Android Studio installed
- Flutter installed and set up
- Java Development Kit (JDK) installed (Can be uninstalled later)
- Git installed
git clone [repository-url]
cd [repository-name]
Google has security measures in place that wont allow an emulator to sign in with google unless their SHA key is registered
Open Command Prompt and run:
keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore -alias androiddebugkey -storepass android
Open Terminal and run:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android
If you encounter the error: keytool error: java.lang.Exception: Keystore file does not exist
- Ensure Android Studio has been opened at least once
- Verify that you're using the correct path to your
.android
folder - Make sure you've created a virtual device or run a flutter app at least once
After generating your SHA-1 key, you'll see output similar to this:
Certificate fingerprints:
SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Copy the SHA1 value and share it with the project administrator(DiscordId : arminarlert9801)
- If you can't find the
.android
folder:- Windows: It's typically located at
C:\Users\[YourUsername]\.android\
- macOS/Linux: It's typically located at
~/.android/
- Windows: It's typically located at
- If
keytool
command is not recognized:- Ensure Java is properly installed and added to your system's PATH
- Try using the full path to keytool in your Java installation directory
lib/
├── data/ # Static data and mock data for development
├── models/ # Data models and their serialization logic
├── providers/ # Riverpod providers for state management
│ └── stream_providers.dart # Firebase stream providers
├── screens/ # UI screens and their widgets
│ ├── announcements/ # Announcements Full View that appears on clicking see all announcements
│ ├── dashboard/ # Dashboard screen and its components
│ ├── events/ # Events Screen/Calendar Screen and its components
│ ├── search/ # Search Screen
│ └── screens.dart # Screen exports
├── services/ # External service integrations
├── utils/ # Utility functions and helpers
│ └── firedata.dart # Firebase data operations
├── bottom_navbar.dart # Custom bottom navigation bar
├── event_manager.dart # Main app widget manager
└── main.dart # App entry point
- Using Riverpod for state management
- Stream providers for real-time Firebase data
- State providers for UI state (search, filters)
App Entry
└── EventManager (Root Widget)
├── DashboardScreen
│ ├── ProfileHeader
│ ├── AnnouncementsSlider
│ ├── ClubsContainer
│ └── EventCard
├── EventsScreen
├── SearchScreen
│ ├── SearchBar
│ ├── FilterChips
│ └── SearchResults
├── ResourcesScreen
└── ChatScreen
Firebase Streams (firedata.dart)
└── Stream Providers (stream_providers.dart)
└── Consumer Widgets
-
State Management
- Use Riverpod providers for global state
-
Code Organization
- Firebase operations in lib/utils/firedata.dart
- Auth Service in lib/utils/services
- Data fetching done through providers in providers/stream_providers.dart
-
Firebase Integration
- All Firebase operations through firedata.dart
- Use stream providers for real-time updates