2025-10-02 22:52:13 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use App\Http\Controllers\ProfileController;
|
|
|
|
|
use App\Http\Controllers\HomeController;
|
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
|
|
|
|
|
|
Route::get('/', [HomeController::class, 'index'])->name('home');
|
|
|
|
|
|
2025-10-04 17:55:30 +03:00
|
|
|
Route::get('/dashboard', [\App\Http\Controllers\DashboardController::class, 'index'])
|
|
|
|
|
->middleware(['auth', 'verified'])->name('dashboard');
|
2025-10-02 22:52:13 +03:00
|
|
|
|
2025-10-06 22:35:04 +03:00
|
|
|
// Admin routes
|
|
|
|
|
Route::prefix('admin')->middleware(['auth','admin'])->group(function(){
|
|
|
|
|
Route::get('/', [\App\Http\Controllers\AdminDashboardController::class, 'index'])->name('admin.dashboard');
|
|
|
|
|
// Admin Exercises CRUD
|
|
|
|
|
Route::resource('exercises', \App\Http\Controllers\Admin\ExerciseController::class)->except(['show'])->names('admin.exercises');
|
2026-08-10 11:36:31 +03:00
|
|
|
// Admin Posts CRUD
|
|
|
|
|
Route::resource('posts', \App\Http\Controllers\Admin\PostController::class)->except(['show'])->names('admin.posts');
|
2025-10-06 22:35:04 +03:00
|
|
|
});
|
|
|
|
|
|
2025-10-02 22:52:13 +03:00
|
|
|
Route::middleware('auth')->group(function () {
|
|
|
|
|
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
|
|
|
|
|
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
|
|
|
|
|
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
|
2025-10-02 23:52:07 +03:00
|
|
|
|
|
|
|
|
// Favorites
|
|
|
|
|
Route::post('/exercises/{exercise}/favorite', [\App\Http\Controllers\FavoriteController::class, 'toggleExercise'])->name('exercises.favorite');
|
|
|
|
|
Route::post('/workouts/{workout}/favorite', [\App\Http\Controllers\FavoriteController::class, 'toggleWorkout'])->name('workouts.favorite');
|
2026-08-10 12:04:50 +03:00
|
|
|
Route::post('/yoga/{pose}/favorite', [\App\Http\Controllers\FavoriteController::class, 'toggleYogaPose'])->name('yoga.favorite');
|
2025-10-04 19:40:13 +03:00
|
|
|
|
|
|
|
|
// Exercise alias (per-user rename)
|
|
|
|
|
Route::post('/exercises/{exercise}/alias', [\App\Http\Controllers\ExerciseAliasController::class, 'store'])->name('exercises.alias');
|
2026-08-10 12:10:08 +03:00
|
|
|
|
|
|
|
|
// Body weight log
|
|
|
|
|
Route::post('/weight-logs', [\App\Http\Controllers\WeightLogController::class, 'store'])->name('weight-logs.store');
|
|
|
|
|
Route::delete('/weight-logs/{weightLog}', [\App\Http\Controllers\WeightLogController::class, 'destroy'])->name('weight-logs.destroy');
|
2025-10-02 22:52:13 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Route::prefix('/exercises')->group(function () {
|
|
|
|
|
Route::get('/', [\App\Http\Controllers\ExerciseController::class, 'index'])->name('exercises.index');
|
|
|
|
|
Route::get('/{exercise:slug}', [\App\Http\Controllers\ExerciseController::class, 'show'])->name('exercises.show');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Route::middleware('auth')->prefix('/workouts')->group(function () {
|
|
|
|
|
Route::get('/', [\App\Http\Controllers\WorkoutController::class, 'index'])->name('workouts.index');
|
|
|
|
|
Route::get('/builder', [\App\Http\Controllers\WorkoutController::class, 'builder'])->name('workouts.builder');
|
2026-08-10 12:39:16 +03:00
|
|
|
Route::get('/community', [\App\Http\Controllers\WorkoutController::class, 'community'])->name('workouts.community');
|
2025-10-02 22:52:13 +03:00
|
|
|
|
|
|
|
|
Route::get('/create', [\App\Http\Controllers\WorkoutController::class, 'create'])->name('workouts.create');
|
|
|
|
|
Route::post('/', [\App\Http\Controllers\WorkoutController::class, 'store'])->name('workouts.store');
|
|
|
|
|
Route::get('/{workout}', [\App\Http\Controllers\WorkoutController::class, 'show'])->name('workouts.show');
|
|
|
|
|
Route::delete('/{workout}', [\App\Http\Controllers\WorkoutController::class, 'destroy'])->name('workouts.destroy');
|
2026-08-10 12:39:16 +03:00
|
|
|
Route::post('/{workout}/toggle-public', [\App\Http\Controllers\WorkoutController::class, 'togglePublic'])->name('workouts.toggle-public');
|
|
|
|
|
Route::post('/{workout}/copy', [\App\Http\Controllers\WorkoutController::class, 'copy'])->name('workouts.copy');
|
2025-10-02 22:52:13 +03:00
|
|
|
|
|
|
|
|
// Manage exercises within a workout
|
2026-08-10 12:02:08 +03:00
|
|
|
Route::get('/{workout}/exercises/search', [\App\Http\Controllers\WorkoutController::class, 'searchExercises'])->name('workouts.exercises.search');
|
2025-10-02 22:52:13 +03:00
|
|
|
Route::post('/{workout}/exercises', [\App\Http\Controllers\WorkoutController::class, 'addExercise'])->name('workouts.exercises.add');
|
|
|
|
|
Route::patch('/{workout}/exercises/{item}', [\App\Http\Controllers\WorkoutController::class, 'updateExercise'])->name('workouts.exercises.update');
|
|
|
|
|
Route::delete('/{workout}/exercises/{item}', [\App\Http\Controllers\WorkoutController::class, 'removeExercise'])->name('workouts.exercises.remove');
|
2025-10-04 17:55:30 +03:00
|
|
|
|
|
|
|
|
// Sessions
|
|
|
|
|
Route::post('/{workout}/sessions', [\App\Http\Controllers\WorkoutSessionController::class, 'store'])->name('sessions.store');
|
|
|
|
|
});
|
|
|
|
|
|
2026-08-10 12:28:23 +03:00
|
|
|
// Trainer: manage clients and assign workouts to them
|
|
|
|
|
Route::middleware(['auth', 'trainer'])->prefix('/trainer')->group(function () {
|
|
|
|
|
Route::get('/clients', [\App\Http\Controllers\TrainerController::class, 'clients'])->name('trainer.clients');
|
|
|
|
|
Route::post('/clients', [\App\Http\Controllers\TrainerController::class, 'addClient'])->name('trainer.clients.add');
|
|
|
|
|
Route::delete('/clients/{client}', [\App\Http\Controllers\TrainerController::class, 'removeClient'])->name('trainer.clients.remove');
|
|
|
|
|
Route::get('/clients/{client}/workouts/create', [\App\Http\Controllers\TrainerController::class, 'createWorkout'])->name('trainer.workouts.create');
|
|
|
|
|
Route::post('/clients/{client}/workouts', [\App\Http\Controllers\TrainerController::class, 'storeWorkout'])->name('trainer.workouts.store');
|
|
|
|
|
});
|
|
|
|
|
|
2026-08-10 12:21:47 +03:00
|
|
|
Route::middleware('auth')->prefix('/programs')->group(function () {
|
|
|
|
|
Route::get('/', [\App\Http\Controllers\ProgramController::class, 'index'])->name('programs.index');
|
|
|
|
|
Route::get('/create', [\App\Http\Controllers\ProgramController::class, 'create'])->name('programs.create');
|
|
|
|
|
Route::post('/', [\App\Http\Controllers\ProgramController::class, 'store'])->name('programs.store');
|
|
|
|
|
Route::get('/{program}', [\App\Http\Controllers\ProgramController::class, 'show'])->name('programs.show');
|
|
|
|
|
Route::delete('/{program}', [\App\Http\Controllers\ProgramController::class, 'destroy'])->name('programs.destroy');
|
|
|
|
|
Route::post('/{program}/workouts', [\App\Http\Controllers\ProgramController::class, 'addWorkout'])->name('programs.workouts.add');
|
|
|
|
|
});
|
|
|
|
|
|
2025-10-04 17:55:30 +03:00
|
|
|
Route::middleware('auth')->group(function () {
|
|
|
|
|
Route::get('/sessions/{session}', [\App\Http\Controllers\WorkoutSessionController::class, 'show'])->name('sessions.show');
|
|
|
|
|
Route::patch('/sessions/{session}/items/{item}', [\App\Http\Controllers\WorkoutSessionController::class, 'toggleItem'])->name('sessions.items.toggle');
|
|
|
|
|
Route::post('/sessions/{session}/complete', [\App\Http\Controllers\WorkoutSessionController::class, 'complete'])->name('sessions.complete');
|
2025-10-02 22:52:13 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Route::prefix('/blog')->group(function () {
|
|
|
|
|
Route::get('/', [\App\Http\Controllers\BlogController::class, 'index'])->name('blog.index');
|
2026-08-10 11:36:31 +03:00
|
|
|
Route::get('/{post:slug}', [\App\Http\Controllers\BlogController::class, 'show'])->name('blog.show');
|
2025-10-02 22:52:13 +03:00
|
|
|
});
|
|
|
|
|
|
2025-10-04 17:55:30 +03:00
|
|
|
// Yoga poses
|
|
|
|
|
Route::prefix('/yoga')->group(function () {
|
|
|
|
|
Route::get('/', [\App\Http\Controllers\YogaPoseController::class, 'index'])->name('yoga.index');
|
|
|
|
|
Route::get('/{pose:slug}', [\App\Http\Controllers\YogaPoseController::class, 'show'])->name('yoga.show');
|
|
|
|
|
});
|
|
|
|
|
|
2026-08-10 11:55:11 +03:00
|
|
|
// Legal
|
|
|
|
|
Route::get('/privacy', [\App\Http\Controllers\LegalController::class, 'privacy'])->name('legal.privacy');
|
|
|
|
|
Route::get('/terms', [\App\Http\Controllers\LegalController::class, 'terms'])->name('legal.terms');
|
|
|
|
|
|
2025-10-02 22:52:13 +03:00
|
|
|
require __DIR__.'/auth.php';
|