A Flutter web portfolio with a fully authenticated admin console.
Profile and project content managed in real time through Firebase — no rebuilds needed.
Flutter Web App
├── go_router — declarative routing with auth guards
├── flutter_bloc — global AuthBloc + route-scoped feature BLoCs
├── get_it — dependency injection
├── Clean Architecture — datasource → repository → use case → BLoC → UI
├── Firebase Auth — email/password + Google sign-in
├── Cloud Firestore — profile and project content
└── Firebase Storage — all media (avatar, covers, screenshots)
- Admin Asset Browser now supports dedicated
Project,Shared, andTrashspaces backed by Firebase Storage. - File operations such as move, copy, trash, restore, and delete now run through Firebase Cloud Functions instead of browser-side byte shuffling.
- Trash root listing is now server-backed, with clean display names and original-path metadata for safer restore flows.
- Markdown previews now use a shared GitHub-style renderer with alerts, tables, task lists, code labels, and bounded image/SVG rendering.
- The current repository snapshot is web-focused; native runner folders are not tracked and should be regenerated before native builds.
flutter pub get
flutterfire configure # generates lib/firebase_options.dart
flutter run -d chromeNote:
lib/firebase_options.dartis gitignored. Runflutterfire configureto generate it locally. Firebase Storage CORS must also be configured once: seedocs/08_firebase_and_deployment.md. If you edit Cloud Functions, runnpm.cmd --prefix functions installandnpm.cmd --prefix functions run buildbefore deploying.
Full architecture, data models, routing, and deployment notes in docs/ — start with docs/README.md.
This repository is public for showcase purposes only.