VIBN Frontend for Coolify deployment

This commit is contained in:
2026-02-15 19:25:52 -08:00
commit 40bf8428cd
398 changed files with 76513 additions and 0 deletions

201
FIREBASE_SETUP.md Normal file
View File

@@ -0,0 +1,201 @@
# Firebase Setup Guide for Vibn
## ✅ What's Already Done
- ✅ Firebase packages installed (`firebase`, `firebase-admin`)
- ✅ Firebase CLI installed globally
- ✅ Firebase config files created (`config.ts`, `admin.ts`, `collections.ts`)
- ✅ Firestore security rules created (`firestore.rules`)
- ✅ Firestore indexes configured (`firestore.indexes.json`)
- ✅ Storage security rules created (`storage.rules`)
- ✅ Firebase project linked (`.firebaserc`)
- ✅ Deployment scripts added to `package.json`
## 🔧 Manual Steps Required
### Step 1: Get Service Account Credentials
1. Go to [Firebase Console](https://console.firebase.google.com/u/0/project/gen-lang-client-0980079410)
2. Click ⚙️ **Settings****Project settings**
3. Go to **Service accounts** tab
4. Click **"Generate new private key"**
5. Download the JSON file
### Step 2: Update `.env.local`
Add these to `/Users/markhenderson/ai-proxy/vibn-frontend/.env.local`:
```bash
# Firebase Client Config (already provided by Firebase)
NEXT_PUBLIC_FIREBASE_API_KEY=AIzaSyBxFmm_0y1mwd_k1YgF3pQlbxi_Z3gu4k0
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=gen-lang-client-0980079410.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=gen-lang-client-0980079410
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=gen-lang-client-0980079410.firebasestorage.app
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=487105246327
NEXT_PUBLIC_FIREBASE_APP_ID=1:487105246327:web:01578a6b7ee79e39fa8272
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=G-S9MKR6G6HG
# Firebase Admin Config (from service account JSON)
FIREBASE_PROJECT_ID=gen-lang-client-0980079410
FIREBASE_CLIENT_EMAIL=<paste client_email from service account JSON>
FIREBASE_PRIVATE_KEY="<paste private_key from service account JSON>"
```
**Note:** The `FIREBASE_PRIVATE_KEY` should include the quotes and the `\n` characters.
### Step 3: Enable Firebase Services (if not already done)
In Firebase Console:
#### Enable Firestore:
1. Click **"Firestore Database"** in left sidebar
2. Click **"Create database"**
3. Choose **Production mode**
4. Select **Canada (northamerica-northeast1)** or closest region
5. Click **"Enable"**
#### Enable Storage:
1. Click **"Storage"** in left sidebar
2. Click **"Get started"**
3. Choose **Production mode**
4. Use same region as Firestore
5. Click **"Done"**
#### Enable Authentication (if not done):
1. Click **"Authentication"** in left sidebar
2. Click **"Get started"**
3. Enable **Email/Password**
4. Enable **Google**
5. Enable **GitHub** (paste your OAuth credentials)
### Step 4: Login to Firebase CLI
```bash
firebase login
```
This will open a browser for authentication.
### Step 5: Deploy Security Rules and Indexes
```bash
# Deploy Firestore rules and Storage rules
npm run firebase:deploy:rules
# Deploy Firestore indexes
npm run firebase:deploy:indexes
```
### Step 6: Add Custom Domain to Firebase Auth (Optional)
In Firebase Console:
1. Go to **Authentication****Settings****Authorized domains**
2. Click **"Add domain"**
3. Add: `vibnai.com`
4. Add: `app.vibnai.com` (if using subdomain)
### Step 7: Update GitHub OAuth Callback (if using custom domain)
In your GitHub OAuth App settings:
1. Update **Authorization callback URL** to match your domain
2. For development: `http://localhost:3000`
3. For production: `https://vibnai.com` or `https://app.vibnai.com`
## 🚀 Available Commands
```bash
# Development
npm run dev # Start Next.js dev server
# Firebase Emulators (for local testing)
npm run firebase:emulators # Start local Firebase emulators
# Firebase Deployment
npm run firebase:deploy:rules # Deploy security rules only
npm run firebase:deploy:indexes # Deploy Firestore indexes only
npm run firebase:deploy # Deploy everything (rules + indexes)
```
## 📊 Data Models
Your Firestore database will have these collections:
### `users`
- User profile data
- Authentication info
- Workspace association
### `projects`
- Project metadata
- Product details
- GitHub/ChatGPT connections
### `sessions`
- Coding session tracking
- Token usage
- Cost tracking
### `analyses`
- AI analysis results
- Tech stack detection
- Feature summaries
## 🔐 Security
- ✅ All sensitive data is in `.env.local` (not committed)
- ✅ Firestore rules enforce user-based access control
- ✅ Storage rules protect user files
- ✅ Firebase Admin SDK only used server-side
- ✅ Client SDK only uses public config
## 🧪 Testing Locally
To test with Firebase emulators (no real data):
```bash
npm run firebase:emulators
```
Then in your code, add this before initializing Firebase:
```typescript
if (process.env.NODE_ENV === 'development') {
connectAuthEmulator(auth, 'http://localhost:9099');
connectFirestoreEmulator(db, 'localhost', 8080);
connectStorageEmulator(storage, 'localhost', 9199);
}
```
## 📝 Next Steps
1. Complete the manual steps above
2. Test Firebase connection locally
3. Create your first user via Firebase Auth
4. Test creating a project via your frontend
5. Deploy rules and indexes to production
6. Set up custom domain (when ready)
## 🆘 Troubleshooting
**"Firebase Admin not initialized"**
- Make sure `.env.local` has all the required variables
- Check that `FIREBASE_PRIVATE_KEY` includes the quotes and `\n` characters
- Restart your dev server after updating env vars
**"Permission denied" in Firestore**
- Deploy security rules: `npm run firebase:deploy:rules`
- Make sure user is authenticated
- Check that `userId` matches in the document
**"Index not found"**
- Deploy indexes: `npm run firebase:deploy:indexes`
- Wait 2-5 minutes for indexes to build
- Check Firebase Console → Firestore → Indexes
## 📚 Resources
- [Firebase Documentation](https://firebase.google.com/docs)
- [Firestore Security Rules](https://firebase.google.com/docs/firestore/security/get-started)
- [Firebase Auth with Next.js](https://firebase.google.com/docs/auth/web/start)
- [Custom Domain Setup](https://firebase.google.com/docs/auth/web/custom-domain)