The Robu app is a cross-platform mobile application built with Flutter and Dart, integrating advanced features such as user authentication, profile management, real-time machine vision, hardware interaction, and rich content delivery. The backend is powered by Node.js, Express, and MongoDB, providing secure API endpoints, user management, and data storage. The app leverages a range of modern libraries and services to deliver a seamless user experience.
- Flutter: UI and logic for forms and navigation
- Provider: State management for authentication status
- Node.js + Express: REST API for authentication endpoints
- MongoDB: User data storage
- JWT (JSON Web Tokens): Secure, stateless authentication
- Shared Preferences: Local storage of login state
- The app presents login and registration forms, validating user input on the client side.
- Credentials are sent securely to the backend API.
- The backend verifies credentials, manages user records in MongoDB, and issues JWTs for authenticated sessions.
- JWTs are stored locally and attached to subsequent API requests for protected resources.
- The app maintains login state using Provider and Shared Preferences, enabling persistent sessions.
- User opens the app and is presented with login or registration options.
- User submits credentials, which are validated and sent to the backend.
- Backend authenticates the user, issues a JWT, and returns user data.
- The app stores the JWT and updates the authentication state.
- Authenticated users are navigated to the main dashboard; unauthenticated users remain on the login screen.
- Flutter: UI for profile display and editing
- Provider: State management for profile data
- Node.js + Express: API for profile CRUD operations
- MongoDB: Storage of user profile information
- Image Picker (Flutter): For profile photo updates
- Multer (Node.js): For handling file uploads on the backend
- Users can view and edit their profile information, including name, email, and profile picture.
- Profile updates are sent to the backend, which validates and persists changes in MongoDB.
- Profile images are uploaded via multipart requests and stored on the server or cloud storage.
- The app fetches and displays the latest profile data, updating the UI in real time.
- User navigates to the profile section.
- The app fetches current profile data from the backend.
- User edits profile fields or selects a new profile picture.
- Changes are submitted to the backend, which updates the database and returns the updated profile.
- The app refreshes the displayed profile information.
- Flutter: Custom drawer and navigation widgets
- Provider: State management for navigation state
- The app features a side navigation drawer, providing access to all major sections (Home, Profile, Info, Settings, etc.).
- The drawer displays user information and navigation options.
- Navigation state is managed to ensure smooth transitions and context-aware UI updates.
- User opens the navigation drawer from any screen.
- The drawer displays available sections and user info.
- User selects a section, and the app navigates to the corresponding screen.
- Flutter: Modular widgets for dashboard sections
- Provider: State management for dashboard data
- Node.js + Express: API for fetching dashboard content
- MongoDB: Storage of dashboard-related data
- The home screen aggregates key information and quick actions for the user.
- Data is fetched from the backend and displayed using custom widgets.
- The dashboard may include summaries, notifications, and shortcuts to major features.
- User logs in and is directed to the home/dashboard screen.
- The app fetches dashboard data from the backend.
- The dashboard displays relevant information and actionable items.
- Flutter: User interface for podcast browsing and playback
- Audio Player (Flutter): For streaming and playing podcast audio
- Node.js + Express: API for serving podcast metadata and audio URLs
- MongoDB: Storage of podcast metadata and links
- The app fetches a list of available podcasts from the backend, including titles, descriptions, and audio URLs.
- Users can browse, search, and select podcasts to listen to.
- The integrated audio player streams and plays podcast episodes, supporting play, pause, seek, and resume.
- Playback state is managed to allow users to continue listening from where they left off.
- User navigates to the Podcast section in the app.
- The app fetches and displays a list of available podcasts from the backend.
- User selects a podcast episode to play.
- The audio player streams and plays the selected episode, providing playback controls.
- User can pause, seek, or resume playback at any time.
- Flutter: User interface for tutorial browsing and viewing
- Video Player (Flutter): For playing tutorial videos
- Node.js + Express: API for serving tutorial metadata and video URLs
- MongoDB: Storage of tutorial metadata and links
- The app fetches a list of available tutorials from the backend, including titles, descriptions, and video URLs.
- Users can browse, search, and select tutorials to view.
- The integrated video player streams and plays tutorial videos, supporting play, pause, seek, and resume.
- The UI may include progress tracking and bookmarking for tutorials.
- User navigates to the Tutorial section in the app.
- The app fetches and displays a list of available tutorials from the backend.
- User selects a tutorial to view.
- The video player streams and plays the selected tutorial, providing playback controls.
- User can pause, seek, or resume playback, and may track progress or bookmark tutorials.
- Flutter: UI and camera integration
- Google ML Kit Face Detection: Real-time face detection and landmark extraction
- Camera (Flutter): Access to device camera and live video streaming
- flutter_serial_communication: Serial communication with external hardware (e.g., Arduino)
- Custom Painters (Flutter): Visualization of detection results
- The app uses the device camera to capture live video frames.
- Each frame is processed using ML Kit's face detection model to identify faces, facial landmarks, and contours in real time.
- Detected faces are visualized with bounding boxes and landmarks overlaid on the camera feed.
- The number of faces and their coordinates are displayed to the user.
- User opens the Machine Vision feature.
- The app lists available serial devices (e.g., Arduino) and allows the user to connect.
- The camera feed is displayed, and face detection runs in real time.
- When a face is detected, its coordinates are sent to the Arduino.
- The Arduino processes the coordinates and performs actions (e.g., toggling an LED).
- Flutter: User interface for serial monitoring and device selection
- flutter_serial_communication: Serial communication with external hardware (e.g., Arduino)
- Arduino: Microcontroller for receiving and sending serial data
- Node.js + Express (optional): For logging or relaying serial data to backend (if implemented)
- The app scans for available serial devices connected to the host (e.g., Arduino boards).
- Users can select a device and establish a serial connection directly from the app.
- The app provides a real-time serial monitor interface, displaying incoming data from the Arduino and allowing users to send commands or data back.
- Serial data is parsed and visualized in the UI, supporting both text and structured data formats.
- The monitor can be used for debugging, controlling hardware, or visualizing sensor data in real time.
- Optionally, serial logs or events can be sent to the backend for storage or further processing.
- User opens the Serial Monitor feature in the app.
- The app lists available serial devices and allows the user to select and connect to one.
- Once connected, the app displays a real-time feed of incoming serial data from the Arduino.
- The user can type and send commands or data to the Arduino via the app interface.
- The Arduino processes incoming commands and may respond with data, which is displayed in the app.
- The user can disconnect or switch devices as needed.
- Flutter: UI for displaying content (text, images, videos)
- Video Player (Flutter): For playing video content
- Node.js + Express: API for serving content
- MongoDB: Storage of content metadata and links
- The app provides access to informational content such as alumni stories, videos, and documentation.
- Content is fetched from the backend and displayed in a user-friendly format.
- Video content is played using integrated video player widgets.
- User navigates to the Info section.
- The app fetches available content from the backend.
- User selects an item to view details or play a video.
- The app displays the content or plays the video inline.
- OneSignal: Push notification service
- Flutter: Integration with OneSignal SDK
- Node.js + Express: Backend triggers notifications via OneSignal API
- The app registers with OneSignal to receive push notifications.
- The backend can send targeted notifications to users (e.g., updates, alerts).
- Notifications are displayed in the system tray and can trigger in-app actions.
- User installs and opens the app, which registers with OneSignal.
- The backend sends notifications via the OneSignal API.
- The app receives and displays notifications to the user.
- Flutter: Custom utility widgets
- URL Launcher: For opening external links
- Update Checker: For checking app version and prompting updates
- The app checks for updates and notifies users if a new version is available.
- Users can open external links (e.g., documentation, support) directly from the app.
- On startup or on demand, the app checks for updates.
- If an update is available, the user is prompted to download the latest version.
- Users can access external resources via integrated links.
- JWT: Secure, stateless authentication
- HTTPS: Secure communication between app and backend
- On-device Processing: All face detection is performed locally; no images are sent to external servers
- All sensitive operations are protected by authentication and secure communication.
- Users control when the camera is active and which devices are connected.
- Personal data is stored securely and only accessible to authenticated users.
This report provides a comprehensive overview of the Robu app's technical architecture and feature workflows, highlighting the integration of modern technologies for authentication, machine vision, hardware interaction, content delivery, and user experience.