id(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->string('type', 32)->default('text'); // text | artwork_share | upload | achievement $table->string('visibility', 16)->default('public'); // public | followers | private $table->longText('body')->nullable(); $table->json('meta')->nullable(); $table->unsignedInteger('reactions_count')->default(0); $table->unsignedInteger('comments_count')->default(0); $table->timestamps(); $table->softDeletes(); $table->index(['user_id', 'created_at']); $table->index(['type', 'created_at']); $table->index(['visibility', 'created_at']); }); } public function down(): void { Schema::dropIfExists('posts'); } };