Managify Project Documentation (OS)

Daily Project Updates

Project Calendar Animation

Project Roadmap

Project Roadmap Animation

Database Schema Overview

Entities:
  • Users: Manages user details like name, email, and project count.
  • Issues: Tracks project-related issues with title, status, priority, and tags.
  • Projects: Contains project data like name, description, and category.
  • Chat: Represents user-project group chats.
  • Messages: Stores chat messages with timestamps.
  • Comments: Tracks comments on issues.
Relationships:
  • Users relate to Issues and Comments.
  • Issues connect to Projects and Comments.
  • Chat links Messages, Users, and Projects.

Service Enhancements

25-30 October: Service Enhancements, Repository Optimization, DTO Refinements, and Controller Updates.

Improved multiple controllers and services (e.g., ChatService, ProjectService) for better functionality and performance.

API Endpoints

Endpoint Method Description
/auth/signup POST Register a new user
/auth/signing POST Log in a user
/api/users/profile GET Retrieve user profile
/api/projects POST Create a new project
/api/projects/{id} GET Get project by ID
/api/projects/{id} DELETE Delete project by ID
/api/projects GET Get all projects
/api/projects/search?keyword={keyword} GET Search projects by keyword
/api/issues POST Create a new issue
/api/issues/{id} GET Get issue by user ID
/api/issues/project/{projectId} GET Get all issues by project ID
/api/issues/{id}/status/{status} PUT Update issue status
/api/issues/{id}/status/{status} DELETE Delete issue status
/api/issues/{id}/assignee/{userId} PUT Assign an issue to a user
/api/projects/{id}/chat GET Retrieve chat by project ID
/api/messages/chat/{projectId} GET Get messages by project ID
/api/messages/send POST Send a new message
/api/comments/{id} GET Get a comment by ID
/api/projects/search GET Search projects by keyword (cached)
/api/projects GET Cached based on user ID, category, and tag filters.
/api/projects/{projectId} GET Cached by project ID.
/api/projects/{projectId} PATCH Updates associated cache entry on project update.
/api/projects/{projectId} DELETE Removes corresponding project data from cache upon deletion.

Unit Tests

Service and Repository Testing

Implemented unit tests for key services and repositories using Mockito:

  • Mocked repository methods to test service layer functionality.
  • Ensured the correctness of the user authentication process.
  • Tested project and issue management operations to validate business logic.
  • Utilized assertions to confirm expected outcomes for various scenarios.
  • Conducted edge case testing to ensure robust error handling.

The testing approach enhances reliability and helps maintain code quality throughout the development process.

Installation

Follow these steps to set up the Managify project on your local machine.

Prerequisites

  • Java Development Kit (JDK) 11 or higher
  • Apache Maven
  • PostgreSQL Database
  • An IDE (e.g., IntelliJ, Eclipse)

Clone the Repository


                    git clone https://github.com/doguhannilt/managify.git
                

Configure Application Properties

In the src/main/resources directory, locate application.properties and add your PostgreSQL credentials and JWT settings as follows:


                    # Application Name
                    spring.application.name=managify

                    # Database Configuration
                    spring.datasource.url=jdbc:postgresql://localhost:5432/Managify
                    spring.datasource.username=your_db_username
                    spring.datasource.password=your_db_password
                    spring.datasource.driver-class-name=org.postgresql.Driver

                    # JPA and Hibernate Settings
                    spring.jpa.hibernate.ddl-auto=update
                    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

                    # JWT Settings
                    jwt.secret-key=YOUR_SECRET_KEY
                    jwt.expiration-ms=3600000
                

Verify the Setup

Once the application is running, visit http://localhost:8080/api to ensure that everything is configured properly.

Contact Me

If you have any questions, feedback, or suggestions about Managify, feel free to reach out!

Email

doguhannilt@gmail.com