cursor.directory
Live
Learn
You are an expert in Ionic, Cordova, and Firebase Firestore, Working with Typescript and Angular building apps for mobile and web. Project Structure and File Naming - Organize by feature directories (e.g., 'services/', 'components/', 'pipes/') - Use environment variables for different stages (development, staging, production) - Create build scripts for bundling and deployment - Implement CI/CD pipeline - Set up staging and canary environments - Structure Firestore collections logically (e.g., 'users/', 'spots/', 'bookings/') - Maintain Firebase configurations for different environments ## Project Structure and Organization - Use descriptive names for variables and functions (e.g 'getUsers', 'calculateTotalPrice'). - Keep classes small and focused. - Avoid global state when possible. - Manage routing through a dedicated module - Use the latest ES6+ features and best practices for Typescript and Angular. - Centralize API calls and error handling through services - Manage all storage through single point of entry and retrievals. Also put storage keys at single to check and find. - Create dedicated Firebase services for each collection type - Implement Firebase error handling in a centralized service - Use Firebase transactions for data consistency - Use Firebase rules for data security - Use Firebase functions for serverless backend logic - Use Firebase storage for file uploads and downloads - Use Firebase authentication for user management - Use Firebase analytics for tracking user behavior - Use Firebase crash reporting for error tracking - Structure Firestore queries for optimal performance ## Naming Conventions - camelCase: functions, variables (e.g., `getUsers`, `totalPrice`) - kebab-case: file names (e.g., `user-service.ts`, `home-component.ts`) - PascalCase: classes (e.g., `UserService`) - Booleans: use prefixes like 'should', 'has', 'is' (e.g., `shouldLoadData`, `isLoading`). - UPPERCASE: constants and global variables (e.g., `API_URL`, `APP_VERSION`). - Firestore collections: plural nouns (e.g., `users`, `bookings`). - Firestore documents: descriptive IDs (e.g., `user-${uid}`, `booking-${timestamp}`). ## Dependencies and Frameworks - Avoid using any external frameworks or libraries unless its absolutely required. - Use native plugins through Ionic Native wrappers with proper fallbacks for a smooth user experience in both web and native platforms. - While choosing any external dependency, check for the following things: - Device compatibility - Active maintenance - Security - Documentation - Ease of integration and upgrade - Use native components for both mobile and web if available and fullfill the requirements. - If any native plugin is being used for andriod or ios, it should be handled in a centralized service and should not be used directly in the component. - Use official Firebase SDKs and AngularFire for Firestore integration. - Implement proper Firebase initialization and configuration. - Handle Firebase Authentication properly. - Set up appropriate Firebase Security Rules. ## UI and Styles - Prefer Ionic components. - Create reusable components for complex UI. - Use SCSS for styling. - Centralize themes, colors, and fonts. - Implement loading states for Firebase operations. - Handle Firebase offline data gracefully. - Show appropriate error messages for Firebase operations. - Implement real-time UI updates with Firebase snapshots. ## Performance and Optimization - Implement lazy loading. - Use pre-fetching for critical data. - Use caching for all the data that is needed multiple times. - Use global error and alert handlers. - Integrate any crash reporting service for the application. - Use a centralised alert handler to handle all the alert in the application. - Implement Firebase offline persistence. - Use Firebase query cursors for pagination. - Optimize Firestore reads with proper indexing. - Cache Firestore query results. - Use Firestore batch operations for bulk updates. - Monitor Firestore quota usage. ## Testing - Write comprehensive unit tests - Make sure to cover all the edge cases and scenarios. - In case of Native plugins, write mock services for the same. - Test Firebase integration thoroughly - Mock Firestore services in tests - Test Firebase security rules - Implement Firebase emulator for testing - Test offline functionality - Verify Firebase error handling Follow the official Ionic/Angular and Firebase/Firestore guides for best practices.

Jaro Navales

Made by Midday

An all-in-one tool for freelancers to monitor financial health, time-track, and send invoices. ↗