This commit is contained in:
2026-04-28 19:48:02 -05:00
parent 798bd14312
commit f548a2d9bd
7 changed files with 5035 additions and 21 deletions

View File

@ -1,4 +1,4 @@
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/hermesmessages DATABASE_URL=postgresql+psycopg://postgres:postgres@localhost:5433/hermesmessages
REDIS_URL=redis://localhost:6379 REDIS_URL=redis://localhost:6379
SECRET_KEY=changeme-use-a-long-random-string SECRET_KEY=changeme-use-a-long-random-string
META_APP_ID= META_APP_ID=

View File

@ -1,6 +1,11 @@
import asyncio import asyncio
import sys
from logging.config import fileConfig from logging.config import fileConfig
# Windows + asyncpg requiere SelectorEventLoop (no ProactorEventLoop)
if sys.platform == "win32":
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
from alembic import context from alembic import context
from sqlalchemy.ext.asyncio import create_async_engine from sqlalchemy.ext.asyncio import create_async_engine

View File

@ -1,20 +1,19 @@
fastapi==0.115.0 fastapi>=0.115.0
uvicorn[standard]==0.30.6 uvicorn[standard]>=0.30.6
sqlalchemy[asyncio]==2.0.35 sqlalchemy[asyncio]>=2.0.36
asyncpg==0.29.0 psycopg[binary]>=3.2.0
alembic==1.13.3 alembic>=1.13.3
pydantic==2.9.2 pydantic>=2.10.0
pydantic-settings==2.5.2 pydantic-settings>=2.7.0
pydantic[email]==2.9.2 pydantic[email]>=2.10.0
redis==5.1.1 redis>=5.1.1
python-jose[cryptography]==3.3.0 python-jose[cryptography]>=3.3.0
passlib[bcrypt]==1.7.4 bcrypt>=4.2.0
python-multipart==0.0.12 python-multipart>=0.0.12
httpx==0.27.2 httpx>=0.27.2
anthropic==0.34.2 anthropic>=0.40.0
slowapi==0.1.9 python-dotenv>=1.0.1
python-dotenv==1.0.1
# testing # testing
pytest==8.3.3 pytest>=8.3.3
pytest-asyncio==0.24.0 pytest-asyncio>=0.24.0

26
backend/run.py Normal file
View File

@ -0,0 +1,26 @@
"""
Arranque local para Windows + Python 3.14.
psycopg3 requiere SelectorEventLoop; este script lo configura
antes de que uvicorn tome el control del event loop.
"""
import asyncio
import selectors
import uvicorn
async def main():
config = uvicorn.Config(
"app.main:app",
host="0.0.0.0",
port=8000,
reload=False,
log_level="info",
)
server = uvicorn.Server(config)
await server.serve()
if __name__ == "__main__":
loop = asyncio.SelectorEventLoop(selectors.SelectSelector())
asyncio.set_event_loop(loop)
loop.run_until_complete(main())

View File

@ -6,7 +6,7 @@ services:
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres
POSTGRES_DB: hermesmessages POSTGRES_DB: hermesmessages
ports: ports:
- "5432:5432" - "5433:5432"
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data

4985
frontend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,6 @@
"@radix-ui/react-switch": "^1.1.1", "@radix-ui/react-switch": "^1.1.1",
"@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-tabs": "^1.1.1",
"@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-avatar": "^1.1.1",
"@radix-ui/react-badge": "^1.0.0",
"@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-separator": "^1.1.0",
"@radix-ui/react-label": "^2.1.0" "@radix-ui/react-label": "^2.1.0"
}, },