Getting Started

Set up the Everything App for local development in under 5 minutes.

Prerequisites

ToolVersionNotes
Flutter SDKโ‰ฅ 3.10.0Includes Dart โ‰ฅ 3.0.0
Android Studio / XcodeLatestFor device emulators
GitAny recentFor cloning the repo
Firebase CLILatestOptional โ€” for Firebase features

Installation

1. Clone the Repository

# Clone git clone https://github.com/sauravbhattacharya001/everything.git cd everything

2. Install Dependencies

flutter pub get

3. Run the App

# Run on connected device or emulator flutter run # Run on web flutter run -d chrome # Run on specific device flutter devices # List available devices flutter run -d <device>
๐Ÿ’ก Non-Firebase mode The app works without Firebase configured โ€” auth features will be unavailable, but event management and local storage still function.

Firebase Setup (Optional)

To enable authentication features:

  1. Create a project in the Firebase Console
  2. Enable Email/Password authentication in the Authentication section
  3. Register your app (Android: add google-services.json, iOS: add GoogleService-Info.plist)
  4. For web: add Firebase config in web/index.html

Environment Variables

API keys should never be hardcoded. Use Dart's --dart-define mechanism:

# Run with API key flutter run --dart-define=GOOGLE_API_KEY=your_key_here # Or create a .env file (requires flutter_dotenv) GOOGLE_API_KEY=your_key_here

Running with Docker

The repo includes a Dockerfile for containerized builds:

# Build the Docker image docker build -t everything-app . # Run it docker run -p 8080:80 everything-app # Or pull from GHCR docker pull ghcr.io/sauravbhattacharya001/everything:latest

Project Structure

everything/
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ main.dart                  # App entry + AuthGate widget
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ constants/             # AppConstants (URLs, schemes, hosts)
โ”‚   โ”‚   โ”œโ”€โ”€ services/              # AuthService, EventService, GraphService
โ”‚   โ”‚   โ””โ”€โ”€ utils/                 # HttpUtils (SSRF-safe), DateUtils
โ”‚   โ”œโ”€โ”€ data/
โ”‚   โ”‚   โ”œโ”€โ”€ local_storage.dart     # SQLite singleton (v4 schema)
โ”‚   โ”‚   โ””โ”€โ”€ repositories/         # EventRepository, UserRepository
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ”‚   โ”œโ”€โ”€ event_model.dart       # EventModel + EventPriority enum
โ”‚   โ”‚   โ”œโ”€โ”€ event_tag.dart         # EventTag with color palette
โ”‚   โ”‚   โ”œโ”€โ”€ recurrence_rule.dart   # RecurrenceRule + frequency enum
โ”‚   โ”‚   โ””โ”€โ”€ user_model.dart        # UserModel
โ”‚   โ”œโ”€โ”€ state/
โ”‚   โ”‚   โ”œโ”€โ”€ blocs/                 # EventBloc (Cubit-based)
โ”‚   โ”‚   โ””โ”€โ”€ providers/             # EventProvider, UserProvider
โ”‚   โ””โ”€โ”€ views/
โ”‚       โ”œโ”€โ”€ home/                  # HomeScreen, EventDetailScreen, StatsScreen
โ”‚       โ”œโ”€โ”€ login/                 # LoginScreen
โ”‚       โ””โ”€โ”€ widgets/               # EventCard, EventFormDialog, UserAvatar
โ”œโ”€โ”€ test/                          # Unit & widget tests
โ”œโ”€โ”€ docs/                          # Documentation site (GitHub Pages)
โ”œโ”€โ”€ .github/                       # CI, CodeQL, Docker, Pages workflows
โ”œโ”€โ”€ pubspec.yaml                   # Dependencies
โ”œโ”€โ”€ Dockerfile                     # Container build
โ””โ”€โ”€ CONTRIBUTING.md                # Contributor guide