|
3 | 3 | ### 📌 Functional Requirements |
4 | 4 |
|
5 | 5 | #### 🌍 Communities |
6 | | -- **FR3.1:** The system should allow users to retrieve a list of communities. |
7 | | -- **FR3.2:** The system should allow users to retrieve a list of communities they are members of. |
8 | | -- **FR3.3:** The system should allow users to retrieve a list of communities another user is a member of. |
9 | | -- **FR3.4:** The system should allow users to view the details of a specific community, including its name, description, icon, owner, and creation date. |
10 | | -- **FR3.5:** The system should allow users to create a new community by providing a name and description. |
11 | | -- **FR3.6:** The system should allow community owners to update the community name. |
12 | | -- **FR3.7:** The system should allow community owners to update the community description. |
13 | | -- **FR3.8:** The system should allow community owners to delete the community. |
14 | | -- **FR3.9:** The system should allow community owners to update the community icon by uploading an image file. |
15 | | -- **FR3.10:** The system should allow users to join a community. |
16 | | -- **FR3.11:** The system should allow users to leave a community. |
17 | | -- **FR3.12:** The system should allow users to retrieve a list of members in a specific community. |
| 6 | +- The system should allow to list all communities, optionally by name, offset and limit. |
| 7 | +- The system should allow to create a new community with a given name. |
| 8 | +- The system should allow to get a community by id, with its name and number of threads. |
| 9 | +- The system should allow to update a community's name or number of threads by id. |
| 10 | +- The system should allow to delete a community by id. |
18 | 11 |
|
19 | 12 | #### 📝 Threads |
20 | | -- **FR4.1:** The system should allow users to retrieve a list of threads. |
21 | | -- **FR4.2:** The system should allow users to retrieve a list of threads in a specific community. |
22 | | -- **FR4.3:** The system should allow users to retrieve a list of threads they have published. |
23 | | -- **FR4.4:** The system should allow users to retrieve a list of threads they have published in a specific community. |
24 | | -- **FR4.5:** The system should allow users to retrieve a list of threads published by another user. |
25 | | -- **FR4.6:** The system should allow users to retrieve a list of threads published by another user in a specific community. |
26 | | -- **FR4.7:** The system should allow users to view the details of a specific thread, including its title, content, author, creation date, update date, and associated community. |
27 | | -- **FR4.8:** The system should allow users to create a new thread by providing a title, content, and selecting a community. |
28 | | -- **FR4.9:** The system should allow users to update the title of a thread they have published. |
29 | | -- **FR4.10:** The system should allow users to update the content of a thread they have published. |
30 | | -- **FR4.11:** The system should allow users to delete a thread they have published. |
31 | | -- **FR4.12:** The system should allow community owners to delete any thread in their community. |
| 13 | +- The system should allow to list all threads, optionally by community id, title, offset, limit and sort order. |
| 14 | +- The system should allow to create a new thread with a title and content in a specific community. |
| 15 | +- The system should allow to get a thread by id, with its title, content, community id, upvotes, downvotes and number of comments. |
| 16 | +- The system should allow to update a thread's title, content, votes or number of comments by id. |
| 17 | +- The system should allow to delete a thread by id. |
32 | 18 |
|
33 | 19 | #### 💬 Comments |
34 | | -- **FR5.1:** The system should allow users to retrieve a list of comments for a specific thread. |
35 | | -- **FR5.2:** The system should support pagination for comment retrieval. |
36 | | -- **FR5.3:** The system should allow authenticated users to create a new comment for a thread. |
37 | | -- **FR5.4:** The system should allow users to retrieve the details of a specific comment. |
38 | | -- **FR5.5:** The system should allow authenticated users to update their own comments. |
39 | | -- **FR5.6:** The system should enforce authorization checks to prevent users from modifying or deleting comments they do not own. |
40 | | -- **FR5.7:** The system should allow authenticated users to delete their own comments. |
41 | | -- **FR5.8:** The system should allow users to reply to existing comments. |
42 | | -- **FR5.9:** The system should ensure that replies are correctly linked to their parent comment. |
| 20 | +- The system should allow to list all comments, optionally by thread id, offset, limit and sort order. |
| 21 | +- The system should allow to create a new comment with content in a thread or another comment. |
| 22 | +- The system should allow to get a comment by id, with its content, upvotes, downvotes, parent id, parent type (thread or comment) and number of replies. |
| 23 | +- The system should allow to update a comment's content, votes or number of replies by id. |
| 24 | +- The system should allow to delete a comment by id. |
43 | 25 |
|
44 | 26 | #### ⬆️ Voting System |
45 | | -- **FR6.1:** The system should allow authenticated users to upvote or downvote a thread. |
46 | | -- **FR6.2:** The system should allow authenticated users to upvote or downvote a comment. |
47 | | -- **FR6.3:** The system should allow authenticated users to change or remove their vote on a thread or comment. |
| 27 | +- The system should allow to upvote or downvote a thread. |
| 28 | +- The system should allow to upvote or downvote a comment. |
| 29 | +- The system should allow to change or remove vote on a thread or comment. |
48 | 30 |
|
49 | 31 | #### 🔎 Search & Discovery |
50 | | -- **FR9.1:** The system should allow users to search for threads by keyword. |
51 | | -- **FR9.2:** The system should allow users to search for communities by keyword. |
52 | | -- **FR9.3:** The system should allow users to search for other users by keyword. |
53 | | -- **FR9.4:** The system should allow users to search all content by keyword. |
54 | | -- **FR9.5:** The system should support pagination for search results. |
55 | | -- **FR9.6:** The system should allow users to sort search results by date or popularity. |
| 32 | +- The system should allow to search for threads by keyword. |
| 33 | +- The system should allow to search for communities by keyword. |
| 34 | +- The system should allow to search for both by keyword. |
| 35 | +- The system should support pagination (offset and limit) for searches. |
| 36 | +- The system should support sort order () for searches. |
56 | 37 |
|
57 | 38 | #### 🔗 Microservices Communication |
58 | | -- **FR10.1:** The system should enforce that all inter-service communication between microservices uses gRPC. |
| 39 | +- The system should enforce that all inter-service communication between microservices uses gRPC. |
| 40 | +- The system should expose a REST API for external clients to interact with the system. |
59 | 41 |
|
60 | 42 | ### 📦 Application Architecture |
61 | 43 |
|
62 | | - |
| 44 | + |
0 commit comments