A modern, responsive todo list management application built with Laravel and Vue.js. This application provides a clean and intuitive interface for managing your tasks across both mobile and desktop devices.
- Modern UI/UX: Beautiful, responsive design that works seamlessly on mobile and desktop
- Task Management: Create, edit, delete, and organize your tasks
- Priority Levels: Set priorities (Low, Medium, High) for better task organization
- Due Dates: Set due dates with date/time picker
- Status Tracking: Mark tasks as completed or pending
- Real-time Search: Search through your tasks instantly
- Smart Filtering: Filter tasks by status (All, Pending, Completed)
- Statistics Dashboard: View task statistics at a glance
- Responsive Design: Optimized for all screen sizes
- Backend: Laravel 12 (PHP 8.2+)
- Frontend: Vue.js 3 with Composition API
- Styling: Tailwind CSS
- Database: SQLite (default) - easily configurable to MySQL/PostgreSQL
- Build Tool: Vite
- API: RESTful API with JSON responses
- PHP 8.2 or higher
- Composer
- Node.js 18 or higher
- npm or yarn
-
Clone the repository
git clone <repository-url> cd todo-manager
-
Install PHP dependencies
composer install
-
Install Node.js dependencies
npm install
-
Environment setup
cp .env.example .env php artisan key:generate
-
Database setup
php artisan migrate
-
Build frontend assets
npm run build
-
Start the Laravel development server
php artisan serve
-
In another terminal, start the Vite development server
npm run dev
-
Access the application Open your browser and visit
http://localhost:8000
-
Build production assets
npm run build
-
Serve with a web server Configure your web server (Apache/Nginx) to serve from the
publicdirectory
The application provides a RESTful API for managing todos:
GET /api/todos- Get all todos (with optional filters)POST /api/todos- Create a new todoGET /api/todos/{id}- Get a specific todoPUT /api/todos/{id}- Update a todoDELETE /api/todos/{id}- Delete a todoPATCH /api/todos/{id}/toggle- Toggle todo completion status
status: Filter by status (pending,completed)priority: Filter by priority (low,medium,high)search: Search in title and description
- Total tasks count
- Completed tasks count
- Pending tasks count
- High priority tasks count
- Create: Add new tasks with title, description, priority, and due date
- Edit: Inline editing of existing tasks
- Delete: Remove tasks with confirmation
- Toggle: Quick completion status toggle
- Search: Real-time search functionality
- Filter: Filter by completion status
- Mobile-first: Optimized for mobile devices
- Desktop-friendly: Enhanced experience on larger screens
- Touch-friendly: Large tap targets for mobile interaction
- Accessible: Proper semantic markup and keyboard navigation
- id (bigint, primary key)
- title (string, required)
- description (text, nullable)
- completed (boolean, default: false)
- priority (enum: low|medium|high, default: medium)
- due_date (timestamp, nullable)
- created_at (timestamp)
- updated_at (timestamp)Run the test suite:
php artisan testEdit the .env file to configure your database:
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqliteFor MySQL/PostgreSQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=todo_manager
DB_USERNAME=your_username
DB_PASSWORD=your_password- Development:
npm run dev - Production:
npm run build - Watch mode:
npm run dev(with hot reload)
- Set
APP_ENV=productionin.env - Set
APP_DEBUG=falsein.env - Run
composer install --optimize-autoloader --no-dev - Run
npm run build - Run
php artisan config:cache - Run
php artisan route:cache - Set up proper web server configuration
Point your web server document root to the public directory and ensure URL rewriting is enabled.
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
This project is open-sourced software licensed under the MIT license.
- Fork the repository
- Create your 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
If you encounter any issues or have questions, please file an issue on the GitHub repository.
Built with ❤️ using Laravel and Vue.js