Skip to content

Commit deb0e54

Browse files
committed
Merge branch 'dev' into delete-child-comments
2 parents a852848 + 65ddcff commit deb0e54

File tree

9 files changed

+44
-66
lines changed

9 files changed

+44
-66
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ We also made available a [Postman collection](https://grupo-8-0813.postman.co/wo
3333

3434
## 📦 Application Architecture
3535

36-
![application architecture](./docs/images/architecture.png)
36+
![application architecture](./docs/images/application-architecture.png)
3737

3838
## 🔍 Development Phases
3939

150 KB
Loading

docs/images/architecture.png

-169 KB
Binary file not shown.
215 KB
Loading

docs/phases/phase10.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
## 🔍 Phase 10 - Final Report
22

3-
TODO
3+
The project final report can be found [here](../report/threadit_grupo8_final_report.pdf).

docs/phases/phase3.md

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,60 +3,42 @@
33
### 📌 Functional Requirements
44

55
#### 🌍 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.
1811

1912
#### 📝 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.
3218

3319
#### 💬 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.
4325

4426
#### ⬆️ 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.
4830

4931
#### 🔎 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.
5637

5738
#### 🔗 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.
5941

6042
### 📦 Application Architecture
6143

62-
![Application architecture](../images/architecture.png)
44+
![Application architecture](../images/application-architecture.png)

docs/phases/phase6.md

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
## 1. Planned Improvements
44

5-
### 1.1 Ingress/API Gateway Configuration
5+
### 1.1 API Gateway Configuration
66

7-
Currently, we are using Traefik with a basic IngressRoute and minimal configuration. To improve flexibility and take advantage of Kubernetes-native features, we will explore two alternatives:
8-
9-
- **Kubernetes Ingress with Traefik:** This allows using standard Ingress resources with Traefik's CRDs for fine-grained traffic routing, TLS termination, and middleware chaining.
10-
11-
- **Kubernetes Gateway API:** A more expressive and extensible alternative to the Ingress API, which decouples traffic routing from infrastructure. We'll experiment with it alongside Traefik's Gateway API support to modernize our networking layer.
7+
The application will use a Traefik instance installed and configured via Helm.
8+
An IngressRoute and some Middlewares will be defined to ensure that Traefik routes the incoming requests to the gRPC Gateway.
129

1310
### 1.2 Liveness and Readiness Probes
1411
To improve fault tolerance and enable better self-healing behavior in Kubernetes, we will define:
@@ -22,9 +19,6 @@ We will benchmark services to determine ideal values for:
2219
* **CPU and memory resource requests/limits**.
2320
* **Horizontal Pod Autoscaling (HPA)** thresholds based on real traffic patterns to ensure scalability.
2421

25-
### 1.4 Authentication & Authorization with Keycloak
26-
We will introduce authentication and authorization by integrating [Keycloak](https://www.keycloak.org/) as the Identity Provider. Keycloak will manage user sessions, tokens (OIDC) and Role-Based Access Control (RBAC) across the services.
27-
2822
### 1.5 Secret management
2923

3024
To further improve security we will explore Google Secret Manager for managing sensitive configuration data such as API keys, credentials and tokens. This approach provides:
@@ -49,18 +43,20 @@ A continuous integration and deployment (CI/CD) pipeline will be implemented usi
4943
| --------------- | -------------------------------------------------------------------------- |
5044
| Scalability | Use HPA to autoscale services based on CPU usage. |
5145
| Availability | Configure liveness/readiness probes and multiple replicas where necessary. |
52-
| Security | Enforce authentication and authorization via Keycloak. |
5346
| Maintainability | Implement CI/CD for consistent, automated deployments. |
5447

5548
## 3. Deployment Plan
56-
| Step | Tool/Technology |
57-
| ------------------------------- | --------------------- |
58-
| Containerization | Docker |
59-
| Cluster Orchestration | Kubernetes (GKE) |
60-
| Ingress Management | GKE Native Ingress |
61-
| Identity and Access Management | Keycloak (OIDC, RBAC) |
62-
| CI/CD | GitHub Actions + GKE |
63-
| Autoscaling | Kubernetes HPA |
49+
| Step | Tool/Technology |
50+
| ------------------------------- |----------------------------|
51+
| Containerization | Docker |
52+
| Cluster Orchestration | Kubernetes (GKE) |
53+
| Ingress Management | Traefik Ingress Controller |
54+
| CI/CD | GitHub Actions |
55+
| Autoscaling | Kubernetes HPA |
6456

6557
## 4. Architecture Diagram
66-
![application architecture](../images/architecture.png)
58+
![Application architecture](../images/application-architecture.png)
59+
60+
## 5. Technical Architecture
61+
62+
![Technical architecture](../images/technical-architecture.png)

docs/phases/phase9.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
## 🔍 Phase 9 - System Testing
22

3-
TODO
3+
This phase can be found under the chapter 8 of the final [report](../report/threadit_grupo8_final_report.pdf).
751 KB
Binary file not shown.

0 commit comments

Comments
 (0)