# project-ln ## Description: For writers: - A tool for your works to be written and/or published! For readers: - See an awesome stories from our writers! ## Stack - React - TanStackRouter - ChakraUI - ?styled-components - apoollo gql - Express - Prisma + MariaDB - Vite ## Structure: ### sketch - outdated ``` Home --> Read -> |-> Stories(r/o + p/o) -> Feedback(r/o) | |-> Forums(r/o) | |-> Login -> |-> Profile |-> Write -> List -> Editor |-> Forums -> |-> Writer -> Threads(w) -> Thread -> Post -> Comments | |-> Reader -> Threads(r) -> Thread -> Post -> Comments |-> Messaging |-> Read(bookmarking) r/o - read only p/o - public only ``` ``` Home - / Log In - /login Register - /register Browse - /browse Search - /search Story - /story/:story_id Forum - /forum Thread - /forum/:thread_id Post - /forum/:thread_id/:post_id Profile - /profile/:username Messages - /messages/:message_id --- Contacts - /contacts ``` ### sketch `[a] - authorized` `[mv] - multiple view` `(r-w-o) - reader/writer/others` ``` |-> Login |-> Register |-> Forgot password |-> Guest | v Home --> Read --> [mv] Stories/Search -> Story --> [mv] Chapters -> Chapter -> Chapter comments -> [a] Comment | | |-> Author -> Author profile | | |-> Feedback -> [mv] Story Comments -> [a] Comment | | | | | |-> [mv] Forums -> [mv] Threads -> Thread | |-> [a] User profile --> Settings |-> Messages |-> Notifications |-> Storage -> (-s.storage-) (-s.storage-) -> [mv] Folders -> Folder --> Story -> editor.Story -> [mv] Chapters -> Chapter -> Publish |-> World -> editor.Worldbuilding -> [?] -> Publish |-> Notes -> editor.Notes -> [mv] Notes -> Note -> Publish ``` ``` Home / --- Login /login Register /register Forgot passwd /forgot --- Stories /story Story /story/:story_id Chapter /story/:story_id/:chapter_id Comment /story/:story_id/:chapter_id/:comment_id --- Forums /forum Threads /forum/:forum_id Thread /forum/:forum_id/:thread_id Comment /forum/:forum_id/:thread_id/:comment_id --- Profile|User /user/:user_id Settings /settings --- Conversations /messages Chat /messages/user/:user_id Chat message /messages/user/:user_id/:message_id Group chat /messages/group/:group_id Group message /messages/group/:group_id/:message_id --- Notifications /notifications --- Storage /storage Folder /storage/:folder_id Story /storage/:folder_id/story/:story_id World /storage/:folder_id/world/:world_id Notes /storage/:folder_id/notes/:notes_id Note /storage/:folder_id/notes/:notes_id/:note_id Q: Should we unify the Storage Story/World/Notes with their published counterparts? ``` ### sketch - db ``` Users id: Primary key. username: Unique identifier. email: User email. password: Encrypted password. Messages id: Primary key. sender_id: Foreign key referencing Users(id). receiver_id: Foreign key referencing Users(id) (for user-to-user messaging). group_id: Foreign key referencing Groups(id) (for group messaging, nullable for direct messages). content: Text or reference to file/attachment. created_at: Timestamp of message creation. read_at: Timestamp when the message was read (nullable). Groups (Optional) id: Primary key. name: Group name. created_by: Foreign key referencing Users(id). ``` ## User Strories (free-form): - Users/Writers - what should differentiate them? Writer has a published or a WIP unpublished work, while reader has only a stories that they read? ## User Stories: 1. [ ] Provide a platform for users to read&write&share their stories 2. [ ] Add a *public* page with service updates (gallery view) 3. [ ] Add a *public* page section for browsing stories/users/threads 4. [ ] Provide an easy navigation 5. [ ] Make a header section 6. [ ] Make a title with redirect to the *home* page 7. [ ] Make a login button with pop-up menu inside the header 8. [ ] Add a login page 9. [ ] Add a registration button in a pop-up menu and on the login page 10. [ ] Add a registration page 11. [ ] Replace login section in the header with the relevant user login+avatar 12. [ ] Make a header *user info* section to open a pop-up menu 13. [ ] Make a log out button in the *user info* pop-up menu 14. [ ] Make a browse section in the header 15. [ ] Add a *browse* page 16. [ ] Add a search section in the header 17. [ ] Make a *search* page 1. [ ] Make a user's profile page 1. [ ] Make a *user info* section to lead to user's profile page 1. [ ] Make a *user settings* page 1. [ ] Add user settings page link in the header *user info* pop-up 1. [ ]