Features and Screens - PlugImt/transat-app GitHub Wiki
The Home screen is the central hub of the Transat 2.0 app, featuring a customizable widget system that provides quick access to essential campus services.
- Customizable Widgets: Drag-and-drop widget reordering
- Real-time Data: Live updates for weather, restaurant, and washing machines
- Pull-to-Refresh: Manual data refresh capability
- Dark/Light Theme Support: Automatic theme switching
The home screen uses a draggable widget system powered by react-native-draggable-flatlist
:
-
Weather Widget
- Current weather conditions
- Temperature and weather icon
- Location-based data
- Loading skeleton during data fetch
-
Restaurant Widget
- Daily menu display
- Lunch and dinner options
- Real-time menu updates
- Weekend status handling
-
Washing Machine Widget
- Machine availability status
- Real-time occupancy tracking
- Push notification integration
- Machine booking interface
Users can customize their home screen through the widget customization modal:
- Enable/disable specific widgets
- Reorder widgets via drag-and-drop
- Personalized dashboard experience
Comprehensive authentication flow supporting multiple sign-in methods and user management.
- Email/Password Authentication
- Social Sign-In Options (if configured)
- Forgot Password Recovery
- Account Verification
- User Account Creation
- Email Verification
- Profile Setup
- Campus Affiliation
- Secure Token Storage
- Biometric Authentication (Face ID/Touch ID)
- Session Management
- Password Strength Validation
-
src/app/screens/auth/
: Authentication-related screens - Login/Register forms with validation
- Password recovery workflow
- Account verification process
Comprehensive dining information and menu management for campus restaurants.
- Daily Menu: Current day's lunch and dinner options
- Meal Categories: Starters, mains, desserts, sides
- Nutritional Information: Dietary restrictions and allergens
- Price Information: Meal pricing and payment options
- Real-time Updates: Live menu changes
- Weekend Handling: Special weekend menu display
- Meal Time Detection: Automatic lunch/dinner switching
- Favorites System: Save preferred meals
// Restaurant.tsx features:
- Menu browsing interface
- Meal categorization
- Nutritional information display
- Real-time availability updates
Advanced washing machine booking and monitoring system with real-time updates.
- Real-time Status: Available, occupied, out of order
- Booking System: Reserve machines in advance
- Queue Management: Fair usage scheduling
- Usage Statistics: Track washing patterns
- Start Notifications: When cycle begins
- Completion Alerts: When washing is done
- Availability Alerts: When preferred machine becomes available
- Maintenance Notifications: Service updates
- Push Notification Integration: Expo notifications
- Background Updates: Real-time status tracking
- Machine Preferences: Favorite machine selection
- Usage History: Track personal washing history
// WashingMachine.tsx features:
- Live machine status grid
- Booking interface
- Notification preferences
- Usage analytics
Interactive games and entertainment features for campus community engagement.
- Trivia Contests: Campus and general knowledge
- Social Games: Community interaction features
- Leaderboards: Competitive scoring system
- Daily Challenges: Regular engagement content
- Player Profiles: User statistics and achievements
- Community Interaction: Social gaming elements
- Achievement System: Unlock rewards and badges
- Event Participation: Special gaming events
Comprehensive user profile and account settings management.
- Personal Information: Name, email, student ID
- Profile Picture: Image upload and management
- Campus Affiliation: School and department info
- Privacy Settings: Data visibility controls
- Theme Selection: Light/dark mode preferences
- Language Settings: Multi-language support
- Notification Preferences: Granular notification controls
- Data Management: Export and delete account data
src/app/screens/account/
โโโ settings/ # Settings subdirectory
โ โโโ Profile.tsx # Profile management
โ โโโ Notifications.tsx # Notification preferences
โ โโโ Privacy.tsx # Privacy settings
โ โโโ About.tsx # App information
โโโ AccountMain.tsx # Main account screen
Additional campus services accessible through the app.
- Club Directory: Campus organization listings
- Event Calendar: Club events and activities
- Membership Management: Join and manage club memberships
- Communication Tools: Club messaging and updates
- Academic Calendar: Important academic dates
- Campus Maps: Interactive location guides
- Resource Booking: Room and facility reservations
- Support Services: Help desk and IT support
App Root
โโโ Authentication Stack
โ โโโ Login
โ โโโ Register
โ โโโ Forgot Password
โ โโโ Verification
โโโ Main Tab Navigator
โ โโโ Home (Widget Dashboard)
โ โโโ Services
โ โ โโโ Restaurant
โ โ โโโ Washing Machines
โ โ โโโ Clubs
โ โ โโโ Games
โ โโโ Games Hub
โ โโโ Account
โ โโโ Profile
โ โโโ Settings
โ โโโ Preferences
โโโ Modal Screens
โโโ Widget Customization
โโโ Machine Booking
โโโ Game Sessions
Each screen follows a consistent pattern:
- Page Wrapper: Consistent layout and safe area handling
- Header: Navigation and action buttons
- Content Area: Main screen content
- Loading States: Skeleton loaders and spinners
- Error Handling: Error boundaries and retry mechanisms
export const ExampleScreen = () => {
const { data, isLoading, error, refetch } = useQuery({
queryKey: ['example'],
queryFn: fetchData
});
if (isLoading) return <LoadingSkeleton />;
if (error) return <ErrorState onRetry={refetch} />;
return (
<Page>
{/* Screen content */}
</Page>
);
};
export const FormScreen = () => {
const { control, handleSubmit, formState } = useForm({
resolver: zodResolver(schema)
});
return (
<Page>
<Form>
{/* Form fields */}
</Form>
</Page>
);
};
- WebSocket Connections: Real-time data streaming
- Background Refresh: Automatic data synchronization
- Optimistic Updates: Immediate UI feedback
- Conflict Resolution: Handle concurrent updates
- Service Alerts: Restaurant menu changes, machine availability
- Personal Reminders: Booking confirmations, task reminders
- Campus Updates: Important announcements and events
- Social Notifications: Game invitations, club updates
- Screen Navigation: User journey tracking
- Feature Usage: Popular features and interactions
- Performance Metrics: App performance monitoring
- Error Tracking: Crash reporting and error logs
- Opt-in Analytics: User consent for data collection
- Data Minimization: Collect only necessary data
- Local Processing: Process data locally when possible
- Transparent Reporting: Clear data usage policies
Next Steps: Explore the app's internationalization system in Internationalization documentation.