How vainyala/linkedin-app works
Purpose and Entry Points
This is a cross-platform Flutter application for creating and presenting a professional profile/portfolio: user profile, experience, education, skills, certifications, projects, and domain portfolios. The Dart application starts at lib/main.dart; platform launchers host the Flutter runtime on Android, iOS, desktop, and web.
Application Shell and Navigation
The root application in lib/main.dart likely establishes the app shell and initial route. Primary top-level experiences are a dashboard, profile presentation, profile editing, and messaging:
• lib/screens/dashboard_page.dart
• lib/screens/profile_view_page.dart
• lib/screens/edit_profile_page.dart
• lib/screens/MessagePage.dart
Control flows from shell/navigation into screen-specific read/edit operations, rather than through a separate backend service layer visible in the tree.
Profile Domain Model
The app uses explicit Dart models for each profile section. These define the application’s persisted and rendered data boundary:
• lib/models/user_profile.dart
• lib/models/experience.dart
• lib/models/education.dart
• lib/models/skill.dart
• lib/models/certification.dart
• lib/models/project.dart
• lib/models/domain_portfolio.dart
A user profile aggregates or relates to these records; management screens operate on individual collections and profile views compose them into a portfolio.
Local Persistence Boundary
Database access is centralized under lib/database, separating storage representation from UI/model consumers:
• lib/database/database_helper.dart
• lib/database/tables.dart
database_helper.dart is the persistence gateway, while tables.dart defines the schema/table-level contract. Screens and profile composition should depend on this boundary rather than platform-specific storage APIs. No remote API, authentication provider, or cloud service is evident from the supplied repository tree.
Editing and Management Flows
Dedicated management screens provide CRUD-oriented workflows for portfolio sections:
• lib/screens/manage_experience_page.dart
• lib/screens/manage_education_page.dart
• lib/screens/manage_skills_page.dart
• lib/screens/manage_certifications_page.dart
• lib/screens/manage_projects_page.dart
• lib/screens/domain_portfolio_page.dart
The expected flow is: dashboard/profile navigation → edit or manage section → model creation/update → local database helper → refreshed profile/dashboard presentation.
Presentation Composition
Reusable widgets isolate rendering for common profile sections and summary elements:
• lib/widgets/profile_header_widget.dart
• lib/widgets/experience_card.dart
• lib/widgets/education_card.dart
• lib/widgets/certification_card.dart
• lib/widgets/project_card.dart
• lib/widgets/domain_selector_widget.dart
• lib/widgets/stat_widget.dart
These form the UI composition boundary: screen pages coordinate data and interaction, while cards/header/selector render domain-specific fragments. Shared display constants are located in lib/utils/constants.dart.
Runtime and Platform Infrastructure
Flutter/Dart is the shared application runtime. Native host projects package and launch it for Android, iOS, Linux, macOS, Windows, and web:
• Android: android/app/src/main/kotlin/com/example/linked_in/MainActivity.kt
• iOS: ios/Runner/AppDelegate.swift
• macOS: macos/Runner/MainFlutterWindow.swift
• Linux: linux/runner/main.cc
• Windows: windows/runner/main.cpp
• Web: web/index.html
Platform directories are generated/host infrastructure; application behavior is concentrated in lib/.
Main entry points: profile_view_page.dart Profile Presentation · edit_profile_page.dart Profile Editor · main.dart App Shell · database_helper.dart Database Gateway
Components 15
Flutter Application
- App Shell · Establishes the application shell and initial navigation.
lib/main.dart - Dashboard
lib/screens/dashboard_page.dart - Profile Presentation · Composes the portfolio for viewing.
lib/screens/profile_view_page.dart - Profile Editor
lib/screens/edit_profile_page.dart - Messaging
lib/screens/MessagePage.dart - Section Managers · Manage experience, education, skills, certifications, and projects.
- Domain Portfolio Manager
lib/screens/domain_portfolio_page.dart - Profile Header
lib/widgets/profile_header_widget.dart - Section Cards & Selector · Reusable portfolio cards, domain selector, and statistics display.
Profile Data
- User Profile · Aggregate profile record and presentation boundary.
lib/models/user_profile.dart - Profile Section Records · Experience, education, skill, certification, project, and domain portfolio records.
- Database Gateway · Centralizes local database reads and writes.
lib/database/database_helper.dart - Table Schema
lib/database/tables.dart
Runtime Hosts
- Flutter/Dart Runtime · Runs the Dart application across supported platforms.
- Native & Web Hosts · Android, iOS, desktop, and web hosts package and launch Flutter.
Connections 21
- Native & Web Hosts → Flutter/Dart Runtime: launches
- Flutter/Dart Runtime → App Shell: runs
- App Shell → Dashboard: navigates
- App Shell → Profile Presentation: navigates
- App Shell → Profile Editor: navigates
- App Shell → Messaging: navigates
- Dashboard → Profile Presentation: opens
- Dashboard → Profile Editor: opens
- Profile Editor → Section Managers: manages sections
- Profile Editor → Domain Portfolio Manager: manages
- Profile Presentation → Profile Header: composes
- Profile Presentation → Section Cards & Selector: composes
- Profile Presentation → User Profile: renders
- Section Managers → Profile Section Records: creates and updates
- Domain Portfolio Manager → Profile Section Records: creates and updates
- Profile Editor → User Profile: updates
- User Profile → Profile Section Records: aggregates
- Profile Editor → Database Gateway: persists through
- Section Managers → Database Gateway: persists through
- Profile Presentation → Database Gateway: loads through
- Database Gateway → Table Schema: uses