View is a Mobile Application allowing users to write and read articles or blogs based on their interests
- Email and Password Signin / Signup
- Google Signin / Signup
- Reset Password
- Form Validation
- Contributors / Users and Topics Selection phase after first application access
- For You section: posts are shown based on the current selected filter
- Trending Now section, i.e., most saved posts
- Following section: following users posts
- Posts are loaded as a Stream for instant updates
- More Posts are loaded on end list reaching for better performances
- Posts can be searched by simply typing the name, topic or author of the Post
- Bookmarked Posts are placed in a single spot
- User Profile Customizaion
- User statistics
- Post creation with required fields for button enabling
- Image Upload
- Dark Mode
- Localization for ๐บ๐ธ/๐ฌ๐ง and ๐ฎ๐น languages
- Responsive Design for tablets
- The S.O.L.I.D principles are adhred to make the applications scalable, testable, maintanable, and resilient to change
- The Dependency Injection design pattern is implemented
The application is not fully tested. Main tests like Unit, Integration, and End-To-End are used to analyze testing within the framework
The application is written using the Flutter framework. The main packages used from the pub.dev platform are the following:
- flutter_screenutil: helps with responsive UI design by adapting to different screen sizes
- bloc and flutter_bloc: facilitate the implementation of the BLoC pattern for State Management
- bloc_concurrency and stream_transform: assist in handling asynchronous operations and concurrency
- get_it and injectable: dependency injection frameworks for managing object dependencies
- flow_builder: allows navigation and state management based on flows
- formz: helps with form validation and management
- firebase_storage, cloud_firestore, firebase_auth: Firebase SDKs for storage, database, and authentication
- google_sign_in: allows integration with Google sign-in services
- test, bloc_test, and mocktail: assist in writing unit tests and mocking dependencies
- fake_cloud_firestore, firebase_storage_mocks, firebase_auth_mocks, google_sign_in_mocks: mocking libraries for testing Firebase services and Google sign-in
- intl: provides internationalization and localization utilities
- image_picker: allows users to pick images from the device's gallery or camera
- code/android/app : your google-services.json
- code/lib : your firebase_options.dart