Overview
CricTalk is packed with features designed specifically for cricket enthusiasts. From sharing your match analysis to competing on the leaderboard, every feature is crafted to enhance your cricket discussions.Social posts
Share thoughts, images, and engage with the community
Live match rooms
Real-time chat rooms for live cricket matches
Leaderboard
Compete based on your engagement and activity
Notifications
Stay updated with push notifications
Authentication
Secure user authentication with Appwrite
User profiles
Personalized profiles with stats and preferences
Social posts
Share your cricket opinions, analysis, and moments with the community through rich social posts.Post creation
Create posts with text content up to 512 characters, with optional image attachments:schemas/PostSchema.ts
Engagement tracking
Every post automatically tracks multiple engagement metrics:schemas/PostSchema.ts
Views are automatically incremented when a post is 60% visible in the feed, ensuring accurate view tracking.
Like functionality
Users can like posts with a single tap. The system prevents duplicate likes by tracking user IDs:services/posts.service.ts
Comments
Engage in detailed discussions with nested comments on any post. Comments support:- Create, edit, and delete operations
- Author attribution
- Timestamp tracking
- Comment count updates on parent posts
Search functionality
Find posts quickly with full-text search:services/posts.service.ts
Live match chat rooms
Join dedicated chat rooms for live cricket matches and discuss the action in real-time.Room creation
Create rooms for upcoming matches with comprehensive match details:schemas/RoomSchema.ts
Smart status tracking
Rooms automatically update their status based on match timings:- Upcoming - Match hasn’t started yet (blue indicator)
- Live - Match is currently in progress (orange indicator)
- Finished - Match has concluded (gray indicator)
services/rooms.service.ts
Real-time messaging
Send and receive messages instantly within match rooms. Messages are handled through Appwrite serverless functions for optimal performance and security.Room management
Room creators can:- Edit room details (teams, timings, match type)
- Lock/unlock chat to prevent spam
- Delete rooms when needed
Leaderboard system
Compete with other cricket fans based on your engagement and activity.Ranking criteria
The leaderboard ranks users by their message count in chat rooms:interfaces/UserStats.ts
Top performers
The leaderboard highlights the top 10 users:- Top 3 users are displayed on a podium with special styling
- Ranks 4-10 are shown in a scrollable list
app/(tabs)/LeaderboardScreen.tsx
Push notifications
Stay connected with real-time push notifications for important events.Notification types
Receive notifications for:- New likes on your posts
- Comments on your posts
- Replies to your comments
- Match room updates
- Important announcements
Notification management
View all your notifications in a dedicated screen with:- Timestamp for each notification
- Read/unread status
- Quick actions to view related content
services/notifications.service.ts
Push token registration
CricTalk automatically registers your device for push notifications using Expo Notifications, ensuring you never miss important updates.User authentication
Secure authentication powered by Appwrite ensures your account is protected.Email and password authentication
Create an account or log in with email and password:services/auth.service.ts
Session management
Appwrite automatically handles session management, keeping you logged in securely:libs/appwrite.ts
Protected routes
The app automatically redirects unauthenticated users to the login screen, ensuring all features are protected.User profiles
Personalize your CricTalk experience with customizable user profiles.Profile information
Your profile displays:- Username (shown as avatar initial throughout the app)
- Message count and leaderboard rank
- Posts you’ve created
- Rooms you’ve joined
Settings and preferences
Customize your experience through:- Account settings - Update profile information
- Login & Security - Manage authentication settings
- Preferences - Customize app behavior
Your activity
View all your posts and engagement in one place by filtering posts by your user ID:services/posts.service.ts
State management with Zustand
CricTalk uses Zustand for lightweight, efficient state management across the app:- usePosts - Manages post state (add, update, delete, setPosts)
- useRooms - Manages room state and chat messages
- useComments - Manages comment state
- useUser - Manages user profile and authentication state
All state stores are persisted using AsyncStorage, providing a seamless experience even when offline.