How jingyi012/bloom works
Bloom is a private, delayed-sharing diary: members create sealed circles, write entries for selected circles, and share the resulting timeline after each circle blooms. The mobile app also supports circle invitations and archiving, calendar and profile views, photos, reactions, and comments. The graph follows the documented mobile/API/PostgreSQL architecture and sampled service calls; some controller and screen wiring is inferred only at the documented feature level, so uncertain internal links are omitted.
Main entry points: client.ts API client · BloomDbContext.cs Bloom database · EfEntryService.cs Entry service · WriteScreen.tsx Entry composer
Components 21
Mobile app
- Diary and circle screens
apps/mobile/src/features - Entry composer
apps/mobile/src/features/write/WriteScreen.tsx - Local drafts
apps/mobile/src/features/write/draftStorage.ts - Mobile session
apps/mobile/src/auth/AuthProvider.tsx - API client
apps/mobile/src/api/client.ts
API and auth
- Authentication endpoints
backend/src/Bloom.Api/Controllers/AuthController.cs - Circle endpoints
backend/src/Bloom.Api/Controllers/CirclesController.cs - Entry endpoints
backend/src/Bloom.Api/Controllers/EntriesController.cs - Timeline endpoints
backend/src/Bloom.Api/Controllers/TimelineController.cs - Media endpoints
backend/src/Bloom.Api/Controllers/MediaController.cs - Session token service
backend/src/Bloom.Api/Security/SessionTokenService.cs
Domain services
- Circle service
backend/src/Bloom.Infrastructure/Circles/EfCircleService.cs - Entry service
backend/src/Bloom.Infrastructure/Entries/EfEntryService.cs - Google user service
backend/src/Bloom.Infrastructure/Identity/EfGoogleUserService.cs - Media service
backend/src/Bloom.Infrastructure/Media/EfMediaService.cs - Entry protection
backend/src/Bloom.Infrastructure/Security/DataProtectionEntryProtector.cs
Persistence and media
- Bloom database
backend/src/Bloom.Infrastructure/Persistence/BloomDbContext.cs - Local image files
backend/src/Bloom.Infrastructure/Media/LocalImageStorage.cs
Other components
- Diary member
- Google sign-in
- PostgreSQL
Connections 27
- Diary member → Diary and circle screens: uses
- Diary member → Entry composer: composes
- Entry composer → Local drafts: saves drafts
- Diary and circle screens → API client: requests data
- Entry composer → API client: submits entries
- Mobile session → API client: uses session
- Mobile session → Google sign-in: signs in with
- API client → Authentication endpoints: calls
- API client → Circle endpoints: calls
- API client → Entry endpoints: calls
- API client → Timeline endpoints: calls
- API client → Media endpoints: calls
- Authentication endpoints → Google user service: calls
- Authentication endpoints → Session token service: issues sessions
- Circle endpoints → Circle service: calls
- Entry endpoints → Entry service: calls
- Timeline endpoints → Entry service: reads timeline
- Media endpoints → Media service: calls
- Circle service → Bloom database: reads and writes
- Entry service → Bloom database: reads and writes
- Entry service → Local image files: stores images
- Entry service → Entry protection: protects text
- Media service → Bloom database: stores metadata
- Media service → Local image files: stores files
- Google user service → Bloom database: reads and writes
- Session token service → Bloom database: persists sessions
- Bloom database → PostgreSQL: persists data