How ismail007-sk/soulmate works
Soulmate is an AI companion app: users sign up, configure a profile through onboarding, and use chat and soulmate features; the backend also extracts and retrieves memories. The graph includes the Expo client surfaces and FastAPI domain stages, plus the backend’s auth, persistence, and memory-worker layers. Backend routes and several service calls are visible in the supplied excerpts or SOURCE INDEX. Client-to-server wiring and some internal AI-service calls are not shown, so those connections are omitted.
Main entry points: main.py API application · database.py Database sessions · memory_worker.py Memory worker · user_repository.py User repository
Components 26
Expo Client
- Login and signup
expo-frontend/src/app/(auth)/login.tsx - Profile onboarding
expo-frontend/src/app/(onboarding)/conversation.tsx - Chat screen
expo-frontend/src/app/chat.tsx - Settings screen
expo-frontend/src/app/settings.tsx - Auth API client
expo-frontend/src/features/auth/auth.api.ts
API Routing
- API application
fastapi-backend/app/main.py - Auth routes
fastapi-backend/app/routers/auth_router.py - User routes
fastapi-backend/app/routers/user_router.py - Chat routes
fastapi-backend/app/routers/chat_router.py - Soulmate routes
fastapi-backend/app/routers/soulmate_router.py
Identity and Profiles
- Auth service
fastapi-backend/app/services/auth_service.py - User service
fastapi-backend/app/services/user_service.py - Token and role guard
fastapi-backend/app/dependencies/auth_dependency.py - User repository
fastapi-backend/app/repositories/user_repository.py - User records
fastapi-backend/app/models/users_model.py - Database sessions
fastapi-backend/app/config/database.py
Companion Features
- Chat service
fastapi-backend/app/services/chat_service.py - Soulmate service
fastapi-backend/app/services/soulmate_service.py - Language model integration
fastapi-backend/app/services/llm_service.py
Memory Processing
- Memory service
fastapi-backend/app/services/memory_service.py - Memory worker
fastapi-backend/app/workers/memory_worker.py - Embedding service
fastapi-backend/app/services/embedding_service.py - Memory retrieval
fastapi-backend/app/services/memory_retrieval_service.py - Memory repository
fastapi-backend/app/repositories/memory_retrieval_repository.py - Redis connection
fastapi-backend/app/config/redis.py
Other components
- App user
Connections 27
- App user → Login and signup: uses
- App user → Profile onboarding: configures profile
- App user → Chat screen: chats
- API application → Auth routes: registers
fastapi-backend/app/main.py - API application → User routes: registers
fastapi-backend/app/main.py - API application → Chat routes: registers
fastapi-backend/app/main.py - API application → Soulmate routes: registers
fastapi-backend/app/main.py - API application → Memory worker: starts
fastapi-backend/app/main.py - Auth routes → Auth service: calls
fastapi-backend/app/routers/auth_router.py - Auth routes → User service: calls
fastapi-backend/app/routers/auth_router.py - User routes → User service: calls
fastapi-backend/app/routers/user_router.py - User routes → Token and role guard: requires identity
fastapi-backend/app/routers/user_router.py - Chat routes → Chat service: calls
fastapi-backend/app/routers/chat_router.py - Soulmate routes → Soulmate service: calls
fastapi-backend/app/routers/soulmate_router.py - Token and role guard → User repository: looks up user
fastapi-backend/app/dependencies/auth_dependency.py - Token and role guard → Database sessions: gets session
- Auth service → User repository: accesses users
fastapi-backend/app/services/auth_service.py - Auth service → Database sessions: uses session
- User service → User repository: accesses users
fastapi-backend/app/services/user_service.py - User repository → User records: queries
fastapi-backend/app/repositories/user_repository.py - User records → Database sessions: uses base
fastapi-backend/app/models/users_model.py - Memory worker → Memory service: processes memories
fastapi-backend/app/workers/memory_worker.py - Memory worker → Redis connection: reads pending keys
fastapi-backend/app/workers/memory_worker.py - Memory worker → Database sessions: opens session
fastapi-backend/app/workers/memory_worker.py - Memory retrieval → Embedding service: generates vectors
fastapi-backend/app/services/memory_retrieval_service.py - Memory retrieval → Memory repository: retrieves memories
fastapi-backend/app/services/memory_retrieval_service.py - Memory repository → Database sessions: queries database