Skip to content

hindochahitarth/flutter-hacktracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HackTrack - Hackathon Deadline Tracker

Never miss a hackathon deadline again!

A premium Flutter mobile application designed for developers to track hackathons registered on platforms like Unstop, Devfolio, and HackerEarth. HackTrack helps you stay organized by managing registration deadlines, competition rounds, and important notes—all in one offline-first app.

📖 Project Description

HackTrack is a single-user, offline-first mobile application built with Flutter that solves a common problem for hackathon enthusiasts: keeping track of multiple hackathon deadlines and competition rounds.

Key Highlights:

  • 🎯 Purpose-Built: Specifically designed for developers participating in multiple hackathons
  • 📱 Mobile-First: Native Android app with responsive Material 3 design
  • 🔒 Privacy-Focused: No login, no registration, no cloud sync—your data stays on your device
  • Offline-First: Works completely offline using SQLite local database
  • 🎨 Premium Design: Modern Material 3 UI with purple-blue gradient theme

Problem Solved:
Developers often register for multiple hackathons across different platforms and struggle to keep track of registration deadlines, Round 1, Round 2 dates, and important details. HackTrack centralizes all this information with smart status indicators and timeline views.

✨ Features

Track Hackathons - Add hackathons with registration deadlines and round dates
Smart Status - Automatic status calculation (Upcoming/Today/Missed)
Offline-First - SQLite local database, no login required
Material 3 Design - Premium purple-blue gradient theme
Responsive UI - Adapts to all mobile screen sizes
CRUD Operations - Create, Read, Update, Delete hackathons

🛠️ Tech Stack

Frontend Framework

  • Flutter 3.9.2+ - Google's UI toolkit for building natively compiled applications
    • Cross-platform support (currently Android)
    • Hot reload for fast development
    • Rich widget library with Material 3 support

State Management

  • Provider 6.1.1 - Recommended state management solution
    • ChangeNotifier pattern for reactive UI updates
    • Efficient rebuilds with Consumer widgets
    • Simple dependency injection

Local Database

  • SQLite (sqflite 2.3.0) - Embedded relational database
    • Persistent local storage
    • ACID-compliant transactions
    • Zero-configuration database
  • path_provider 2.1.1 - Access to device file system directories

Utilities

  • intl 0.18.1 - Internationalization and date formatting
    • Format dates as "MMM dd, yyyy" (e.g., "Feb 15, 2026")
    • Locale-aware formatting support

