Storage of data in terms of case for searching, matching, display, etc

What best practice do you follow in terms of storing values?
In lower case and changing it as needed for UI use?
Or perhaps storing searchable/matchable data in lower case (like aliases in my case)?
Or having an extra column that holds the lowercase value? (Like titles of stories)?
Or setting up special indexes?
For translation of values, case shouldn’t matter, but just mentioning it.

I tend to store data the way that it will be presented to the user when possible. This can simplify things like messages and presentation.

Case does not seem to matter much when it comes to search. We typically use ilike operations for searches so that case on either side does not matter. Postgres full text search is case insensitive by default.