[SOMA][BOT-3][INFRA] skeleton: project folder structure and all package manifests
This commit is contained in:
30
soma/backend/Dockerfile
Normal file
30
soma/backend/Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
||||
FROM python:3.11-slim
|
||||
|
||||
# System deps
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gcc \
|
||||
libpq-dev \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Install Python dependencies before copying app code
|
||||
# (layer cache: dependencies change less often than code)
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copy application code
|
||||
COPY . .
|
||||
|
||||
# Create uploads directory
|
||||
RUN mkdir -p /app/uploads
|
||||
|
||||
# Non-root user for security
|
||||
RUN addgroup --system appgroup && adduser --system --group appgroup
|
||||
RUN chown -R appgroup:appgroup /app
|
||||
USER appgroup
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1"]
|
||||
41
soma/backend/alembic.ini
Normal file
41
soma/backend/alembic.ini
Normal file
@@ -0,0 +1,41 @@
|
||||
[alembic]
|
||||
script_location = alembic
|
||||
prepend_sys_path = .
|
||||
version_path_separator = os
|
||||
sqlalchemy.url = driver://user:pass@localhost/dbname
|
||||
|
||||
[post_write_hooks]
|
||||
|
||||
[loggers]
|
||||
keys = root,sqlalchemy,alembic
|
||||
|
||||
[handlers]
|
||||
keys = console
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[logger_root]
|
||||
level = WARN
|
||||
handlers = console
|
||||
qualname =
|
||||
|
||||
[logger_sqlalchemy]
|
||||
level = WARN
|
||||
handlers =
|
||||
qualname = sqlalchemy.engine
|
||||
|
||||
[logger_alembic]
|
||||
level = INFO
|
||||
handlers =
|
||||
qualname = alembic
|
||||
|
||||
[handler_console]
|
||||
class = StreamHandler
|
||||
args = (sys.stderr,)
|
||||
level = NOTSET
|
||||
formatter = generic
|
||||
|
||||
[formatter_generic]
|
||||
format = %(levelname)-5.5s [%(name)s] %(message)s
|
||||
datefmt = %H:%M:%S
|
||||
3
soma/backend/app/__init__.py
Normal file
3
soma/backend/app/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# SOMA Backend
|
||||
# Phase 0 completion signal — this file's existence indicates the skeleton is ready.
|
||||
# Bot 1 and Bot 2 may now begin parallel work.
|
||||
22
soma/backend/requirements.txt
Normal file
22
soma/backend/requirements.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
fastapi==0.115.0
|
||||
uvicorn[standard]==0.30.0
|
||||
sqlalchemy[asyncio]==2.0.35
|
||||
alembic==1.13.0
|
||||
asyncpg==0.29.0
|
||||
redis[hiredis]==5.0.0
|
||||
python-jose[cryptography]==3.3.0
|
||||
passlib[bcrypt]==1.7.4
|
||||
pyotp==2.9.0
|
||||
qrcode[pil]==7.4.2
|
||||
pdfplumber==0.11.0
|
||||
ollama==0.3.0
|
||||
google-generativeai==0.8.0
|
||||
groq==0.9.0
|
||||
httpx==0.27.0
|
||||
apscheduler==3.10.4
|
||||
boto3==1.34.0
|
||||
python-multipart==0.0.9
|
||||
pydantic-settings==2.4.0
|
||||
chromadb==0.5.0
|
||||
psycopg2-binary==2.9.9
|
||||
pytz==2024.1
|
||||
Reference in New Issue
Block a user