Design System

  • Material 3 - Latest Material Design specification
    • Dynamic color schemes
    • Improved accessibility
    • Modern component designs
  • Custom Theme - Purple (#7C3AED) to Blue (#3B82F6) gradient branding

Project Structure

lib/
├── main.dart                    # App entry point
├── models/
│   └── hackathon.dart          # Hackathon data model
├── database/
│   └── database_helper.dart    # SQLite CRUD operations
├── providers/
│   └── hackathon_provider.dart # State management
├── screens/
│   ├── home_screen.dart        # Main list view
│   ├── add_hackathon_screen.dart # Add/Edit form
│   └── detail_screen.dart      # Hackathon details
├── widgets/
│   ├── hackathon_card.dart     # Card component
│   └── empty_state.dart        # Empty state widget
└── theme/
    └── app_theme.dart          # Material 3 theme config

Setup & Installation

Prerequisites

  • Flutter SDK (3.9.2 or higher)
  • Android Studio / VS Code
  • Android device or emulator

Steps

  1. Navigate to project directory

    cd hacktrack/hacktrack
  2. Install dependencies

    flutter pub get
  3. Run the app

    flutter run

Usage

  1. Add Hackathon: Tap the + button
  2. Fill Details: Name, platform, deadlines, notes
  3. View Details: Tap any card to see timeline
  4. Edit: Tap Edit button in detail screen
  5. Delete: Tap Delete button (with confirmation)

Design System

Colors

  • Primary: Purple (#7C3AED) to Blue (#3B82F6) gradient
  • Status: Green (Upcoming), Orange (Today), Red (Missed)
  • Neutrals: White, Gray shades

Typography

  • App Title: 28px Bold
  • Screen Title: 24px Bold
  • Card Title: 18px SemiBold
  • Body: 16px Regular

Components

  • Rounded cards (12px radius)
  • Status chips (8px radius)
  • Gradient FAB (24px radius)
  • Timeline view with purple accent

🗄️ Database Format

Schema Design

HackTrack uses SQLite for local data persistence. The database file is stored in the app's documents directory and contains a single table:

CREATE TABLE hackathons (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  platform TEXT NOT NULL,
  registrationDeadline INTEGER NOT NULL,
  round1Date INTEGER,
  round2Date INTEGER,
  notes TEXT,
  hasReminder INTEGER NOT NULL DEFAULT 0
)

Field Descriptions

Field Type Description Required
id INTEGER Auto-incrementing primary key Auto
name TEXT Hackathon name (e.g., "Smart India Hackathon") Yes
platform TEXT Platform name (Unstop, Devfolio, HackerEarth, Other) Yes
registrationDeadline INTEGER Unix timestamp (milliseconds since epoch) Yes
round1Date INTEGER Unix timestamp for Round 1 (nullable) No
round2Date INTEGER Unix timestamp for Round 2 (nullable) No
notes TEXT User notes (team size, theme, prize, etc.) No
hasReminder INTEGER Boolean flag (0 or 1) for reminder status Yes (default: 0)

Data Storage Format

  • Dates: Stored as Unix timestamps (milliseconds since epoch) for easy comparison and sorting
  • Booleans: Stored as INTEGER (0 = false, 1 = true)
  • Text: UTF-8 encoded strings
  • Database Location: <app_documents_directory>/hacktrack.db

Example Data

{
  "id": 1,
  "name": "Smart India Hackathon 2026",
  "platform": "Unstop",
  "registrationDeadline": 1739750400000,
  "round1Date": 1740182400000,
  "round2Date": 1740614400000,
  "notes": "Team size: 4 members\nTheme: AI & ML\nPrize: ₹1,00,000",
  "hasReminder": 1
}

⚙️ Current Functionality

1. Home Screen

  • ✅ Display all hackathons in a scrollable list
  • ✅ Show gradient app title "HackTrack"
  • ✅ Display status chips with color coding:
    • 🟢 Green "Upcoming" - Deadline is in the future
    • 🟠 Orange "Today" - Deadline is today
    • 🔴 Red "Missed" - Deadline has passed
  • ✅ Show platform badges (Unstop, Devfolio, etc.)
  • ✅ Display registration deadline with calendar icon
  • ✅ Show reminder bell icon if enabled
  • ✅ Empty state when no hackathons exist
  • ✅ Floating Action Button (+) to add new hackathon
  • ✅ Tap card to view details

2. Add/Edit Hackathon

  • ✅ Create new hackathon entries
  • ✅ Edit existing hackathon details
  • ✅ Form fields:
    • Text input for hackathon name (required)
    • Dropdown for platform selection (4 options)
    • Date picker for registration deadline (required)
    • Date picker for Round 1 date (optional)
    • Date picker for Round 2 date (optional)
    • Multiline text area for notes (optional)
  • ✅ Form validation (name and deadline required)
  • ✅ Gradient "Save Hackathon" button
  • ✅ Cancel button to discard changes
  • ✅ Scrollable layout (keyboard-safe)

3. Detail Screen

  • ✅ Display hackathon title with gradient accent bar
  • ✅ Show current status chip
  • ✅ Timeline view with important dates:
    • Registration deadline with calendar icon
    • Round 1 date with trophy icon
    • Round 2 date with trophy icon
    • Vertical purple line connecting events
  • ✅ Display notes in a card (if available)
  • ✅ Edit button (navigates to edit form)
  • ✅ Delete button with confirmation dialog
  • ✅ Responsive button layout (side-by-side on large screens, stacked on small)

4. Data Management

  • Create: Add new hackathons to database
  • Read: Load and display all hackathons
  • Update: Edit existing hackathon details
  • Delete: Remove hackathons with confirmation
  • ✅ Auto-sort by registration deadline (earliest first)
  • ✅ Persistent storage (data survives app restarts)
  • ✅ Real-time UI updates using Provider state management

5. Smart Features

  • Auto Status Calculation: Compares deadline with current date
  • Date Formatting: "MMM dd, yyyy" format (e.g., "Feb 15, 2026")
  • Today Detection: Adds "(Today)" suffix to current date
  • Loading States: Shows spinner while fetching data
  • Empty States: Friendly message when no data exists

6. UI/UX Features

  • ✅ Material 3 design system
  • ✅ Purple-blue gradient theme
  • ✅ Responsive layouts for all screen sizes
  • ✅ Smooth page transitions
  • ✅ Tap animations on cards and buttons
  • ✅ Form validation feedback
  • ✅ Confirmation dialogs for destructive actions
  • ✅ Accessible touch targets (48dp minimum)

📊 Status Calculation Logic

  • Upcoming: Registration deadline is in the future
  • Today: Registration deadline is today
  • Missed: Registration deadline has passed

Dependencies

dependencies:
  flutter: sdk
  cupertino_icons: ^1.0.8
  sqflite: ^2.3.0
  path_provider: ^2.1.1
  intl: ^0.18.1
  provider: ^6.1.1

Future Enhancements

  • Push notifications for deadlines
  • Dark theme support
  • Export/Import hackathons
  • Search and filter
  • Calendar integration
  • Reminder customization

License

This project is for educational purposes.


Built with ❤️ using Flutter

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors