chore: initialize repo
This commit is contained in:
83
README.md
Normal file
83
README.md
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# SkyTalk API (api.skytalk.app)
|
||||||
|
|
||||||
|
SkyTalk is a backend service designed to power an "AI for Thought" application.
|
||||||
|
It functions as an intelligent, conversational agent that interviews a user to
|
||||||
|
explore and solidify their nascent ideas. The conversation transcript is then
|
||||||
|
synthesized into a structured, semantically-linked knowledge base, styled after
|
||||||
|
the Zettelkasten method.
|
||||||
|
|
||||||
|
This MVP is an API-only service, providing the core engine for elicitation,
|
||||||
|
synthesis, and connection, without a frontend interface.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
The system is designed as a monolithic Python application using FastAPI, built
|
||||||
|
for asynchronous performance. It follows a clean, three-layer architecture: API,
|
||||||
|
Services, and Data.
|
||||||
|
|
||||||
|
```d2
|
||||||
|
# SkyTalk API Architecture (MVP)
|
||||||
|
direction: down
|
||||||
|
|
||||||
|
# External APIs
|
||||||
|
ExternalAPIs: {
|
||||||
|
shape: cloud
|
||||||
|
style.fill: "#DB4437"
|
||||||
|
Gemini: "Google Gemini API (2.5 Pro/Flash & Embeddings)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main Application Container
|
||||||
|
SkyTalkAPI: {
|
||||||
|
shape: rectangle
|
||||||
|
style.fill: "#E3F2FD"
|
||||||
|
direction: right
|
||||||
|
|
||||||
|
# API Layer
|
||||||
|
API: {
|
||||||
|
shape: package
|
||||||
|
label: "API Layer (FastAPI)"
|
||||||
|
Endpoints: "RPC Endpoints"
|
||||||
|
BackgroundTasks: "Background Tasks"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Services Layer (Orchestration and Business Logic)
|
||||||
|
Services: {
|
||||||
|
shape: package
|
||||||
|
SessionService: "Session Orchestration"
|
||||||
|
InterviewerAgent: "Interviewer Agent (RAG)"
|
||||||
|
SynthesizerAgent: "Synthesizer Agent"
|
||||||
|
VectorService: "Vector Service"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Data Layer
|
||||||
|
Data: {
|
||||||
|
shape: package
|
||||||
|
label: "Data Layer (Async)"
|
||||||
|
Repositories: "Session/Note Repositories"
|
||||||
|
SQLite: {
|
||||||
|
shape: database
|
||||||
|
label: "Metadata (SQLite/SQLModel)"
|
||||||
|
}
|
||||||
|
ChromaDB: {
|
||||||
|
shape: database
|
||||||
|
label: "Vector Store (ChromaDB)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Connections
|
||||||
|
API.Endpoints -> Services.SessionService
|
||||||
|
API.BackgroundTasks -> Services.SessionService: "Trigger Synthesis"
|
||||||
|
Services.SessionService -> Services.InterviewerAgent
|
||||||
|
Services.SessionService -> Services.SynthesizerAgent
|
||||||
|
Services.InterviewerAgent -> Services.VectorService: "RAG Retrieval"
|
||||||
|
Services.SynthesizerAgent -> Services.VectorService: "Indexing/Neighbors"
|
||||||
|
Services.SessionService -> Data.Repositories
|
||||||
|
Services.VectorService -> Data.ChromaDB
|
||||||
|
Data.Repositories -> Data.SQLite
|
||||||
|
}
|
||||||
|
|
||||||
|
# Connections to External APIs
|
||||||
|
SkyTalkAPI.Services -> ExternalAPIs.Gemini
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user