A complete Flutter + Firebase task tracking app for Internee.pk β enabling admins to assign & review tasks, and interns to track, submit, and monitor their assignments in real time.
| Splash | Login | Signup |
|---|---|---|
| Admin Dashboard | Create Task | All Tasks |
| Intern Dashboard | Task Detail | Feedback |
- Login / register as Admin
- View all interns
- Create & assign tasks (title, description, deadline, priority, intern)
- Review submitted tasks β Approve or Reject with feedback
- Filter tasks by status and priority
- View per-intern progress report with completion percentage
- Login / register as Intern
- View assigned tasks with status filters
- Mark tasks as In Progress
- Submit tasks with description + GitHub/live link
- View admin feedback on approved/rejected tasks
- Personal progress dashboard
| Layer | Technology |
|---|---|
| Frontend | Flutter 3.x (Dart) |
| Auth | Firebase Authentication |
| Database | Firebase Firestore (real-time streams) |
| Fonts | Google Fonts (Poppins) |
| State | setState + StreamBuilder |
lib/
βββ main.dart # App entry point + theme
βββ firebase_options.dart # Firebase config (auto-generated)
βββ models/
β βββ user_model.dart # UserModel (uid, name, email, role)
β βββ task_model.dart # TaskModel (all task fields)
βββ services/
β βββ auth_service.dart # Sign up, sign in, sign out
β βββ firestore_service.dart # All Firestore CRUD + streams
βββ screens/
β βββ splash_screen.dart # Animated splash + auto-login
β βββ auth/
β β βββ login_screen.dart # Email/password login
β β βββ signup_screen.dart # Register with role selector
β βββ admin/
β β βββ admin_dashboard.dart # Stats + quick actions
β β βββ intern_list_screen.dart # All interns list
β β βββ create_task_screen.dart # Create & assign task form
β β βββ all_tasks_screen.dart # Tasks list with filters
β β βββ review_task_screen.dart # Review submission + feedback
β β βββ progress_report_screen.dart # Per-intern progress
β βββ intern/
β βββ intern_dashboard.dart # Stats + active tasks
β βββ my_tasks_screen.dart # All assigned tasks + filter
β βββ task_detail_screen.dart # Task info + submit form
β βββ feedback_screen.dart # Reviewed tasks + feedback
βββ widgets/
β βββ custom_button.dart # Reusable button (solid/outlined)
β βββ custom_text_field.dart # Styled input with validation
β βββ task_card.dart # Task list item card
β βββ status_chip.dart # Status & priority badges
β βββ dashboard_card.dart # Metric card for dashboards
βββ utils/
βββ app_colors.dart # Color palette constants
βββ app_constants.dart # Strings, padding, status values
βββ validators.dart # Form validation helpers
- Flutter SDK
>=3.0.0 - Dart SDK
>=3.0.0 - A Firebase project (free Spark plan works)
- FlutterFire CLI
git clone https://github.com/your-username/internee_task_manager.git
cd internee_task_manager
flutter pub get- Go to console.firebase.google.com
- Click Add project β name it
internee-task-manager - Enable Google Analytics (optional)
In your Firebase project console:
- Go to Authentication β Sign-in method
- Enable Email/Password
- Go to Firestore Database β Create database
- Start in test mode (update rules before production)
- Choose a region close to your users
# Install FlutterFire CLI globally
dart pub global activate flutterfire_cli
# Login to Firebase
firebase login
# Configure the app (auto-generates firebase_options.dart)
flutterfire configure --project=YOUR_FIREBASE_PROJECT_IDThis replaces the placeholder firebase_options.dart with your real credentials.
# Install Firebase CLI if you haven't
npm install -g firebase-tools
firebase login
firebase init firestore # select your project
# Copy the rules files, then deploy
firebase deploy --only firestore:rules
firebase deploy --only firestore:indexesflutter runusers/{uid}
βββ uid: string
βββ name: string
βββ email: string
βββ role: "Admin" | "Intern"
βββ createdAt: timestamp
tasks/{taskId}
βββ taskId: string
βββ title: string
βββ description: string
βββ assignedTo: string (intern uid)
βββ assignedToName: string
βββ assignedBy: string (admin uid)
βββ deadline: timestamp
βββ priority: "Low" | "Medium" | "High"
βββ status: "Pending" | "In Progress" | "Submitted" | "Approved" | "Rejected"
βββ submissionText: string
βββ submissionLink: string
βββ feedback: string
βββ createdAt: timestamp
βββ updatedAt: timestamp
| Purpose | Color |
|---|---|
| Primary | #1565C0 (Blue) |
| Success | #2E7D32 (Green) |
| Warning | #E65100 (Orange) |
| Error | #C62828 (Red) |
| Background | #F5F7FA (Light Grey) |
Launch
βββ SplashScreen
βββ Not logged in β LoginScreen / SignupScreen
βββ Role: Admin β AdminDashboard
βββ Role: Intern β InternDashboard
Admin Flow:
AdminDashboard β CreateTaskScreen β (task assigned to intern)
AdminDashboard β AllTasksScreen β ReviewTaskScreen β (approve/reject)
AdminDashboard β InternListScreen β ProgressReportScreen
Intern Flow:
InternDashboard β MyTasksScreen β TaskDetailScreen
βββ Mark In Progress β Submit with link/description
InternDashboard β FeedbackScreen (view approved/rejected feedback)
- Colors: Edit
lib/utils/app_colors.dart - App name: Edit
AppConstants.appNameinlib/utils/app_constants.dart - Add file uploads: Integrate
firebase_storageinFirestoreServiceand add a file picker toTaskDetailScreen - Push notifications: Add
firebase_messagingfor task assignment alerts - Dark mode: Wrap the
ThemeDatainmain.dartwith adarkTheme
| Issue | Fix |
|---|---|
firebase_options.dart errors |
Run flutterfire configure |
| Firestore permission denied | Deploy firestore.rules or use test mode |
| Missing index errors | Deploy firestore.indexes.json or click the link in the error |
google_fonts timeout |
Add --no-sound-null-safety or check internet connection |
MIT License β free to use for Internee.pk and educational purposes.
Built with β€οΈ for Internee.pk