Skip to content

Commit a7eea20

Browse files
committed
fix
Deleted mock kafka Added password for db in env Added docker-compose Changed Readme
1 parent 0363153 commit a7eea20

6 files changed

Lines changed: 126 additions & 31 deletions

File tree

.env.dev

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ DB_HOST=mysql
22
DB_PORT=3306
33
DB_NAME=task-tracker
44

5+
MYSQL_ROOT_PASSWORD=password
6+
57
REDIS_HOST=redis
68
REDIS_PORT=6379
79

@@ -11,6 +13,7 @@ VAULT_TOKEN=root
1113
# SMTP
1214
MAIL_HOST=sandbox.smtp.mailtrap.io
1315
MAIL_PORT=2525
16+
1417
# Kafka
1518
KAFKA_BROKER=kafka:9092
1619
TRUSTED_KAFKA_PACKAGES=com.metarash.dto

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,5 @@ mysql_data
3737

3838
node_modules
3939
vault-init/init.sh
40-
Docker-compose.yml
4140
package.json
4241
package-lock.json

Docker-compose.yml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
networks:
2+
default:
3+
external:
4+
name: task-tracker-network
5+
6+
services:
7+
zookeeper:
8+
image: confluentinc/cp-zookeeper:7.5.0
9+
container_name: zookeeper
10+
environment:
11+
ZOOKEEPER_CLIENT_PORT: 2181
12+
ZOOKEEPER_TICK_TIME: 2000
13+
ports:
14+
- "2181:2181"
15+
16+
mysql:
17+
image: mysql:8.0
18+
container_name: mysql
19+
environment:
20+
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
21+
MYSQL_DATABASE: task-tracker
22+
ports:
23+
- "3306:3306"
24+
volumes:
25+
- ./mysql_data:/var/lib/mysql
26+
27+
kafka:
28+
image: confluentinc/cp-kafka:7.5.0
29+
container_name: kafka
30+
depends_on:
31+
- zookeeper
32+
environment:
33+
KAFKA_BROKER_ID: 1
34+
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
35+
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
36+
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
37+
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
38+
ports:
39+
- "9092:9092"
40+
41+
redis:
42+
image: redis:7
43+
container_name: redis
44+
restart: always
45+
ports:
46+
- "6379:6379"
47+
48+
vault:
49+
build: .
50+
container_name: vault
51+
ports:
52+
- "8200:8200"
53+
environment:
54+
VAULT_DEV_ROOT_TOKEN_ID: root
55+
VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
56+
cap_add:
57+
- IPC_LOCK
58+
59+
vault-init:
60+
image: hashicorp/vault:1.15.2
61+
container_name: vault-init
62+
entrypoint: [ "sh", "-c", "apk add curl jq --no-cache && /vault-init/init.sh" ]
63+
volumes:
64+
- ./vault-init:/vault-init
65+
depends_on:
66+
- vault
67+
restart: "no"
68+
69+
backend:
70+
build:
71+
context: ./task-tracker-backend
72+
ports:
73+
- "8080:8080"
74+
env_file:
75+
- .env.dev
76+
depends_on:
77+
- kafka
78+
- mysql
79+
- redis
80+
- vault-init
81+
environment:
82+
SPRING_CLOUD_VAULT_AUTHENTICATION: token
83+
SPRING_PROFILES_ACTIVE: docker
84+
85+
frontend:
86+
build:
87+
context: ./task-tracker-frontend
88+
container_name: task-tracker-frontend
89+
ports:
90+
- "80:80"
91+
env_file:
92+
- .env.dev
93+
depends_on:
94+
- backend
95+
environment:
96+
- NODE_ENV=production
97+
- NEXT_PUBLIC_API_URL=http://backend:8080
98+
99+
scheduler:
100+
build:
101+
context: ./task-tracker-scheduler
102+
env_file:
103+
- .env.dev
104+
depends_on:
105+
- vault-init
106+
107+
email-sender:
108+
build:
109+
context: ./task-tracker-email-sender
110+
env_file:
111+
- .env.dev
112+
depends_on:
113+
- vault-init
114+
115+
volumes:
116+
mysql_data:

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ build:
77
cd task-tracker-email-sender && mvn clean package -DskipTests
88
@echo "🛠️ Билдим scheduler..."
99
cd task-tracker-scheduler && mvn clean package -DskipTests
10+
@echo "🚀 Запускаем сервисы..."
11+
docker-compose up -d --build
1012

1113
run:
1214
@echo "🚀 Запускаем сервисы..."

README.md

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ Task Tracker is an enterprise-grade, modular task management system designed wit
1515
- 🔗 **REST API**: RESTful endpoints, DTO mapping, error handling, and API versioning.
1616
- 🚦 **Rate Limiting**: Integrated with Redis and Bucket4j for API abuse prevention.
1717
- 🐳 **Containerization**: Dockerized deployment, multi-module Maven build, and Docker Compose orchestration.
18-
89
18+
1919
---
2020

2121
## 🛠️ Technology Stack
2222

23-
- **Backend**: Java 17, Spring Boot, Spring Security, Spring Data JPA, Hibernate, Kafka, WebSocket (STOMP), Lombok, Spring Scheduling
24-
- **Frontend**: Next.js (React), TypeScript, STOMP.js, CSS
23+
- **Backend**: Java 17, Spring Boot, Spring Security, Hibernate, Kafka, WebSocket (STOMP), Spring Scheduling
24+
- **Frontend**: Next.js (React), TypeScript, STOMP.js, Sock.js, axios, CSS
2525
- **Microservices**: Spring Boot (Scheduler, Email Sender)
2626
- **Database**: MySQL
2727
- **Caching & Rate Limiting**: Redis, Bucket4j
@@ -59,18 +59,10 @@ make build
5959
docker-compose up --build
6060
```
6161

62-
### Manual Start
63-
- **Backend**: `cd task-tracker-backend && ./mvnw spring-boot:run`
64-
- **Frontend**: `cd task-tracker-frontend && npm install && npm run dev`
65-
- **Scheduler**: `cd task-tracker-scheduler && ./mvnw spring-boot:run`
66-
- **Email Sender**: `cd task-tracker-email-sender && ./mvnw spring-boot:run`
67-
68-
---
69-
7062
## 🔗 API & WebSocket Usage
7163

72-
- **REST API**: See `KafkaBackendListener`. for endpoint structure.
73-
- **WebSocket**: Connect to `/ws`, subscribe to `/user/queue/notifications` for real-time updates.
64+
- **REST API**: See controllers folder
65+
- **WebSocket**: See `KafkaBackendListener`. for endpoint structure. Connect to `/ws`, subscribe to `/user/{username}/topic/notifications` for real-time updates.
7466

7567
---
7668

task-tracker-scheduler/src/test/java/com/metarash/tasktrackerscheduler/config/KafkaMockConfig.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)