@@ -69,10 +69,168 @@ The frontend can be run with:
6969npm run dev
7070```
7171
72+ ## User Interface Steps
73+
74+ ### 1. Authentication
75+ - ** Login Page** : Access via http://localhost (or http://localhost/login )
76+ - Enter username/email and password
77+ - Click "Login" button
78+ - On success, redirects to dashboard
79+ - On failure, shows error message
80+
81+ - ** Register Page** : Access via http://localhost/register
82+ - Fill in registration form (username, email, password, first name, last name)
83+ - Click "Register" button
84+ - On success, redirects to login page
85+ - On failure, shows validation errors
86+
87+ ### 2. Dashboard
88+ - Access via http://localhost/dashboard
89+ - Shows overview widgets:
90+ - Total projects count
91+ - Total issues count (by status)
92+ - Recent activity
93+ - Quick navigation to projects and issues
94+
95+ ### 3. Projects Management
96+ - Access via http://localhost/projects
97+ - ** View Projects** : List of all projects with pagination
98+ - ** Create Project** : Click "New Project" button
99+ - Fill project form (key, name, description)
100+ - Click "Create" button
101+ - ** Edit Project** : Click edit icon on project row
102+ - Modify project details
103+ - Click "Update" button
104+ - ** Delete Project** : Click delete icon on project row
105+ - Confirm deletion in modal dialog
106+ - ** Project Details** : Click on project name
107+ - Shows project overview and member list
108+ - Manage project members (add/remove users)
109+
110+ ### 4. Issues Management
111+ - Access via http://localhost/issues
112+ - ** View Issues** : List of all issues with filtering and pagination
113+ - Filter by project, status, priority, assignee
114+ - Search by key or summary
115+ - ** Kanban Board** : Switch to board view for visual workflow management
116+ - Drag and drop issues between status columns (TODO, IN_PROGRESS, IN_REVIEW, DONE)
117+ - ** Create Issue** : Click "New Issue" button
118+ - Fill issue form (project, summary, description, type, priority, assignee)
119+ - Click "Create" button
120+ - ** Edit Issue** : Click on issue key or edit icon
121+ - Modify issue details
122+ - Click "Update" button
123+ - ** Issue Detail** : Click on issue key in list or board
124+ - View full issue details
125+ - Add comments
126+ - Upload attachments
127+ - View activity history
128+ - Change status via workflow transitions
129+
130+ ### 5. Profile Management
131+ - Access via http://localhost/profile (via user dropdown in header)
132+ - View and edit profile information
133+ - Change password
134+ - Manage notification preferences
135+
136+ ### 6. Admin Panel
137+ - Access via http://localhost/admin (requires ADMIN role)
138+ - User management:
139+ - List all users
140+ - Create/edit/delete users
141+ - Assign roles to users
142+ - System monitoring:
143+ - View service health status
144+ - Check API response times
145+ - Monitor error rates
146+
147+ ## API Details
148+
149+ ### API Gateway (Port 8080)
150+ - Entry point for all client requests
151+ - Routes to appropriate microservices based on path
152+ - Handles JWT authentication and authorization
153+ - Implements rate limiting and request logging
154+
155+ ### Authentication Service (Port 8081)
156+ ** Base URL** : ` http://localhost:8081/api/auth `
157+
158+ | Method | Endpoint | Description | Request Body | Response |
159+ | --------| ----------| -------------| --------------| ----------|
160+ | POST | ` /login ` | Authenticate user and generate JWT tokens | ` { "usernameOrEmail": "string", "password": "string" } ` | ` { "accessToken": "string", "refreshToken": "string", "expiresIn": "int" } ` |
161+ | POST | ` /register ` | Register new user | ` { "username": "string", "email": "string", "password": "string", "firstName": "string", "lastName": "string" } ` | ` "User registered successfully" ` |
162+ | POST | ` /refresh ` | Refresh access token using refresh token | N/A (query param: ` refreshToken ` ) | ` { "accessToken": "string", "refreshToken": "string", "expiresIn": "int" } ` |
163+
164+ ### User Service (Port 8082)
165+ ** Base URL** : ` http://localhost:8082/api/users `
166+
167+ | Method | Endpoint | Description | Request Body | Response |
168+ | --------| ----------| -------------| --------------| ----------|
169+ | POST | ` / ` | Create new user | ` UserDTO ` | ` UserDTO ` |
170+ | GET | ` /{id} ` | Get user by ID | N/A | ` UserDTO ` |
171+ | GET | ` /username/{username} ` | Get user by username | N/A | ` UserDTO ` |
172+ | GET | ` /email/{email} ` | Get user by email | N/A | ` UserDTO ` |
173+ | GET | ` / ` | Get all users (paginated) | Query: ` page ` (int), ` size ` (int) | ` List<UserDTO> ` |
174+ | PUT | ` /{id} ` | Update user | ` UserDTO ` | ` UserDTO ` |
175+ | DELETE | ` /{id} ` | Delete user | N/A | ` 204 No Content ` |
176+ | GET | ` /exists/username/{username} ` | Check if username exists | N/A | ` boolean ` |
177+ | GET | ` /exists/email/{email} ` | Check if email exists | N/A | ` boolean ` |
178+
179+ ### Project Service (Port 8083)
180+ ** Base URL** : ` http://localhost:8083/api/projects `
181+
182+ | Method | Endpoint | Description | Request Body | Response |
183+ | --------| ----------| -------------| --------------| ----------|
184+ | POST | ` / ` | Create new project | ` ProjectDTO ` | ` ProjectDTO ` |
185+ | GET | ` /{id} ` | Get project by ID | N/A | ` ProjectDTO ` |
186+ | GET | ` /key/{key} ` | Get project by key | N/A | ` ProjectDTO ` |
187+ | GET | ` / ` | Get all projects (paginated) | Query: ` page ` (int), ` size ` (int) | ` List<ProjectDTO> ` |
188+ | PUT | ` /{id} ` | Update project | ` ProjectDTO ` | ` ProjectDTO ` |
189+ | DELETE | ` /{id} ` | Delete project | N/A | ` 204 No Content ` |
190+ | POST | ` /{projectId}/members ` | Add member to project | ` ProjectMemberDTO ` | ` ProjectMemberDTO ` |
191+ | DELETE | ` /{projectId}/members/{userId} ` | Remove member from project | N/A | ` 204 No Content ` |
192+ | GET | ` /{projectId}/members ` | Get all members of project | N/A | ` List<ProjectMemberDTO> ` |
193+ | GET | ` /user/{userId}/projects ` | Get projects for user | N/A | ` List<ProjectMemberDTO> ` |
194+
195+ ### Issue Service (Port 8084)
196+ ** Base URL** : ` http://localhost:8084/api/issues `
197+
198+ | Method | Endpoint | Description | Request Body | Response |
199+ | --------| ----------| -------------| --------------| ----------|
200+ | POST | ` / ` | Create new issue | ` IssueDTO ` | ` IssueDTO ` |
201+ | GET | ` /{id} ` | Get issue by ID | N/A | ` IssueDTO ` |
202+ | GET | ` /{key}/project/{projectId} ` | Get issue by key and project ID | N/A | ` IssueDTO ` |
203+ | GET | ` / ` | Get all issues (paginated) | Query: ` page ` (int), ` size ` (int) | ` List<IssueDTO> ` |
204+ | GET | ` /project/{projectId} ` | Get issues by project ID | N/A | ` List<IssueDTO> ` |
205+ | GET | ` /assignee/{assigneeId} ` | Get issues by assignee ID | N/A | ` List<IssueDTO> ` |
206+ | GET | ` /reporter/{reporterId} ` | Get issues by reporter ID | N/A | ` List<IssueDTO> ` |
207+ | PUT | ` /{id} ` | Update issue | ` IssueDTO ` | ` IssueDTO ` |
208+ | DELETE | ` /{id} ` | Delete issue | N/A | ` 204 No Content ` |
209+ | POST | ` /{issueId}/comments ` | Add comment to issue | ` CommentDTO ` | ` CommentDTO ` |
210+ | GET | ` /{issueId}/comments ` | Get comments for issue | N/A | ` List<CommentDTO> ` |
211+
212+ ### Notification Service (Port 8085)
213+ ** Base URL** : ` http://localhost:8085/api/notifications `
214+
215+ | Method | Endpoint | Description | Request Body | Response |
216+ | --------| ----------| -------------| --------------| ----------|
217+ | GET | ` / ` | Get notifications for current user (paginated) | Query: ` page ` (int), ` size ` (int), ` unreadOnly ` (boolean) | ` List<NotificationDTO> ` |
218+ | PUT | ` /{id}/read ` | Mark notification as read | N/A | ` NotificationDTO ` |
219+ | PUT | ` /read-all ` | Mark all notifications as read | N/A | ` 200 OK ` |
220+ | DELETE | ` /{id} ` | Delete notification | N/A | ` 204 No Content ` |
221+ | DELETE | ` / ` | Delete all notifications | N/A | ` 204 No Content ` |
222+
72223## Database
73224
74225The platform uses MySQL 8.0. The database schema is managed by Flyway migrations located in each service's ` src/main/resources/db/migration ` directory.
75226
227+ Each service has its own database schema:
228+ - ** auth-service** : users, roles, user_roles tables
229+ - ** user-service** : user_profiles table (extends auth users)
230+ - ** project-service** : projects, project_members tables
231+ - ** issue-service** : issue_types, issues, labels, issue_labels, issue_comments, issue_attachments, workflows, workflow_transitions tables
232+ - ** notification-service** : notifications table
233+
76234## API Documentation
77235
78236Once the services are running, you can access the Swagger UI for each service at:
@@ -89,6 +247,11 @@ To run tests for a service:
89247./mvnw test
90248```
91249
250+ To run frontend tests:
251+ ``` bash
252+ npm test
253+ ```
254+
92255## CI/CD
93256
94257The platform includes a GitHub Actions workflow for continuous integration and deployment. The workflow runs on every push to the main branch and includes:
0 commit comments