AI-powered meeting intelligence platform that helps you stay on top of every meeting without being in the room.
ProxyAI provides live transcripts, AI-powered summaries, and AI QnA with real-time conversations, allowing teams to stay informed and productive without attending every session. View Demo here.
-
Live Transcripts - Real-time transcription from multiple concurrent meetings
-
AI-Powered Summaries - Automatic summaries generated every 2 minutes
-
Platform Support - Integrates Google Calendar (Zoom and Teams Coming Soon).
-
Real-Time Updates - Server-sent events (SSE) for live meeting status and content updates
-
Meeting Management - Track, and analyze meetings across all platforms
-
Q&A Interface - Ask questions about meetings using AI-powered retrieval
-
Attention Alerts - Smart notifications when your presence is required (coming soon)
-
Framework: Next.js 15 with App Router
-
Language: TypeScript
-
UI Components: Radix UI + Tailwind CSS
-
State Management: Redux Toolkit + React Context
-
Authentication: Firebase Auth
-
Real-time Communication: Server-Sent Events (SSE)
-
HTTP Client: Axios
-
Icons: Lucide React
-
Date Handling: date-fns
Before you begin, ensure you have the following installed:
-
Node.js 20.x or higher
-
npm or yarn package manager
-
A Firebase project with Authentication enabled
-
OAuth credentials for meeting platforms (Google: Google Calendar, Zoom & Teams: Temporarily Optional)
git clone <repository-url>
cd proxyai-client
npm install
Create environment files for development and production:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.firebasestorage.app
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id
# Firebase Service Account (for server-side operations)
NEXT_PUBLIC_FIREBASE_CLIENT_EMAIL=your_service_account_email@project.iam.gserviceaccount.com
NEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nyour_firebase_private_key\n-----END PRIVATE KEY-----\n"
# Backend API
API_BASE_URL=http://localhost:8001
# Zoom OAuth
NEXT_PUBLIC_ZOOM_CLIENT_ID=your_zoom_client_id
NEXT_PUBLIC_REDIRECT_URI=http://localhost:3000/oauth/zoom
ZOOM_CLIENT_SECRET=your_zoom_client_secret
# Google OAuth
GOOGLE_REDIRECT_URI=http://localhost:3000/oauth/google
GOOGLE_CLIENT_ID=your_google_client_id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your_google_client_secret
Copy .env.development and update values for production:
-
Replace
localhostURLs with production domains -
Update redirect URIs to production callback URLs
-
Use production Firebase project credentials
# Run with development environment
npm run dev
# Run with production environment variables
npm run prod
The application will be available at http://localhost:3000
npm run build
npm start
proxyai-client/
├── src/
│ ├── api/ # API service layer
│ │ ├── auth/ # Authentication APIs
│ │ ├── meetings/ # Meeting APIs
│ │ ├── providers/ # Provider integration APIs
│ │ └── users/ # User management APIs
│ ├── app/ # Next.js app directory
│ │ ├── auth/ # Authentication pages
│ │ ├── meetings/ # Meeting management pages
│ │ ├── oauth/ # OAuth callback handlers
│ │ ├── settings/ # Settings pages
│ │ └── demo/ # Demo pages
│ ├── components/ # React components
│ │ ├── ui/ # Reusable UI components
│ │ ├── auth/ # Authentication components
│ │ ├── meetings/ # Meeting-related components
│ │ ├── settings/ # Settings components
│ │ └── shared/ # Shared components
│ ├── contexts/ # React contexts
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility libraries
│ ├── types/ # TypeScript type definitions
│ └── config/ # Configuration files
├── public/ # Static assets
└── ...config files
ProxyAI uses Firebase Authentication with support for:
-
Email/Password authentication
-
OAuth integration with meeting providers
-
Protected routes with middleware
-
Persistent auth state management
The application uses Server-Sent Events (SSE) for real-time updates:
// Connection established in meetings page
const eventSource = new EventSource(
`${API_BASE_URL}/meetings/sse?userId=${userId}`
);
// Handles:
// - meeting_status_update: Meeting status changes
// - transcript_update: Live transcript updates
// - summary_update: New AI-generated summariesSupports OAuth flows for:
- Google Meet: Google Calendar integration
Coming Soon:
-
Zoom: Calendar access and meeting management
-
Microsoft Teams: Calendar and meeting access
Integration tokens are stored securely and managed through the settings interface.
# Development
npm run dev # Run development server with dev env
npm run prod # Run development server with prod env
# Production
npm run build # Build for production
npm start # Start production server
# Code Quality
npm run lint # Run ESLint
| Variable | Description | Required |
|----------|-------------|----------|
| NEXT_PUBLIC_FIREBASE_API_KEY | Firebase API key | Yes |
| NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN | Firebase auth domain | Yes |
| NEXT_PUBLIC_FIREBASE_PROJECT_ID | Firebase project ID | Yes |
| API_BASE_URL | Backend API base URL | Yes |
| NEXT_PUBLIC_ZOOM_CLIENT_ID | Zoom OAuth client ID | Optional |
| ZOOM_CLIENT_SECRET | Zoom OAuth secret | Optional |
| GOOGLE_CLIENT_ID | Google OAuth client ID | Optional |
| GOOGLE_CLIENT_SECRET | Google OAuth secret | Optional |
-
Use TypeScript for all new files
-
Follow React best practices and hooks patterns
-
Use functional components with TypeScript interfaces
-
Implement error boundaries for production resilience
// Preferred component structure
interface ComponentProps {
prop1: string;
prop2?: number;
}
export function Component({ prop1, prop2 }: ComponentProps) {
// Component logic
return <div>{/* JSX */}</div>;
}All API calls are abstracted through service layers in src/api/:
// Example usage
import { meetingsService } from "@/api/meetings";
const meetings = await meetingsService.getMeetingsByStatus("live");-
Connect your repository to Vercel
-
Add environment variables in Vercel dashboard
-
Deploy with automatic builds on push
-
Build the application:
npm run build -
Set environment variables in your hosting environment
-
Run:
npm start -
Configure reverse proxy (nginx/Apache) for production
Ensure redirect URIs match exactly in:
-
Provider OAuth application settings (Zoom/Google/Teams)
-
Environment variables
-
Callback handler routes
-
Verify backend server is running and accessible
-
Check CORS configuration on backend
-
Ensure API_BASE_URL is correctly set
-
Verify Firebase configuration in environment variables
-
Check Firebase console for enabled authentication methods
-
Ensure service account credentials are properly formatted
-
Chrome/Edge (latest 2 versions)
-
Firefox (latest 2 versions)
-
Safari (latest 2 versions)
-
Create a feature branch from
main -
Make your changes with clear commit messages
-
Test thoroughly in development environment
-
Submit a pull request with detailed description
For issues and questions:
-
Create an issue in the repository
-
Contact the development team