A comprehensive, role-based team management and collaboration platform built with Next.js, Firebase, and TypeScript. Perfect for organizations, committees, and teams that need secure, hierarchical access control and real-time collaboration.
- Role-Based Access Control: Core, Semi-core, Head, and Volunteer roles with hierarchical permissions
- Team Management: Create and manage teams with member assignment and team heads
- Task Management: Create, assign, and track tasks with status updates
- Real-Time Chat: Team-based chatrooms with real-time messaging
- File Management: Secure file uploads and storage per team
- Dashboard Analytics: Role-specific dashboards with team and task overviews
- Mobile Responsive: Fully responsive design for mobile and desktop
- PWA Support: Progressive Web App with offline capabilities
- Frontend: Next.js 15, React 18, TypeScript
- Styling: Tailwind CSS, Shadcn/UI
- Backend: Firebase (Firestore, Authentication, Storage)
- Admin SDK: Firebase Admin SDK for server-side operations
- AI Integration: Google Genkit for task suggestions
- Node.js 18+ and npm
- Firebase account (free tier works)
- Git
git clone https://github.com/ideayaan-stack/studio
cd studio
npm install-
Get Firebase Config:
- Go to Firebase Console
- Create or select project:
ideayaan-cd964 - Project Settings β General β Your apps β Web app
- Copy the config object
-
Update Firebase Config:
- Open
src/firebase/config.ts - Replace with your Firebase config
- Open
Create .env.local in the project root:
# Firebase Admin SDK Service Account JSON
# Get from: https://console.firebase.google.com/project/ideayaan-cd964/settings/serviceaccounts/adminsdk
# Download JSON and paste entire content as single line
FIREBASE_SERVICE_ACCOUNT_JSON='{"type":"service_account","project_id":"ideayaan-cd964",...}'See .env.example for format reference.
# Login to Firebase
firebase login
# Deploy rules and indexes
firebase deploy --only firestore:rules,firestore:indexesSince only Core users can create accounts, create the first one manually:
See detailed guide: docs/setup/CREATE_FIRST_CORE_ACCOUNT.md
Quick steps:
- Firebase Console β Authentication β Add user (email + password)
- Copy the User UID
- Firestore Database β
userscollection β Add document - Set Document ID = User UID
- Add fields:
uid: [User UID]email: [Your email]displayName: [Your name]role:CoreteamId:""(empty string)
npm run devVisit: http://localhost:9002
docs/setup/QUICK_START_GUIDE.md- Complete setup walkthroughdocs/setup/FIREBASE_ADMIN_SETUP.md- Admin SDK configurationdocs/setup/CREATE_FIRST_CORE_ACCOUNT.md- First admin accountdocs/setup/MANUAL_TEAM_CREATION.md- Manual team setup
docs/reference/IMPLEMENTATION_SUMMARY.md- Feature documentationdocs/reference/TESTING_DIFFERENT_ROLES.md- Role testing guidedocs/reference/FIREBASE_DEPLOYMENT_GUIDE.md- Deployment guide
docs/fixes/FIXES_AND_ENHANCEMENTS.md- Recent fixes and improvements
| Role | Permissions |
|---|---|
| Core | Full access: Create users/teams, manage permissions, view all data |
| Semi-core | Manage teams and tasks, view all data, cannot manage permissions |
| Head | Manage own team, create tasks for team, view team data only |
| Volunteer | View assigned tasks, update task status, upload files, team chat |
studio/
βββ src/
β βββ app/ # Next.js app router pages
β β βββ dashboard/ # Dashboard pages (teams, tasks, files, chat)
β β βββ login/ # Authentication
β βββ components/ # React components
β β βββ dashboard/ # Dashboard-specific components
β β βββ ui/ # Shadcn/UI components
β βββ firebase/ # Firebase configuration and hooks
β β βββ actions/ # Server actions (Admin SDK)
β β βββ auth/ # Authentication hooks
β βββ lib/ # Utilities and types
βββ docs/ # Documentation
β βββ setup/ # Setup guides
β βββ fixes/ # Fix documentation
β βββ reference/ # Reference docs
βββ public/ # Static assets
βββ firestore.rules # Firestore security rules
βββ firestore.indexes.json # Firestore indexes
# Development server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Type checking
npm run typecheck
# Linting
npm run lint| Variable | Description | Required |
|---|---|---|
FIREBASE_SERVICE_ACCOUNT_JSON |
Firebase Admin SDK service account JSON | Yes (for user/team creation) |
- Push code to GitHub
- Import project in Vercel
- Add environment variables:
FIREBASE_SERVICE_ACCOUNT_JSON
- Deploy
# Build the app
npm run build
# Deploy to Firebase
firebase deploy --only hostingAdd FIREBASE_SERVICE_ACCOUNT_JSON to your hosting platform's environment variables.
- Firestore Rules: Role-based access control enforced at database level
- Authentication:** Firebase Auth with email/password
- Admin SDK: Server-side operations bypass client-side rules
- Environment Variables: Never commit
.env.localto git
- Firestore: 1 GB storage, 50K reads/day, 20K writes/day
- Authentication: 10K active users/month
- Storage: 5 GB storage, 1 GB/day downloads
- Hosting: 10 GB storage, 360 MB/day transfer
For 200 concurrent users, the free tier should be sufficient with proper optimization.
- Check
.env.localexists and hasFIREBASE_SERVICE_ACCOUNT_JSON - Verify JSON is valid (no syntax errors)
- Restart dev server after adding env var
- Check server logs for specific error messages
- Verify Admin SDK is configured (see above)
- Check you're logged in as Core user
- Verify Firestore rules are deployed
- Check browser console and server logs
- Verify user role in Firestore
userscollection - Check Firestore rules are deployed
- Ensure user profile exists with correct
rolefield
This project is private and proprietary.
For issues and questions:
- Check documentation in
docs/folder - Review troubleshooting section above
- Check Firebase Console for errors
- Clone repository
- Install dependencies (
npm install) - Configure Firebase (
src/firebase/config.ts) - Set up Admin SDK (
.env.local) - Deploy Firestore rules
- Create first Core account
- Start dev server (
npm run dev) - Log in and test user/team creation
Built with β€οΈ for efficient team collaboration