fix(gallery): fill tall portrait cards to full block width with object-cover crop
- ArtworkCard: add w-full to nova-card-media, use absolute inset-0 on img so object-cover fills the max-height capped box instead of collapsing the width - MasonryGallery.css: add width:100% to media container, position img absolutely so top/bottom is cropped rather than leaving dark gaps - Add React MasonryGallery + ArtworkCard components and entry point - Add recommendation system: UserRecoProfile model/DTO/migration, SuggestedCreatorsController, SuggestedTagsController, Recommendation services, config/recommendations.php - SimilarArtworksController, DiscoverController, HomepageService updates - Update routes (api + web) and discover/for-you views - Refresh favicon assets, update vite.config.js
This commit is contained in:
@@ -292,6 +292,20 @@ Route::middleware(['web', 'auth', 'normalize.username', 'throttle:60,1'])->group
|
||||
->name('api.comments.reactions.toggle');
|
||||
});
|
||||
|
||||
// ── Personalised suggestions (auth required) ────────────────────────────────
|
||||
// GET /api/user/suggestions/creators → up to 12 suggested creators to follow
|
||||
// GET /api/user/suggestions/tags → up to 20 suggested tags (foundation)
|
||||
Route::middleware(['web', 'auth', 'normalize.username', 'throttle:30,1'])
|
||||
->prefix('user/suggestions')
|
||||
->name('api.user.suggestions.')
|
||||
->group(function () {
|
||||
Route::get('creators', \App\Http\Controllers\Api\SuggestedCreatorsController::class)
|
||||
->name('creators');
|
||||
|
||||
Route::get('tags', \App\Http\Controllers\Api\SuggestedTagsController::class)
|
||||
->name('tags');
|
||||
});
|
||||
|
||||
// ── Follow system ─────────────────────────────────────────────────────────────
|
||||
// POST /api/user/{username}/follow → follow a user
|
||||
// DELETE /api/user/{username}/follow → unfollow a user
|
||||
|
||||
@@ -45,6 +45,9 @@ Route::prefix('discover')->name('discover.')->group(function () {
|
||||
|
||||
// Artworks from people you follow (auth required)
|
||||
Route::middleware('auth')->get('/following', [DiscoverController::class, 'following'])->name('following');
|
||||
|
||||
// Personalised "For You" feed (auth required; guests → redirect)
|
||||
Route::middleware('auth')->get('/for-you', [DiscoverController::class, 'forYou'])->name('for-you');
|
||||
});
|
||||
|
||||
// ── CREATORS routes (/creators/*) ─────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user