- Error boundary with Macedonian fallback screen and retry button
wrapping all navigation
- Pull-to-refresh on all list/detail screens (home, explore, posts,
chat, profile, ad detail, post detail)
- Accessibility: labels on all interactive elements, roles on
Pressable/Button, selectable text for user data
- Deep linking: mojmajstor:// scheme configured in app.json,
ad/[id] and chat/[id] routes work via Expo Router auto-routing
- Pagination: cursor-based paginated queries for ads, posts,
messages, chats, reviews with Load More buttons on frontend
- Profile: shows customer posts with PostCard, loading/error states,
create-post navigation
- Auth error messages in Macedonian (Невалидни акредитиви, итн.)
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.