Personal portfolio and CV site built with Flutter for the web. It ships as a static site on GitHub Pages, with responsive layouts, smooth routing, and bilingual content.
Live site: https://hasanm08.github.io
- Responsive shell — dedicated mobile and desktop experiences with shared content.
- Routing —
flow_routingwith typed routes and animated page transitions; sections include About, Projects, Contact, and More. - Theme — light, dark, and system appearance, persisted locally.
- Localization — English and Persian (Farsi), with locale persistence.
- Polished UI — custom typography (Pacifico, Exo 2, Kalame), animations, and interactive components tailored for a portfolio.
| Area | Details |
|---|---|
| Framework | Flutter (SDK ≥ 3.3), Material 3 |
| Web | flutter build web (default CanvasKit / JS pipeline; not SkWasm on Pages) |
| State | provider (AppSettings for theme and locale) |
| Navigation | flow_routing |
| Storage | shared_preferences for theme and language |
| Other | url_launcher, intl, web |
Prerequisites: Flutter with web support enabled.
flutter config --enable-web
flutter pub get
flutter run -d chromeRelease build (matches CI):
flutter build webTo preview the production build locally, serve build/web with any static file server (for example python3 -m http.server from that directory).
Deployment is automated in .github/workflows/flutter github pages.yml:
- Trigger: push to
source-code, pull requests againstsource-code, or manual workflow_dispatch onsource-code. - Output: static assets are published to the
gh-pagesbranch (via peaceiris/actions-gh-pages). - SPA routing:
index.htmlis copied to404.htmlso deep links work on GitHub Pages.
Ensure GitHub Pages is configured to serve from the gh-pages branch (root).
lib/main.dart— app bootstrap,FlowRouter, localization delegates, theme wiring.lib/router.dart— typed route definitions and redirect guards.lib/UI/Pages/WebApp/— section pages and shell (web_root,mobile_page).lib/theme/— light and darkThemeData.lib/l10n/— customAppLocalizations(EN / FA).lib/providers/— persistedAppSettings.assets/— images, fonts, animations.
Current package version: 2.1.0 (see pubspec.yaml).
Built and maintained as an open showcase of Flutter Web for a personal portfolio.