Embedit FE Platform ♡ Flutter
Using Flutter for mobile app development is highly advantageous because it allows for a single codebase to create applications for both iOS and Android, significantly reducing development time and cost. Flutter's rich set of customizable widgets and its ability to deliver a native performance and expressive UI make it a powerful choice mobile development. By leveraging our mobile platform, we multiply these benefits, ensuring seamless integration, enhanced performance, and streamlined updates, ultimately providing a superior user experience and faster time-to-market.
Give it a try!
With the Eli CLI tool, setting up your development environment and scaffolding your app is incredibly simple. Eli CLI streamlines the process, allowing you to quickly configure the necessary components and structure your app with minimal effort, so you can focus more on building features and less on repetitive setup tasks. This tool is designed to make your workflow faster and more efficient, ensuring you have everything you need to get started right away.
Platform components
We utilize a set of pre-prepared components and packages that we have specifically created for reuse across all our projects. These components cover basic functionalities essential for developing any application, allowing us to initiate new projects more quickly and efficiently without the need to decide on suitable solutions for these standard tasks. Each component is already fully integrated into our platform, ensuring easy implementation, and thanks to central management, these components are continually updated and maintained in alignment with all projects, ensuring their reliability and security.
- UI primitives - components
- 70+ premade widgets for development, designed for use on iOS, Android, Huawei, and web solutions. Let's visit our widget catalog to see more.
- Packages
- Prepared packages covering all aspects of mobile app development.
Clean Architecture
Clean Architecture is an architectural design approach that promotes sound software engineering practices, from writing clean, maintainable code to effectively managing dependencies. Our platform enforces the principles of Clean Architecture, ensuring adherence to these standards. Explore its benefits and learn how it positively impacts the development process.
- Eli CLI
- Tool that facilitates clean architecture implementation
Code quality
By automatically analyzing the code, Linter can identify problems that might escape the human eye, leading to a faster and more efficient development cycle. Early detection of these issues prevents them from making their way into the production environment, increasing the overall stability and reliability of the application.
- EIT Custom Rules
- A predefined set of linter rules
Localizations
Developing applications often involves the need for localization, enabling the app to reach a global audience by supporting various languages and regional settings. The importance of localization cannot be underestimated as a properly localized app can significantly enhance user satisfaction and expand market reach.
- Baked-in localizations
- Flutter offers built-in support for localization.
- Additional Features
- Over-The-Air Updates, Version Management, Figma Integration
Testing
We adhere to the "standard testing pyramid" as a proven model for planning and implementing software testing. Additionally, we utilize test coverage to assess the extent of tested code and employ test automation to streamline the testing process.
- Unit/Widget tests
- Check individual functions or evaluate widget interactions.
- Integration tests
- Validate the application by simulating real user interactions.
- Test coverage
- Help to identify untested areas.
- Automation
- Azure Pipelines and Git Hooks.
Observability
Observability is a critical aspect of modern software engineering, allowing developers to understand and troubleshoot their applications effectively. In the context of Flutter applications, observability involves monitoring performance, logging events, tracking errors, and gathering user metrics to ensure a seamless user experience.
- Logging
- Track application behavior in real time.
- Peformance monitoring
- Track critical metrics like app startup time, frame rendering speed, and memory usage.
- Error tracing
- Track uncaught exceptions and crashes.
Security
Security is a vital component of application development, and implementing secure coding practices helps safeguard your app from potential vulnerabilities. By following OWASP guidelines, performing regular static and dynamic security testing, securing data, and integrating security checks into your CI/CD pipeline, you can build robust and secure Flutter applications that protect user data and maintain trust.
- OWASP
- Set of best practices and guidelines
- RASP
- Dynamic security testing
- MOBSF
- Static security testing
DevOps - CI/CD
DevOps integrates development and operations teams to streamline software delivery, ensuring collaboration, automation, and faster time-to-market. CI/CD, a core practice in DevOps, automates code integration, testing, and deployment, enabling frequent and reliable updates to applications.
- Azure Pipelines
- Configured pipelines for your CI/CD process
Navigation
Navigation in mobile applications, often referred to as routing, is crucial for ensuring smooth transitions between various screens and features. In multiplatform development frameworks like Flutter, routing is managed through predefined paths that correspond to specific screens. A well-structured navigation system not only improves user experience but also simplifies the app's scalability and maintenance.
- Go router
- Our preferred solution for routing with deep link support
Storing data
Choosing the right data storage method for your mobile app is crucial for ensuring performance, reliability, and security. Whether storing data locally for offline use or leveraging the cloud for real-time synchronization, it's essential to consider the app's needs, user experience, and security requirements.
- Fast
- Quick data access without the need for network requests
- Secured
- Encryption to safeguard sensitive information
State management
State management is a critical aspect of mobile app development, ensuring the sustainability and predictability of the user interface. By separating the UI from business logic, it simplifies both testing and code maintenance. Acting as a mediator between the UI and data sources, state management enables the creation of reactive applications, where any state changes are effectively tracked and reflected in the UI.
- Bloc, Cubit
- Our preferred approach to state management
Caching
Integrating caching into our platform plays a crucial role in ensuring fast and seamless application performance. By leveraging pre-caching in the communication layer, the application can preload and store essential data, reducing user wait times. Cache invalidation, managed either through time-based limits or server signals, keeps cached data accurate and relevant. This strategy not only lightens the server load, boosting performance, but also enables the application to respond to user requests instantly, without unnecessary delays.
Identity
Our platform is built to accommodate a wide range of authentication and authorization scenarios, providing users with secure and flexible access to their data. We offer comprehensive support for OAuth2, a powerful protocol that facilitates third-party application authorization. Additionally, the platform employs JSON Web Tokens (JWT) to securely transmit information. For simpler use cases, API keys can also be used as an easy, though less secure, method of authenticating requests. Designed for scalability, our platform is fully prepared to integrate specific or emerging authentication and authorization protocols based on user requirements.
- OAuth2
- Protocol that enables secure, token-based access to user data.
- JWT
- Secure token format for transmitting data.
Network communication
Our platform offers flexible and robust solutions for network communication, enabling seamless integration with a wide range of server technologies and third-party services. We support both traditional REST APIs and modern approaches like GraphQL, allowing for more efficient and customizable data querying. Additionally, with Flutter's built-in support for streams, we enable real-time communication through technologies such as SignalR and gRPC, making it ideal for live updates and responsive applications.
- REST
- Client-server communication using standard HTTP methods.
- GraphQL
- Client-server communication using query language.
Platform packages
Our focus is on accelerating application development, improving security and error handling, and fostering a positive developer experience.