How xinrea/joiask works
JoiAsk is a public question-box product with a separate administration interface and Go API. The main flow is visitors browsing or submitting tagged questions, optionally with images; administrators manage questions and site settings. Supporting branches include member registration through Bilibili follow verification, live question updates, and image storage. The graph uses documented routes and sampled controller behavior; frontend-to-API links reflect the documented API boundary, while uncertain internal wiring is omitted.
Main entry points: router.go API router · database.go Application database · question_controller.go Question workflows · api.ts Web API client
Components 21
Web experience
- Question site
frontend/src/app/page.tsx - Search and tags
frontend/src/app/search/page.tsx - Admin dashboard
admin/src/app/dashboard/page.tsx - Web API client
frontend/src/lib/api.ts - Live updates
frontend/src/hooks/useWebSocket.ts
API and workflows
- API router
internal/router/router.go - Question workflows
internal/controller/question_controller.go - Tag management
internal/controller/tag_controller.go - Site settings
internal/controller/config_controller.go - Member management
internal/controller/member_controller.go
Accounts and verification
- Member accounts
internal/controller/account_controller.go - Verification setup
internal/controller/bilibili_verification_account_controller.go - Follow verification
internal/verification/worker.go - Bilibili client
internal/bilibili/client.go
Persistence and integrations
- Application database
internal/database/database.go - Image storage selector
internal/storage/storage.go - Local storage
internal/storage/local.go - OSS storage
internal/storage/oss.go
Other components
- Visitor
- Administrator
- Bilibili service
Connections 27
- Visitor → Question site: browses and submits
- Visitor → Search and tags: searches and filters
- Administrator → Admin dashboard: manages site
- Question site → Web API client: requests data
- Search and tags → Web API client: requests results
- Admin dashboard → Web API client: requests changes
- Web API client → API router: calls API
- API router → Question workflows: dispatches questions
- API router → Tag management: dispatches tags
- API router → Site settings: dispatches settings
- API router → Member accounts: dispatches accounts
- API router → Verification setup: dispatches verification setup
- API router → Member management: dispatches members
- Question workflows → Application database: reads and writes
- Tag management → Application database: reads and writes
- Site settings → Application database: reads and writes
- Member accounts → Application database: reads and writes
- Member management → Application database: reads and writes
- Question workflows → Image storage selector: uploads and deletes
- Image storage selector → Local storage: selects local
- Image storage selector → OSS storage: selects OSS
- Question workflows → Live updates: broadcasts updates
- Verification setup → Bilibili client: validates account
- Follow verification → Application database: loads and updates
- Follow verification → Bilibili client: checks followers
- Bilibili client → Bilibili service: requests account data
- Member management → Bilibili client: fetches profiles