
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
jangular-cli
Advanced tools
A powerful CLI tool for rapidly bootstrapping Angular 17 & Spring Boot (Java 21) applications with integrated security, services, and enterprise-ready best practices.
Jangular is a comprehensive starter kit that combines the power of Spring Boot for backend development and Angular for frontend, with built-in authentication and authorization systems. This project aims to accelerate enterprise-level development by providing a robust foundation for creating secure, scalable applications.
# Install the Jangular CLI
npm install jangular-cli
# Create a new Jangular project
npx jangular-cli init my-project
# Navigate to your project
cd my-project
# Start the backend
npm run start:backend
# In another terminal, start the frontend
npm run start:frontend
When initializing a new project, the CLI will prompt you for configuration options:
Creating new JAngular project: my-project
✔ Enter base package name: com.example.myproject
✔ Select database type: [MySQL/PostgreSQL/MSSQL]
✔ Enter database name: my_project_db
✔ Enter database username: devuser
✔ Enter database password: ********
# View help information
npx jangular-cli --help
# Initialize a new project
npx jangular-cli init <projectName>
# Display version
npx jangular-cli --version
Clone the repository:
git clone https://github.com/yourusername/jangular.git
cd jangular
Configure your database settings in application.properties or application.yml.
Build and run the backend:
mvn clean install
mvn spring-boot:run
In a separate terminal, navigate to the frontend directory and run:
cd frontend
npm install
ng serve
jangular-project/
├── backend/ # Spring Boot application
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/ # Java source files
│ │ │ ├── resources/ # Backend resources
│ │ │ │ ├── db/migration/ # Flyway migration scripts
│ │ └── test/ # Test files
│ └── pom.xml # Maven configuration
├── frontend/ # Angular application
│ ├── src/
│ │ ├── app/
│ │ │ ├── auth/ # Authentication module
│ │ │ ├── components/ # UI components
│ │ │ ├── services/ # API services
│ │ │ ├── guards/ # Route guards
│ │ │ └── interceptors/ # HTTP interceptors
│ │ ├── assets/ # Static assets
│ │ └── environments/ # Environment configurations
│ ├── package.json # NPM dependencies
│ └── angular.json # Angular CLI configuration
├── package.json # Root package.json with scripts
└── README.md # Project documentation
Jangular supports multiple database systems:
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database_name
username: your_username
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
spring:
datasource:
url: jdbc:postgresql://localhost:5432/your_database_name
username: your_username
password: your_password
driver-class-name: org.postgresql.Driver
spring:
datasource:
url: jdbc:sqlserver://localhost:1433;databaseName=your_database_name
username: your_username
password: your_password
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
Jangular uses Git submodules for the frontend and backend templates:
github/nathangtg/jangular-backendgithub/nathangtg/frontendClone the repository with submodules:
git clone --recurse-submodules https://github.com/yourusername/jangular-cli.git
cd jangular-cli
Update submodules (if you didn't clone with --recurse-submodules):
git submodule update --init --recursive
Making changes to templates:
For backend template:
# Navigate to backend template
cd templates/backend
# Make your changes
# Commit and push changes
git add .
git commit -m "Description of your changes"
git push origin master
For frontend template:
# Navigate to frontend template
cd templates/frontend
# Make your changes
# Commit and push changes
git add .
git commit -m "Description of your changes"
git push origin master
Update the main repository to reference the new template version:
# Return to the main project directory
cd ..
# Update the submodule reference
git add templates/backend # or templates/frontend
git commit -m "Update template reference"
git push
/api/auth)| Method | Endpoint | Description | Access |
|---|---|---|---|
| POST | /api/auth/login | User login | Public |
| POST | /api/auth/register | User registration | Public |
| POST | /api/auth/refresh | Refresh access token | Public |
| POST | /api/auth/logout | User logout | Authenticated |
/api/users)| Method | Endpoint | Description | Access |
|---|---|---|---|
| GET | /api/users/me | Get current user info | Authenticated |
| GET | /api/users/{id} | Get user by ID | Admin |
| GET | /api/users | Get all users | Admin |
| PUT | /api/users/{id} | Update user information | User or Admin |
| POST | /api/users/{id}/change-password | Change user password | User or Admin |
| DELETE | /api/users/{id} | Soft delete a user | Admin |
| POST | /api/users/{id}/roles | Add role to user | Admin |
| DELETE | /api/users/{id}/roles/{roleName} | Remove role from user | Admin |
| GET | /api/users/{id}/login-history | Get user login history | User or Admin |
| GET | /api/users/{id}/login-history/range | Get login history for date range | User or Admin |
| GET | /api/users/{id}/active-sessions | Get active sessions | User or Admin |
The following table provides an overview of the application's route structure.
| Path | Component/Module | Guard(s) | Description |
|---|---|---|---|
/auth | AuthModule (Lazy-loaded) | None | Loads authentication-related routes (Login/Register) |
/dashboard | DashboardComponent | authGuard | Protected dashboard for authenticated users |
/admin/users | UserModule (Lazy-loaded) | AdminGuard (Inside UserModule) | Admin panel for managing users |
/ | Redirects to /dashboard | None | Default redirection |
/admin/users)| Path | Component | Guard(s) | Description |
|---|---|---|---|
/admin/users | UserListComponent | AdminGuard | Displays a list of users |
/admin/users/:id | UserDetailComponent | AdminGuard | Shows details of a specific user |
/admin/users/:id/edit | UserDetailComponent | AdminGuard | Edit user details |
The User Module is lazily loaded to improve performance, ensuring admin-related routes are only loaded when required.
// Key methods provided by AuthService
login(username: string, password: string): Observable<AuthResponse>
register(user: RegisterRequest): Observable<UserDTO>
refreshToken(refreshToken: string): Observable<AuthResponse>
logout(): void
isAuthenticated(): boolean
getAccessToken(): string
// Key methods provided by UserService
getCurrentUser(): Observable<UserDTO>
getUserById(id: number): Observable<UserDTO>
updateUser(id: number, user: UserDTO): Observable<UserDTO>
changePassword(id: number, oldPassword: string, newPassword: string): Observable<void>
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
Jangular - Accelerating Enterprise Application Development
FAQs
A powerful CLI tool for rapidly bootstrapping enterprise-grade Angular 17 & Spring Boot (Java 21) applications with integrated security, authentication, database management, and Docker support.
We found that jangular-cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.