A modern task management application for Google Developer Groups (GDG) communities, built with React, TypeScript, and Tailwind CSS.
- Lead Role: Full access to dashboard, task creation, member management, and assigned tasks
- Member Role: Access to dashboard and assigned tasks only
- Create tasks with detailed information (title, description, vertical, deadline, estimated time)
- Assign tasks to specific verticals or mark as "Overall Club"
- Multiple rating selection (1-5 stars) for task prioritization
- View all tasks, unassigned tasks, or assigned tasks
- Task submission with document attachments
- Task feedback system
- Open Opportunities: Displays unassigned tasks and "Overall Club" tasks
- Vertical Tracks: Tasks organized by department (Operations, Marketing, Social Media, Creative, Design)
- Personalized welcome message based on user role
- Real-time task updates
- Modern, Google-themed design with animated backgrounds
- Responsive layout for all screen sizes
- Dark mode support (Tasks page)
- Smooth animations and transitions
- Intuitive navigation with sidebar
- Secure login system with role-based access
- Session persistence using localStorage
- Protected routes for authenticated users
- Node.js 18+ and npm/yarn/pnpm
- Modern web browser
- Clone the repository:
git clone <repository-url>
cd gdg-task-spark- Install dependencies:
npm install
# or
yarn install
# or
pnpm install- Start the development server:
npm run dev
# or
yarn dev
# or
pnpm dev- Open your browser and navigate to
http://localhost:8080
npm run build
# or
yarn build
# or
pnpm buildThe production build will be in the dist directory.
Preview the production build:
npm run preview
# or
yarn preview
# or
pnpm previewgdg-task-spark/
├── src/
│ ├── components/ # Reusable UI components
│ │ ├── cards/ # Card components (TaskCard, MemberCard, etc.)
│ │ ├── dialogs/ # Dialog components (FeedbackDialog, TaskSubmissionDialog, etc.)
│ │ ├── layout/ # Layout components (Header, Sidebar, DashboardLayout)
│ │ └── ui/ # shadcn/ui components
│ ├── contexts/ # React Context providers (AuthContext, TasksContext)
│ ├── data/ # Mock data and TypeScript interfaces
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions
│ ├── pages/ # Page components
│ │ ├── Dashboard.tsx
│ │ ├── CreateTask.tsx
│ │ ├── Tasks.tsx
│ │ ├── AssignedTasks.tsx
│ │ ├── Login.tsx
│ │ └── ...
│ ├── App.tsx # Main application component with routing
│ └── main.tsx # Application entry point
├── public/ # Static assets
├── package.json
├── tailwind.config.ts # Tailwind CSS configuration
├── tsconfig.json # TypeScript configuration
└── vite.config.ts # Vite configuration
- React 18 - UI library
- TypeScript - Type safety
- Vite - Build tool and dev server
- React Router DOM - Client-side routing
- Tailwind CSS - Utility-first CSS framework
- shadcn/ui - UI component library
- Radix UI - Accessible component primitives
- Lucide React - Icon library
- React Query - Data fetching and state management
- Zod - Schema validation
The application uses a simple authentication system with localStorage for session persistence.
Lead:
- Email:
lead@gdg.dev - Password:
lead123
Member:
- Email:
member@gdg.dev - Password:
member123
Note: These are demo credentials. In production, implement proper authentication with a backend service.
- Navigate to "Create Task" from the sidebar
- Fill in the task details:
- Task Title (required)
- Description
- Assign To (vertical selection, required)
- Rating (optional, multiple selection)
- Deadline (required)
- Estimated Time (optional)
- Click "Create Task"
- The task will appear in the Tasks page as unassigned
- All Tasks: View all tasks regardless of assignment status
- Unassigned: View tasks that haven't been assigned to anyone
- Assigned: View tasks assigned to members
- Navigate to "Assigned Tasks"
- Click on a task card
- Fill in submission details and attach documents
- Click "Submit Task" or "Done Task"
npm run lintTypeScript type checking is done automatically by the IDE and during build.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
- Built for Google Developer Groups communities
- UI inspired by Google's Material Design
- Uses shadcn/ui for beautiful, accessible components
For issues, questions, or contributions, please open an issue on the repository.
Made with ❤️ for the GDG community