This documentation covers the application's structure, form requests, routes, controllers, and API endpoints.
- File:
App\Http\Requests\LoginRequest - Purpose: Validates user login data
- Rules:
email: Required, valid email format, max 255 characterspassword: Required, string, minimum 8 charactersremember: Optional, boolean
- Custom Messages: Provides user-friendly error messages for validation failures
- File:
App\Http\Requests\RegisterRequest - Purpose: Validates user registration data
- Rules:
name: Required, string, max 255 charactersemail: Required, valid email format, max 255 characters, unique in users tablepassword: Required, string, minimum 8 characters, must be confirmed
- Custom Messages: Provides user-friendly error messages for validation failures
- File:
App\Http\Requests\ProjectRequest - Purpose: Validates project creation and update data
- Authorization: Checks user permissions for create, update, and delete actions
- Rules:
title: Required, string, max 255 charactersdescription: Optional, stringstatus: Optional, string, must be a valid ProjectStatus enum valueiconColor: Optional, string, max 7 characters
- Custom Messages: Provides user-friendly error messages for validation failures
- File:
App\Http\Requests\TodoListRequest - Purpose: Validates todo list creation and update data
- Authorization: Checks user permissions for create, update, and delete actions
- Rules:
title: Required, string, max 255 charactersdescription: Optional, stringproject_id: Required, must exist in projects tabletodo_id: Optional, must exist in todos tabletags: Optional, must be valid JSON
- Custom Messages: Provides user-friendly error messages for validation failures
- File:
App\Http\Requests\TodoRequest - Purpose: Validates todo item creation and update data
- Authorization: Checks user permissions for create, update, and delete actions
- Rules:
title: Required, string, max 255 charactersdescription: Optional, stringcompleted: Optional, booleandue_date: Optional, valid datepriority: Optional, integer between 0 and 10todoList_id: Optional, must exist in todo_lists table
- Custom Messages: Provides user-friendly error messages for validation failures
The application defines the following routes:
Route::prefix('auth')->group(function () {
Route::post('/login', [\App\Http\Controllers\AuthController::class, 'login']);
Route::post('/register', [\App\Http\Controllers\AuthController::class, 'register']);
Route::post('/logout', [\App\Http\Controllers\AuthController::class, 'logout']);
})->middleware(['web']);All API routes are protected by the auth:sanctum middleware.
Route::middleware('auth:sanctum')->group(function () {
Route::apiResource('todos', TodoController::class);
Route::apiResource('projects', ProjectController::class);
Route::apiResource('todolists', TodolistController::class);
});Handles user authentication operations.
- Methods:
login(LoginRequest $request): Authenticates a userregister(RegisterRequest $request): Registers a new userlogout(Request $request): Logs out the authenticated user
Manages CRUD operations for projects.
- Methods:
index(): Lists all projects for the authenticated userstore(ProjectRequest $request): Creates a new projectshow(string $id): Displays a specific projectupdate(ProjectRequest $request, string $id): Updates a specific projectdestroy(ProjectRequest $request, string $id): Deletes a specific project
Manages CRUD operations for todo lists.
- Methods:
index(): Lists all todo lists for the authenticated userstore(TodoListRequest $request): Creates a new todo listshow(string $id): Displays a specific todo listupdate(TodoListRequest $request, string $id): Updates a specific todo listdestroy(TodoListRequest $request, string $id): Deletes a specific todo list
Manages CRUD operations for todo items.
- Methods:
index(): Lists all todos for the authenticated userstore(TodoRequest $request): Creates a new todo itemshow(string $id): Displays a specific todo item (not implemented)update(TodoRequest $request, string $id): Updates a specific todo itemdestroy(TodoRequest $request, string $id): Deletes a specific todo item
POST /auth/login: Log in a userPOST /auth/register: Register a new userPOST /auth/logout: Log out the authenticated user
GET /projects: List all projectsPOST /projects: Create a new projectGET /projects/{id}: Get a specific projectPUT/PATCH /projects/{id}: Update a specific projectDELETE /projects/{id}: Delete a specific project
GET /todolists: List all todo listsPOST /todolists: Create a new todo listGET /todolists/{id}: Get a specific todo listPUT/PATCH /todolists/{id}: Update a specific todo listDELETE /todolists/{id}: Delete a specific todo list
GET /todos: List all todosPOST /todos: Create a new todoGET /todos/{id}: Get a specific todo (not implemented)PUT/PATCH /todos/{id}: Update a specific todoDELETE /todos/{id}: Delete a specific todo
GET /email/verify/{id}/{hash}: Verify a user's email addressPOST /email/verify/send: Send a new email verification notification
PUT/PATCH /users/{user}: Update user information (only authenticated users can update their own information)
Note: All API endpoints (except authentication and email verification not including the 'send' endpoints) require authentication using Laravel Sanctum.
Note: Don't forget to set up your database connection in the .env file and run the necessary migrations and seeders.
Note : Don't forget to set up your own email configuration in the .env file for email verification.
Note : Current configuration uses MailGun free version which limit the sending of emails to only whitelisted emails. If you use MailGun or other services alike, don't forget to whitelist your email address during development.