From e014603fb9d1a3d93b3e969c2f37a284043b6358 Mon Sep 17 00:00:00 2001 From: Mann Patel <130435633+Patel-Mann@users.noreply.github.com> Date: Sun, 15 Feb 2026 12:56:39 -0700 Subject: [PATCH] docker setup --- backend/Dockerfile | 35 ++ .../__pycache__/api_routes.cpython-314.pyc | Bin 41383 -> 45519 bytes .../__pycache__/db_queries.cpython-314.pyc | Bin 32290 -> 39330 bytes docker-compose.yml | 67 ++++ frontend/Dockerfile | 30 ++ frontend/src/Example.jsx | 320 ------------------ frontend/vite.config.js | 25 +- start.sh | 0 8 files changed, 156 insertions(+), 321 deletions(-) create mode 100644 backend/Dockerfile create mode 100644 docker-compose.yml create mode 100644 frontend/Dockerfile delete mode 100644 frontend/src/Example.jsx create mode 100644 start.sh 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 ee62c8f6c1f9ab3c24d55e51f7c6d709e0b51663..bf742e51ea487864ce2525f2ecf6dc3de833995a 100644 GIT binary patch delta 12576 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 Hu4?`tz1CVh delta 9106 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 VK~r!^1FcKd;U&*74ga&^{{uAfTJ!(_ diff --git a/backend/__pycache__/db_queries.cpython-314.pyc b/backend/__pycache__/db_queries.cpython-314.pyc index 1be6bc1181d5fbd01da643abf6c6336d759ac347..9b576878d9bf08c9741bb7e4ff8df2ac4b3dbcc1 100644 GIT binary patch delta 7912 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 - {/* Header */} -
-
- {/* Left: Logo */} -
-
- -
-

VoiceVault

-
- - {/* Center: Search Bar */} -
-
- - -
-
- - {/* Right: Login */} -
- -
-
-
- -
- {/* 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 */} -
-
- -
-
-
-
-
- 2:34 - 7:52 -
-
- -
-
- - {/* 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..." -

- -
-
- - {/* Post Actions */} -
- - - - -
-
- - {/* Second Audio Post Card */} -
-
-
-
-
- RM -
-
-
- Robert Miller - • 5 hours ago -
-
- Cultural Traditions - Oral History -
-
-
- -
- -

Traditional Music of the Appalachian Mountains

- -
-
- -
-
-
-
-
- 4:15 - 8:30 -
-
- -
-
- -
-

- "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..." -

- -
-
- -
- - - - -
-
- -
-
- - {/* 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