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.
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.
✅ 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
- 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
- Provider 6.1.1 - Recommended state management solution
- ChangeNotifier pattern for reactive UI updates
- Efficient rebuilds with Consumer widgets
- Simple dependency injection
- 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
- intl 0.18.1 - Internationalization and date formatting
- Format dates as "MMM dd, yyyy" (e.g., "Feb 15, 2026")
- Locale-aware formatting support
- Material 3 - Latest Material Design specification
- Dynamic color schemes
- Improved accessibility
- Modern component designs
- Custom Theme - Purple (#7C3AED) to Blue (#3B82F6) gradient branding
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
- Flutter SDK (3.9.2 or higher)
- Android Studio / VS Code
- Android device or emulator
-
Navigate to project directory
cd hacktrack/hacktrack -
Install dependencies
flutter pub get
-
Run the app
flutter run
- Add Hackathon: Tap the + button
- Fill Details: Name, platform, deadlines, notes
- View Details: Tap any card to see timeline
- Edit: Tap Edit button in detail screen
- Delete: Tap Delete button (with confirmation)
- Primary: Purple (#7C3AED) to Blue (#3B82F6) gradient
- Status: Green (Upcoming), Orange (Today), Red (Missed)
- Neutrals: White, Gray shades
- App Title: 28px Bold
- Screen Title: 24px Bold
- Card Title: 18px SemiBold
- Body: 16px Regular
- Rounded cards (12px radius)
- Status chips (8px radius)
- Gradient FAB (24px radius)
- Timeline view with purple accent
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 | 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) |
- 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
{
"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
}- ✅ 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
- ✅ 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)
- ✅ 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)
- ✅ 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
- ✅ 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
- ✅ 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)
- Upcoming: Registration deadline is in the future
- Today: Registration deadline is today
- Missed: Registration deadline has passed
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- Push notifications for deadlines
- Dark theme support
- Export/Import hackathons
- Search and filter
- Calendar integration
- Reminder customization
This project is for educational purposes.
Built with ❤️ using Flutter