architecture.plantuml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. @startuml
  2. title "Application"
  3. left to right direction
  4. package "AppFlowy Application" {
  5. [User]
  6. }
  7. cloud "Supabase Server" {
  8. [RESTful Component]
  9. [Realtime Component]
  10. [Postgres DB]
  11. }
  12. database "LocalServer" {
  13. [Local Server Component]
  14. }
  15. cloud "AppFlowy Cloud Server" {
  16. [RESTful Component] as [AppFlowy RESTful Component]
  17. [Realtime Component] as [AppFlowy Realtime Component]
  18. [Postgres DB] as [AppFlowy Postgres DB]
  19. }
  20. User --> [AppFlowy Application]
  21. [AppFlowy Application] --> [Local Server Component] : Connect
  22. [AppFlowy Application] --> [RESTful Component] : RESTful API Communication
  23. [AppFlowy Application] <..> [Realtime Component] : WebSocket Communication
  24. [AppFlowy Application] --> [AppFlowy RESTful Component] : RESTful API Communication
  25. [AppFlowy Application] <..> [AppFlowy Realtime Component] : WebSocket Communication
  26. @enduml
  27. @startuml
  28. left to right direction
  29. interface AppFlowyServer {
  30. + enable_sync(_enable: bool)
  31. + user_service(): Arc<dyn UserService>
  32. + folder_service(): Arc<dyn FolderCloudService>
  33. + database_service(): Arc<dyn DatabaseCloudService>
  34. + document_service(): Arc<dyn DocumentCloudService>
  35. + collab_storage(): Option<Arc<dyn RemoteCollabStorage>>
  36. }
  37. class SupabaseServer {
  38. + enable_sync(_enable: bool)
  39. + user_service(): Arc<dyn UserService>
  40. + folder_service(): Arc<dyn FolderCloudService>
  41. + database_service(): Arc<dyn DatabaseCloudService>
  42. + document_service(): Arc<dyn DocumentCloudService>
  43. + collab_storage(): Option<Arc<dyn RemoteCollabStorage>>
  44. }
  45. class SelfHostServer {
  46. + user_service(): Arc<dyn UserService>
  47. + folder_service(): Arc<dyn FolderCloudService>
  48. + database_service(): Arc<dyn DatabaseCloudService>
  49. + document_service(): Arc<dyn DocumentCloudService>
  50. + collab_storage(): Option<Arc<dyn RemoteCollabStorage>>
  51. }
  52. class LocalServer {
  53. + user_service(): Arc<dyn UserService>
  54. + folder_service(): Arc<dyn FolderCloudService>
  55. + database_service(): Arc<dyn DatabaseCloudService>
  56. + document_service(): Arc<dyn DocumentCloudService>
  57. + collab_storage(): Option<Arc<dyn RemoteCollabStorage>>
  58. }
  59. SupabaseServer -u-|> AppFlowyServer
  60. SelfHostServer -u-|> AppFlowyServer
  61. LocalServer -u-|> AppFlowyServer
  62. @enduml