Skip to content

E-m-i-n-e-n-c-e/Revent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e92cd8b · Mar 22, 2025
Jan 5, 2025
Feb 6, 2025
Feb 1, 2025
Mar 22, 2025
Mar 12, 2025
Mar 22, 2025
Mar 10, 2025
Mar 22, 2025
Jan 28, 2025
Jan 28, 2025
Dec 25, 2024
Mar 22, 2025
Jan 28, 2025
Dec 31, 2024
Mar 22, 2025
Dec 25, 2024
Feb 21, 2025
Dec 25, 2024
Dec 31, 2024
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025

Repository files navigation

Project Setup Guide

Prerequisites

  • Android Studio installed
  • Flutter installed and set up
  • Java Development Kit (JDK) installed (Can be uninstalled later)
  • Git installed

Installation Steps

1. Clone the Repository

git clone [repository-url]
cd [repository-name]

2. Generate SHA-1 Debug Key

Google has security measures in place that wont allow an emulator to sign in with google unless their SHA key is registered

Windows

Open Command Prompt and run:

keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore -alias androiddebugkey -storepass android

macOS/Linux

Open Terminal and run:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android

Common Issues with SHA-1 Generation:

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

3. Share Your SHA-1 Key

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)

Troubleshooting

  • 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/
  • 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





Project Documentation

Folder Structure

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

State Management

  • Using Riverpod for state management
  • Stream providers for real-time Firebase data
  • State providers for UI state (search, filters)

Widget Flow

App Entry
└── EventManager (Root Widget)
    ├── DashboardScreen
    │   ├── ProfileHeader
    │   ├── AnnouncementsSlider
    │   ├── ClubsContainer
    │   └── EventCard
    ├── EventsScreen
    ├── SearchScreen
    │   ├── SearchBar
    │   ├── FilterChips
    │   └── SearchResults
    ├── ResourcesScreen
    └── ChatScreen

Data Flow

Firebase Streams (firedata.dart)
   └── Stream Providers (stream_providers.dart)
       └── Consumer Widgets

Best Practices

  1. State Management

    • Use Riverpod providers for global state
  2. 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
  3. Firebase Integration

    • All Firebase operations through firedata.dart
    • Use stream providers for real-time updates