SayIt aims to provide a seamless and consistent user experience across both mobile and web platforms. The main goal is to ensure users enjoy a unified experience whether on smartphones, tablets, or computers. The mobile app supports both iOS and Android, while the web app is accessible through common web browsers. Both applications are closely integrated, sharing much of their business logic and functionality.
The project utilizes the Flutter framework which follows the Model-View-Controller (MVC) architecture. This architecture promotes separation of concerns, making the code clean and maintainable. Flutter's reactive widget system and state management capabilities (including Stateful Widgets, Provider, and Bloc Pattern) ensure an efficient and effective user interface construction and management.
To set up the SayIt project on your local machine, follow these steps:
- Install Android Studio: Download from Android Studio official site.
- Install Flutter SDK: Download the SDK from Flutter's official site and follow the setup instructions for your operating system.
- Build the Application: With Android Studio and Flutter SDK installed, you can clone the project, open it in Android Studio, and build it to get an executable version of the app.
The application uses the Dart programming language, which is efficient, effective, and easy to learn. Dart is used for both Flutter mobile app development and managing various functionalities like HTTP requests, file operations, and asynchronous tasks.
Firestore Database is used as a fully managed NoSQL database by Firebase. It allows real-time data storage and synchronization across client apps and the backend.
- Google Authentication and Email-based Authentication with Email Confirmation
- User Profile Customization
- Real-time Like and Followers Count
- Interactive User Posts and Comments System
SayIt uses advanced technologies to provide a robust and responsive user experience. The use of Flutter and Firestore ensures that the application is scalable, reactive, and able to handle real-time data effectively.