- Chat list: auth-gated, shows all conversations for current user
with other participant's avatar/name, last message preview,
and relative time in Macedonian (пред X мин/ч/д)
- Chat conversation: FlatList with inverted scroll, message bubbles
aligned left (other) and right (self), colored backgrounds,
timestamps, KeyboardAvoidingView send bar
- Chat mutations: getOrCreate finds or creates a 1:1 chat,
send creates message and updates lastMessageAt
- Message queries: listByChat with participant auth check
- Wired ad detail 'Започни разговор' button to create/open chat
- ChatListItem component with avatar, preview, time, link to detail
All UI text in Macedonian. TypeScript clean, Convex functions deployed.
- Add create/update/remove ad mutations with auth & ownership checks
- Ad detail screen: gallery placeholder, title, description, category
badge, location, price range, availability, rating, handyman info
card, start-chat and write-review buttons for non-owners,
edit/delete for ad owner, auth redirect for anonymous
- Create ad screen: 4-step form (category → title/description →
location → price/availability/submit), handyman-only guard,
edit mode via editId param
- Profile screen: user avatar/name/role/email/phone, my-ads
section for handymen with edit/delete, new-ad button, placeholder
my-posts section for customers, proper logout mutation
All UI text in Macedonian. TypeScript clean, Convex functions deployed.