Index: chapterx-frontend/src/pages/writer/CreateStoryPage.tsx
===================================================================
--- chapterx-frontend/src/pages/writer/CreateStoryPage.tsx	(revision acf690c1403ecbecd948a46d950278f177f2d408)
+++ chapterx-frontend/src/pages/writer/CreateStoryPage.tsx	(revision 99c1e45f4ac45a164229bc6f60f3b05bc26df047)
@@ -21,4 +21,5 @@
     short_description: '',
     content: '',
+    cover_image: '',
     genres: [] as string[],
     mature_content: false,
@@ -45,4 +46,5 @@
       story_id: Date.now(),
       ...form,
+      cover_image: form.cover_image || undefined,
       user_id: currentUser.user_id,
       author_username: currentUser.username,
@@ -124,4 +126,21 @@
               <span className="text-slate-600 text-xs">{form.short_description.length}/280</span>
             </div>
+          </div>
+
+          {/* Cover image */}
+          <div>
+            <label className="block text-sm font-medium text-slate-300 mb-1.5">Cover Image URL <span className="text-slate-500 font-normal">(optional)</span></label>
+            <input
+              value={form.cover_image}
+              onChange={e => {
+                const val = e.target.value
+                if (!val || val.startsWith('http')) setField('cover_image', val)
+              }}
+              placeholder="https://example.com/image.jpg"
+              className="w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500"
+            />
+            {form.cover_image?.startsWith('http') && (
+              <img src={form.cover_image} alt="Cover preview" className="mt-2 h-32 w-full object-cover rounded-xl opacity-80" onError={e => (e.currentTarget.style.display = 'none')} />
+            )}
           </div>
 
