feat: ship creator journey v2 and profile updates

This commit is contained in:
2026-04-12 21:42:07 +02:00
parent a2457f4e49
commit d5cff21ea2
335 changed files with 20147 additions and 1545 deletions

15
config/artwork_medals.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
return [
'enabled' => env('ARTWORK_MEDALS_ENABLED', true),
'weights' => [
'gold' => 5,
'silver' => 3,
'bronze' => 1,
],
'require_verified_email' => env('ARTWORK_MEDALS_REQUIRE_VERIFIED_EMAIL', true),
'minimum_account_age_hours' => (int) env('ARTWORK_MEDALS_MINIMUM_ACCOUNT_AGE_HOURS', 24),
'rate_limit_per_minute' => (int) env('ARTWORK_MEDALS_RATE_LIMIT_PER_MINUTE', 10),
];

View File

@@ -78,6 +78,15 @@ return [
'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'),
],
'homepage' => [
'driver' => 'failover',
'stores' => [
'redis',
'database',
'array',
],
],
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),

65
config/content_types.php Normal file
View File

@@ -0,0 +1,65 @@
<?php
return [
'cache' => [
'public_list_key' => 'content-types.public-list',
'slug_map_key' => 'content-types.slug-map',
'history_map_key' => 'content-types.slug-history-map',
],
'virtual_types' => [
'artworks' => [
'name' => 'All Artworks',
],
],
'reserved_slugs' => [
'news',
'help',
'groups',
'creators',
'cards',
'search',
'upload',
'studio',
'dashboard',
'settings',
'login',
'register',
'password',
'rss',
'sitemap',
'robots',
'pages',
'tag',
'tags',
'categories',
'stories',
'blog',
'art',
'feed',
'messages',
'leaderboard',
'following',
'about',
'contact',
'faq',
'staff',
'members',
'discover',
'featured',
'downloads',
'comments',
'collections',
'community',
'creator',
'manage',
'home',
'cp',
'admin',
'forum',
'legal',
'bug-report',
'rss-feeds',
],
];

View File

@@ -11,7 +11,7 @@ return [
|--------------------------------------------------------------------------
*/
'paths' => env('CP_ENABLE_CORS', true)
'paths' => env('CP_ENABLE_CORS', false)
? [
'api/*',
'sanctum/csrf-cookie',

7
config/homepage.php Normal file
View File

@@ -0,0 +1,7 @@
<?php
return [
'cache_store' => env('HOMEPAGE_CACHE_STORE', 'homepage'),
'guest_payload_key' => env('HOMEPAGE_GUEST_PAYLOAD_KEY', 'homepage.payload.guest'),
'guest_payload_ttl_seconds' => (int) env('HOMEPAGE_GUEST_PAYLOAD_TTL_SECONDS', 1800),
];

38
config/maturity.php Normal file
View File

@@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
return [
'viewer' => [
'default_mode' => env('MATURITY_DEFAULT_MODE', 'blur'),
'default_warn_on_detail' => env('MATURITY_DEFAULT_WARN_ON_DETAIL', true),
],
'ai' => [
'threshold' => (float) env('MATURITY_AI_THRESHOLD', 0.68),
'queue' => env('MATURITY_AI_QUEUE', env('VISION_QUEUE', 'default')),
'strong_keywords' => [
'adult',
'bare breasts',
'breasts',
'explicit',
'genitals',
'lingerie',
'nude',
'nudity',
'nsfw',
'porn',
'sex',
'sexual',
'topless',
],
'medium_keywords' => [
'bikini',
'erotic',
'fetish',
'intimate',
'sensual',
'underwear',
],
],
];

View File

@@ -101,11 +101,13 @@ return [
'author_id',
'is_public',
'is_approved',
'has_missing_thumbnails',
'created_at',
],
'sortableAttributes' => [
'created_at',
'published_at_ts',
'missing_thumbnail_rank',
'downloads',
'likes',
'views',
@@ -113,6 +115,8 @@ return [
'trending_score_7d',
'favorites_count',
'awards_received_count',
'awards_score_7d',
'awards_score_30d',
'downloads_count',
'ranking_score',
'shares_count',

View File

@@ -14,7 +14,7 @@ return [
*/
'max_length' => 32,
'max_user_tags' => 15,
'max_user_tags' => (int) env('TAGS_MAX_USER_TAGS', 30),
// Exact-match banned tags after normalization.
'banned' => [

View File

@@ -47,6 +47,17 @@ return [
'connect_timeout_seconds'=> (int) env('VISION_GATEWAY_CONNECT_TIMEOUT', 3),
],
'maturity' => [
'base_url' => env('VISION_MATURITY_URL', env('VISION_GATEWAY_URL', env('CLIP_BASE_URL', ''))),
'endpoint' => env('VISION_MATURITY_ENDPOINT', '/analyze/maturity'),
'file_endpoint' => env('VISION_MATURITY_FILE_ENDPOINT', '/analyze/maturity/file'),
'api_key' => env('VISION_MATURITY_API_KEY', env('VISION_GATEWAY_API_KEY', env('VISION_API_KEY', env('VISION_VECTOR_GATEWAY_API_KEY', '')))),
'timeout_seconds' => (int) env('VISION_MATURITY_TIMEOUT', 20),
'connect_timeout_seconds' => (int) env('VISION_MATURITY_CONNECT_TIMEOUT', 3),
'retries' => (int) env('VISION_MATURITY_RETRIES', 1),
'retry_delay_ms' => (int) env('VISION_MATURITY_RETRY_DELAY_MS', 200),
],
'vector_gateway' => [
'enabled' => env('VISION_VECTOR_GATEWAY_ENABLED', true),
'base_url' => env('VISION_VECTOR_GATEWAY_URL', ''),