Admin web app to create and edit courses and rudiments. Data is stored in the same Firestore project as the Rhythm app; the Learn tab in Rhythm reads this curriculum.
- Copy
.env.exampleto.envand fill in the same Firebase config as the rhythm app (useVITE_prefix instead ofEXPO_PUBLIC_). - In Firestore, create a document
admins/{your-uid}with fieldrole: "admin"(use your Firebase Auth UID after signing in once). - Deploy the Firestore rules from the rhythm-app project so curriculum write is allowed for admins.
npm installnpm run dev— open http://localhost:5173- Sign in with an email/password account that has an
admins/{uid}doc withrole: "admin".
npm run build— output indist/. Deploy to Vercel, Netlify, or Firebase Hosting and set the same env vars.
CD deploys to Firebase Hosting on every push to main.
-
Create the Hosting site in the same Firebase project (if using a separate site from rhythm-app):
firebase use <your-project-id> firebase hosting:sites:create crash-course-curriculum-builder
Or use the default site by removing the
"site"key fromfirebase.json. -
Create a service account for deployment:
- Firebase Console → Project settings → Service accounts → Generate new private key
- Copy the full JSON
-
Add GitHub secrets (Settings → Secrets and variables → Actions):
FIREBASE_SERVICE_ACCOUNT— paste the full service account JSONVITE_FIREBASE_API_KEY,VITE_FIREBASE_AUTH_DOMAIN,VITE_FIREBASE_PROJECT_ID,VITE_FIREBASE_STORAGE_BUCKET,VITE_FIREBASE_MESSAGING_SENDER_ID,VITE_FIREBASE_APP_ID— same as your.env