public/firebase-config.js.npm i -g firebase-tools && firebase login && firebase init (choose Hosting + Firestore, keep existing files) then firebase deploy.https://<project>.web.app link. Camera + mic now work for every student (https + Permissions-Policy header in firebase.json).
First login: a junior’s first PIN becomes their password. Data syncs to Firestore users/<rollno> and follows them to any device.flutter create cssp_junior, then copy flutter_app/pubspec.yaml and flutter_app/lib/main.dart over the new project. Put your Hosting URL in kPortalUrl (keep ?app=1).android/app/src/main/AndroidManifest.xml add inside <manifest>:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
and set minSdkVersion 21 in android/app/build.gradle.ios/Runner/Info.plist add NSCameraUsageDescription and NSMicrophoneUsageDescription with a short reason text.flutter pub get && flutter run.The included roster entries use synthetic demo names and IDs. Keep real student personal information out of public repositories. Firebase web configuration is intentionally blank until configured for your own project.