How fey888/diary-ai-app works
Diary AI is a NestJS backend where clients authenticate, create and manage private paginated diaries, then request or retrieve a structured AI analysis. The analysis service checks ownership, reuses saved results, coordinates a per-diary lock, calls the AI service, and saves the result. The graph preserves account/profile, diary, and analysis stages plus their persistence and OpenAI integration. Edges follow excerpts or README documentation; some runtime wiring and unsampled implementations are represented only at the documented subsystem level.
Main entry points: app.module.ts NestJS Runtime · diary.service.ts Diary CRUD and Lock · diary_analysis.service.ts Analysis Orchestration · auth.controller.ts Auth Endpoints
Components 17
Identity and Users
- Auth Endpoints
src/auth/auth.controller.ts - JWT and Auth
src/auth/auth.service.ts - Token Validation
src/auth/strategy/access-token.strategy.ts - User Endpoints
src/users/users.controller.ts - User Profiles
src/users/users.service.ts - User Records
src/users/entities/user.entity.ts
Diary Management
- Diary Endpoints
src/diary/diary.controller.ts - Diary CRUD and Lock
src/diary/diary.service.ts - Diary Records
src/diary/entities/diary.entity.ts
AI Analysis
- Analysis Endpoints
src/diary_analysis/diary_analysis.controller.ts - Analysis Orchestration
src/diary_analysis/diary_analysis.service.ts - Analysis Records
src/diary_analysis/entities/diary_analysis.entity.ts - OpenAI Client
src/ai/ai.service.ts
API Runtime
- NestJS Runtime
src/app.module.ts
Other components
- Client
- OpenAI API
- PostgreSQL
Connections 23
- Client → Auth Endpoints: signs up or in
src/auth/auth.controller.ts - Auth Endpoints → JWT and Auth: delegates auth
src/auth/auth.controller.ts - JWT and Auth → User Profiles: looks up and updates
src/auth/auth.service.ts - Auth Endpoints → Token Validation: guards refresh requests
src/auth/auth.controller.ts - Client → User Endpoints: manages profile
src/users/users.controller.ts - User Endpoints → User Profiles: delegates profile
src/users/users.controller.ts - User Profiles → PostgreSQL: reads and writes
README.md - Client → Diary Endpoints: manages diaries
src/diary/diary.controller.ts - Diary Endpoints → Diary CRUD and Lock: delegates CRUD
src/diary/diary.controller.ts - Diary CRUD and Lock → User Profiles: resolves owner
src/diary/diary.service.ts - Diary CRUD and Lock → PostgreSQL: reads and writes
README.md - Client → Analysis Endpoints: requests analysis
src/diary_analysis/diary_analysis.controller.ts - Analysis Endpoints → Analysis Orchestration: delegates analysis
src/diary_analysis/diary_analysis.controller.ts - Analysis Orchestration → Diary CRUD and Lock: checks and locks diary
src/diary_analysis/diary_analysis.service.ts - Analysis Orchestration → OpenAI Client: analyzes diary text
src/diary_analysis/diary_analysis.service.ts - Analysis Orchestration → PostgreSQL: loads and saves results
src/diary_analysis/diary_analysis.service.ts - Diary CRUD and Lock → PostgreSQL: stores diary records
README.md - OpenAI Client → OpenAI API: requests structured analysis
README.md - NestJS Runtime → Auth Endpoints: registers auth module
src/app.module.ts - NestJS Runtime → User Endpoints: registers users module
src/app.module.ts - NestJS Runtime → Diary Endpoints: registers diary module
src/app.module.ts - NestJS Runtime → Analysis Endpoints: registers analysis module
src/app.module.ts - NestJS Runtime → PostgreSQL: configures TypeORM
src/app.module.ts