A collaborative project management application built for Advanced Programming and DBMS classes, featuring board-based task management with multi-user collaboration capabilities.
Jammer v2 is a full-stack web application that provides collaborative board management functionality, allowing users to create, manage, and collaborate on project boards. The application supports user invitations, role-based access control, and email-based collaboration features.
- Java 21 - Programming language
- Spring Boot 3.4.5 - Application framework
- Spring Data JDBC - Database access
- Spring Boot Mail - Email functionality
- Thymeleaf - Template engine for email templates
- Maven - Dependency management and build tool
- Lombok - Code generation library
- jBCrypt 0.4 - Password hashing
- SpringDoc OpenAPI 2.3.0 - API documentation
- SQL Server JDBC Driver - Database connectivity
- Angular 19.2 - Frontend framework
- TypeScript 5.7 - Programming language
- PrimeNG 19.1 - UI component library
- PrimeIcons 7.0 - Icon library
- Font Awesome 4.7 - Additional icon library
- RxJS 7.8 - Reactive programming
- Angular CDK 19.0 - Component development kit
- Microsoft SQL Server - Primary database (SQL Server Express with SQLEXPRESS instance)
- Stored Procedures - Complex database operations
- JDBC Template - Database operations
- User Management: Registration, authentication, and profile management
- Board Management: Create and manage project boards
- Collaborative Workspaces: Multi-user board collaboration
- Invitation System: Invite users via email or username
- Email Notifications: Automated invitation and notification emails
- Responsive Design: Modern UI with PrimeNG components
Jammer v2 implements a Clean Architecture pattern with clear separation of concerns, ensuring maintainability, testability, and independence from external frameworks.
Domain Layer (domain/)
- Contains pure business logic and entities
- Defines core business rules and domain services
- Independent of any external frameworks or technologies
- Entities:
User,Board,BoardMember,BoardInvitation
Application Layer (application/)
- Orchestrates domain objects to fulfill use cases
- Contains application-specific business rules
- Defines interfaces for external services (ports)
- Use cases:
CreateBoard,InviteUser,ManageBoardMembers - Application services coordinate multiple domain operations
Infrastructure Layer (api/, persistence/, infrastructure/)
- API Layer (
api/): REST controllers, DTOs, request/response mapping - Persistence Layer (
persistence/): Database repositories, entity mapping - Infrastructure Layer (
infrastructure/): External service implementations
The Angular frontend follows Component-Based Architecture with:
client-app/src/
├── app/
│ ├── shared/ # Reusable components, pipes, directives
│ ├── views/ # Feature views and components
│ ├── app.routes.ts # Application routing configuration
│ ├── app.config.ts # Application configuration
│ └── app.component.* # Root application component
- Module-based organization for feature separation
- Service-oriented architecture for data management
- Reactive programming with RxJS for async operations
- Component composition with PrimeNG UI library
- Route-based lazy loading for performance optimization
Jammer_v2/
├── src/main/java/com/example/jammer/
│ ├── domain/ # Business entities and domain logic
│ ├── application/ # Use cases and application services
│ ├── api/ # REST controllers and DTOs
│ ├── persistence/ # Database repositories and data access
│ ├── infrastructure/ # External services (email, CORS, etc.)
│ └── JammerApplication.java
├── client-app/
│ ├── src/app/
│ │ ├── views/ # Feature components and pages
│ │ ├── shared/ # Reusable components and services
│ │ ├── app.routes.ts # Routing configuration
│ │ └── app.config.ts # App configuration
│ ├── package.json
│ └── angular.json
├── database_migration_board_members.sql
├── pom.xml
└── README.md
- Separation of Concerns: Each layer has distinct responsibilities
- Maintainability: Changes in one layer don't affect others
- Scalability: Easy to add new features without impacting existing code
- Technology Independence: Core logic is not tied to specific frameworks
- Database Abstraction: Repository pattern abstracts data access logic
- Request Flow: Angular → REST Controller → Application Service → Domain Service → Repository → Database
- Response Flow: Database → Repository → Domain Entity → Application Service → DTO → REST Controller → Angular
- Business Logic: Concentrated in Domain and Application layers
- Cross-cutting Concerns: Handled by Infrastructure layer (logging, security, email)
- Java 21 or higher
- Node.js 18+ and npm
- SQL Server Express with SQLEXPRESS instance (or full SQL Server)
- Maven 3.6+ (included wrapper available with
mvnw)
The application uses a comprehensive database schema supporting:
- Users: User accounts and authentication
- Boards: Project boards and workspace management
- BoardMembers: User-board relationships with roles (admin/member)
- BoardInvitations: Email-based invitation system with expiration
- Tasks: Task management within boards
- Workspaces: Workspace organization
Key tables:
Workspace.UsersWorkspace.BoardsWorkspace.BoardMembersWorkspace.BoardInvitationsWorkspace.TasksWorkspace.Workspaces
- Stored Procedures: Complex operations like
GetBoardMembers,InviteUserToBoard,AcceptBoardInvitation - Constraints: Foreign keys, unique constraints, and check constraints for data integrity
- Indexes: Performance optimization for frequent queries
- Status Management: Invitation status tracking (PENDING, ACCEPTED, REJECTED, EXPIRED)
Database Connection Issues:
- Ensure SQL Server Express is running
- Check if the instance name is correct (SQLEXPRESS is default)
- Verify the database
JammerDBexists - Check username/password in
application.properties
Email Issues:
- For Gmail, ensure app passwords are used instead of regular passwords
Build Issues:
- Ensure Java 21 is installed
- Clear Maven cache
- For frontend: delete
node_modulesand runnpm installagain
Note: This project is developed for educational purposes as part of Advanced Programming and Database Management Systems coursework.