How can I design a table with greater than in where statement and ordering to avoid filesort?
Can't be done.
To achieve the goal, you would need a 2-dimensional index.  Such does not exist.
WHERE
    category_id = 30
    AND created_at &gt; 1592862179

That much is handled nicely with INDEX(category_id, created_at).  But adding anything onto the end of the index definition will not benefit you
The only way to get the index to be also useful for the ORDER BY is to have ORDER BY created_at (either ASC or DESC).  At that point, it can stop after 10 rows (because of LIMIT 10).
More on indexing:  http://mysql.rjweb.org/doc.php/index_cookbook_mysql