diff --git a/backend/Dockerfile b/backend/Dockerfile
new file mode 100644
index 0000000..e26859d
--- /dev/null
+++ b/backend/Dockerfile
@@ -0,0 +1,35 @@
+# Backend Dockerfile
+FROM python:3.11-slim
+
+# Install system dependencies
+RUN apt-get update && apt-get install -y \
+ curl \
+ ffmpeg \
+ gcc \
+ g++ \
+ && rm -rf /var/lib/apt/lists/*
+
+# Set working directory
+WORKDIR /app
+
+# Copy requirements first (for caching)
+COPY requirements.txt .
+
+# Install Python dependencies
+RUN pip install --no-cache-dir -r requirements.txt
+
+# Copy application code
+COPY . .
+
+# Create uploads directory
+RUN mkdir -p /app/uploads
+
+# Expose port
+EXPOSE 5000
+
+# Health check
+HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
+ CMD curl -f http://localhost:5000/api/health || exit 1
+
+# Run application
+CMD ["python", "main.py"]
diff --git a/backend/__pycache__/api_routes.cpython-314.pyc b/backend/__pycache__/api_routes.cpython-314.pyc
index ee62c8f..bf742e5 100644
Binary files a/backend/__pycache__/api_routes.cpython-314.pyc and b/backend/__pycache__/api_routes.cpython-314.pyc differ
diff --git a/backend/__pycache__/db_queries.cpython-314.pyc b/backend/__pycache__/db_queries.cpython-314.pyc
index 1be6bc1..9b57687 100644
Binary files a/backend/__pycache__/db_queries.cpython-314.pyc and b/backend/__pycache__/db_queries.cpython-314.pyc differ
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..c992016
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,67 @@
+version: '3.8'
+
+services:
+ # Backend Service
+ backend:
+ build:
+ context: ./backend
+ dockerfile: Dockerfile
+ container_name: voicevault-backend
+ restart: unless-stopped
+ ports:
+ - "5000:5000"
+ environment:
+ # Flask
+ FLASK_APP: main.py
+ FLASK_ENV: production
+
+ # Supabase - REPLACE THESE WITH YOUR ACTUAL VALUES
+ SUPABASE_URL: "https://tnpnlkosqqudoadfylss.supabase.co"
+ SUPABASE_SERVICE_ROLE_KEY: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRucG5sa29zcXF1ZG9hZGZ5bHNzIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTc3MTAyNTQwOCwiZXhwIjoyMDg2NjAxNDA4fQ.v1xblErJBBv8p001vvTCUBfjP8ZqskfXNETB_yJOgvc"
+ SUPABASE_BUCKET: "archives"
+
+ # Whisper AI Settings
+ WHISPER_MODEL: "base"
+ WHISPER_DEVICE: "cpu"
+ WHISPER_COMPUTE_TYPE: "int8"
+
+ # Backend Settings
+ BACKEND_UPLOAD_DIR: "/app/uploads"
+ volumes:
+ - uploads:/app/uploads
+ networks:
+ - voicevault-network
+ healthcheck:
+ test: ["CMD-SHELL", "curl -f http://localhost:5000/api/health || exit 1"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+ start_period: 40s
+
+ # Frontend Service
+ frontend:
+ build:
+ context: ./frontend
+ dockerfile: Dockerfile
+ container_name: voicevault-frontend
+ restart: unless-stopped
+ ports:
+ - "3000:3000"
+ depends_on:
+ backend:
+ condition: service_healthy
+ networks:
+ - voicevault-network
+ healthcheck:
+ test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+
+volumes:
+ uploads:
+ driver: local
+
+networks:
+ voicevault-network:
+ driver: bridge
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
new file mode 100644
index 0000000..2019d70
--- /dev/null
+++ b/frontend/Dockerfile
@@ -0,0 +1,30 @@
+# Frontend Dockerfile - Node.js serve (no nginx)
+FROM node:18-alpine
+
+# Set working directory
+WORKDIR /app
+
+# Copy package files
+COPY package*.json ./
+
+# Install dependencies (including Tailwind)
+RUN npm install
+
+# Copy source code
+COPY . .
+
+# Build the React app
+RUN npm run build
+
+# Install serve to host the static files
+RUN npm install -g serve
+
+# Expose port 3000
+EXPOSE 3000
+
+# Health check
+HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
+ CMD wget --quiet --tries=1 --spider http://localhost:3000 || exit 1
+
+# Serve the built app
+CMD ["serve", "-s", "dist", "-l", "3000"]
diff --git a/frontend/src/Example.jsx b/frontend/src/Example.jsx
deleted file mode 100644
index 0bfbed5..0000000
--- a/frontend/src/Example.jsx
+++ /dev/null
@@ -1,320 +0,0 @@
-import { Search, User, Play, Archive, History, Settings, Volume2, Heart, MessageCircle, Share2, Bookmark, MoreVertical } from 'lucide-react'
-
-export default function App() {
- return (
-
- {/* Header */}
-
-
-
- {/* Sidebar - Profile */}
-
-
- {/* Main Content - Feed */}
-
-
-
- {/* Audio Post Card */}
-
- {/* Post Header */}
-
-
-
-
- DM
-
-
-
- Diana Martinez
- • 2 hours ago
-
-
- Historical Events
- Personal Stories
-
-
-
-
-
-
-
-
-
My Grandmother's Journey Through WWII
-
- {/* Audio Player */}
-
-
- {/* Transcription Preview */}
-
-
- "I remember the day clearly, despite all these years. We were living in a small village outside Warsaw when the news came. My mother gathered us all together and told us we had to leave everything behind..."
-
-
- Read full transcript →
-
-
-
-
- {/* Post Actions */}
-
-
-
- 248
-
-
-
- 32
-
-
-
- Share
-
-
-
-
-
-
-
- {/* Second Audio Post Card */}
-
-
-
-
-
- RM
-
-
-
- Robert Miller
- • 5 hours ago
-
-
- Cultural Traditions
- Oral History
-
-
-
-
-
-
-
-
-
Traditional Music of the Appalachian Mountains
-
-
-
-
-
- "This song has been passed down through five generations of our family. My great-great-grandfather used to play it on his banjo during summer evenings on the porch. The melody tells the story of..."
-
-
- Read full transcript →
-
-
-
-
-
-
-
- 412
-
-
-
- 58
-
-
-
- Share
-
-
-
-
-
-
-
-
-
-
- {/* Right Sidebar - Trending */}
-
-
-
- )
-}
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
index b9818fe..b298cd8 100644
--- a/frontend/vite.config.js
+++ b/frontend/vite.config.js
@@ -2,8 +2,31 @@ import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
-// https://vite.dev/config/
+
+// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(),
tailwindcss()],
+ server: {
+ host: true,
+ port: 3000,
+ strictPort: true,
+ },
+ preview: {
+ host: true,
+ port: 3000,
+ strictPort: true,
+ },
+ build: {
+ outDir: 'dist',
+ sourcemap: false,
+ minify: 'esbuild',
+ rollupOptions: {
+ output: {
+ manualChunks: {
+ vendor: ['react', 'react-dom'],
+ },
+ },
+ },
+ },
})
diff --git a/start.sh b/start.sh
new file mode 100644
index 0000000..e69de29