- Introduction
- Features
- Technology Stack
- Project Structure
- Setup and Installation
- Running the Application
- API Endpoints
- Frontend Components
- State Management
- Styling
- Future Enhancements
- Contributing
- License
The Family Task Manager is a web application designed to help families organize and manage their tasks collaboratively. It provides a user-friendly interface for creating, assigning, and tracking tasks within a family unit. This application aims to improve communication and coordination among family members by centralizing task management.
- User Authentication: Family members can register and log in to their accounts.
- Task Management: Create, read, update, and delete tasks.
- Task Assignment: Assign tasks to specific family members.
- Task Categories: Organize tasks into categories (e.g., chores, homework, errands).
- Due Dates and Priorities: Set due dates and priority levels for tasks.
- Task Status Tracking: Mark tasks as pending, in progress, or completed.
- Family Groups: Create and manage family groups.
- Dashboard: View an overview of tasks and family activities.
- Responsive Design: Works on desktop and mobile devices.
- Backend:
- Laravel 10 (PHP framework)
- MySQL database
- RESTful API
- Frontend:
- React 18 with TypeScript
- React Query for state management and data fetching
- Axios for API calls
- Authentication:
- Laravel Sanctum for API token authentication
- Styling:
- Tailwind CSS
- Headless UI for accessible components
- Icons:
- Heroicons
family-task-manager/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── TaskController.php
│ │ │ ├── UserController.php
│ │ │ └── CategoryController.php
│ │ └── Middleware/
│ │ └── Cors.php
│ ├── Models/
│ │ ├── Task.php
│ │ ├── User.php
│ │ └── Category.php
│ └── ...
├── database/
│ ├── migrations/
│ └── seeders/
├── routes/
│ └── api.php
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── TaskList.tsx
│ │ │ ├── TaskItem.tsx
│ │ │ ├── TaskForm.tsx
│ │ │ └── TaskDetails.tsx
│ │ ├── types.ts
│ │ ├── App.tsx
│ │ └── index.tsx
│ ├── public/
│ └── package.json
├── .env
├── composer.json
└── README.md
-
Clone the repository:
git clone https://github.com/yourusername/family-task-manager.git cd family-task-manager
-
Install PHP dependencies:
composer install
-
Copy the
.env.example
file to.env
and configure your database settings:cp .env.example .env
-
Generate an application key:
php artisan key:generate
-
Run database migrations and seeders:
php artisan migrate --seed
-
Install frontend dependencies:
cd frontend npm install
-
Start the Laravel development server:
php artisan serve
-
In a separate terminal, start the React development server:
cd frontend npm start
-
Access the application at
http://localhost:3000
GET /api/tasks
: Fetch all tasksPOST /api/tasks
: Create a new taskGET /api/tasks/{id}
: Fetch a specific taskPUT /api/tasks/{id}
: Update a taskDELETE /api/tasks/{id}
: Delete a taskGET /api/categories
: Fetch all categoriesGET /api/users
: Fetch all users
TaskList
: Displays the list of tasks and manages the overall task state.TaskItem
: Renders individual task items with a modern, card-like design.TaskForm
: A modal component for creating and editing tasks.TaskDetails
: A modal component for displaying detailed task information.
The application uses React Query for state management and data fetching. This provides several benefits:
- Automatic caching and refetching of data
- Easy management of loading and error states
- Optimistic updates for a smoother user experience
The project uses Tailwind CSS for styling, providing a responsive and modern design. Key styling features include:
- Responsive grid layout
- Custom color schemes for priority and status indicators
- Hover effects for interactive elements
- Consistent spacing and typography
- Implement real-time updates using WebSockets
- Add a calendar view for better visualization of due dates
- Implement task recurrence for repeating tasks
- Add email notifications for upcoming or overdue tasks
- Implement a mobile app using React Native
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open-sourced software licensed under the MIT license.