Skip to content

HamzaAli2002/internee-task-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Internee Task Manager

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.


πŸ“± Screenshots Overview

Splash Login Signup
Admin Dashboard Create Task All Tasks
Intern Dashboard Task Detail Feedback

✨ Features

Admin

  • 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

Intern

  • 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

πŸ›  Tech Stack

Layer Technology
Frontend Flutter 3.x (Dart)
Auth Firebase Authentication
Database Firebase Firestore (real-time streams)
Fonts Google Fonts (Poppins)
State setState + StreamBuilder

πŸ“ Project Structure

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

πŸš€ Getting Started

Prerequisites

  • Flutter SDK >=3.0.0
  • Dart SDK >=3.0.0
  • A Firebase project (free Spark plan works)
  • FlutterFire CLI

1. Clone & Install

git clone https://github.com/your-username/internee_task_manager.git
cd internee_task_manager
flutter pub get

2. Create Firebase Project

  1. Go to console.firebase.google.com
  2. Click Add project β†’ name it internee-task-manager
  3. Enable Google Analytics (optional)

3. Enable Firebase Services

In your Firebase project console:

Authentication

  • Go to Authentication β†’ Sign-in method
  • Enable Email/Password

Firestore Database

  • Go to Firestore Database β†’ Create database
  • Start in test mode (update rules before production)
  • Choose a region close to your users

4. Configure FlutterFire

# 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_ID

This replaces the placeholder firebase_options.dart with your real credentials.

5. Deploy Firestore Rules & Indexes

# 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:indexes

6. Run the App

flutter run

πŸ” Firestore Data Structure

users collection

users/{uid}
  β”œβ”€β”€ uid: string
  β”œβ”€β”€ name: string
  β”œβ”€β”€ email: string
  β”œβ”€β”€ role: "Admin" | "Intern"
  └── createdAt: timestamp

tasks collection

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

🎨 Color Theme

Purpose Color
Primary #1565C0 (Blue)
Success #2E7D32 (Green)
Warning #E65100 (Orange)
Error #C62828 (Red)
Background #F5F7FA (Light Grey)

πŸ”„ App Flow

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)

πŸ”§ Customization Tips

  • Colors: Edit lib/utils/app_colors.dart
  • App name: Edit AppConstants.appName in lib/utils/app_constants.dart
  • Add file uploads: Integrate firebase_storage in FirestoreService and add a file picker to TaskDetailScreen
  • Push notifications: Add firebase_messaging for task assignment alerts
  • Dark mode: Wrap the ThemeData in main.dart with a darkTheme

πŸ› Troubleshooting

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

πŸ“„ License

MIT License β€” free to use for Internee.pk and educational purposes.


Built with ❀️ for Internee.pk

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors