Rooming is a shared household management app for roommates. It helps a house coordinate expenses, chores, shopping, schedules, participants, announcements, and settings from one dashboard.
- Google sign-in with Firebase Authentication
- House onboarding flow (create a house or join via invite code)
- Role-based household profiles (
adminandmember) - Unified dashboard with tabs for:
- Overview
- Announcements
- Expenses
- Chores
- Participants
- Shopping
- Calendar
- Settings
- Real-time data with Firebase Firestore
- Mobile-friendly layout with sidebar + sheet navigation
- Light/dark mode toggle with local preference persistence
- React + TypeScript
- Vite
- Firebase (Auth + Firestore)
- Tailwind CSS
- shadcn/ui components
- Node.js 18+ (recommended)
- npm
- A Firebase project with Auth and Firestore enabled
npm installCreate a local env file from the example:
cp .env.example .env.localSet values in .env.local:
GEMINI_API_KEY- required for Gemini-powered featuresAPP_URL- app base URL for hosted environments
This project reads Firebase app config from firebase-applet-config.json.
Update this file with your Firebase project settings if you are running outside the original environment.
npm run devApp runs on http://localhost:3000.
npm run dev- start local dev servernpm run build- create production buildnpm run preview- preview production buildnpm run lint- type-check (tsc --noEmit)npm run clean- removedist
src/components/- UI pages and dashboard tabssrc/contexts/- app state and house/user contextsrc/services/- service integrations (including Gemini)src/firebase.ts- Firebase initialization and helpersfirestore.rules- Firestore security rules
The app can be deployed as a static frontend plus Firebase backend services. For production, ensure:
- Firebase Auth providers are configured
- Firestore indexes/rules are applied
- Environment variables are set in your hosting provider
Apache-2.0