Skip to content

About

Role-based Spring Boot web app for managing project links and SOP documents, with Spring Security, JPA and MySQL

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

RSEM – Remote Desktop Environment Manager

A role-based web app for keeping a support team's project resources in one place. Each project holds its own links (portals, consoles, tools) and SOPs (written steps or uploaded PDF documents). Admins manage projects and users and decide who can see which project. Regular users see only the projects they're assigned to.

Built with Java 21, Spring Boot 4, Spring Security, Spring Data JPA, Thymeleaf and PostgreSQL (H2 for local development).


Features

  • Login and roles: form login with Spring Security, BCrypt password hashing, and ADMIN / USER roles
  • Project access control: admins see every project; users see only the projects assigned to them
  • Project management (admin): create, edit, delete and search projects
  • Items per project: add, edit, delete and search items inside a project
    • LINK: a named URL
    • SOP: text content, with an optional uploaded file (PDF etc., up to 10 MB)
  • User management (admin): create, edit, enable/disable and delete users, and assign them to projects
  • Method-level security: @PreAuthorize on admin-only actions, plus URL rules for /admin/**

Tech stack

Layer Technology
Language Java 21
Framework Spring Boot 4.0 (Web MVC)
Security Spring Security 6, BCrypt
Persistence Spring Data JPA / Hibernate, PostgreSQL (prod), H2 (dev)
Views Thymeleaf, HTML, CSS
Build Maven

Project structure

envmanager/
└── src/main/java/com/remotemanager/envmanager/
    ├── config/        SecurityConfig, WebConfig (serves /uploads), DataInitializer (seed users)
    ├── controller/    ProjectController, ItemController, AdminUserController
    ├── model/         User, Project, Item, ItemType
    ├── repository/    Spring Data JPA repositories
    └── service/       Business logic + CustomUserDetailsService
└── src/main/resources/
    ├── templates/     Thymeleaf pages (login, projects, items, users)
    └── static/        CSS and images

Data model

  • User ↔ Project: many-to-many (user_projects join table)
  • Project → Item: one-to-many (items are deleted with their project)

Running locally

Prerequisites: JDK 21. Nothing else: the Maven wrapper downloads Maven, and the dev profile uses an embedded H2 database.

cd envmanager
./mvnw spring-boot:run        # Windows: mvnw.cmd spring-boot:run

Open http://localhost:8080 and log in. Data is saved in envmanager/data/, so it survives restarts; delete that folder to start fresh.

Demo accounts (dev profile only)

Username Password Role
admin admin123 ADMIN
testuser1 testuser@123 USER

Running with PostgreSQL (prod profile)

Set these environment variables and start the app:

Variable Example
SPRING_PROFILES_ACTIVE prod
DB_URL jdbc:postgresql://<host>:5432/rsem_db
DB_USERNAME / DB_PASSWORD your database credentials
RSEM_ADMIN_PASSWORD password for the first admin account
RSEM_USER_PASSWORD optional; creates testuser1 if set

Tables are created automatically on first run. In prod, no demo passwords are built in: a seed account is only created when its password variable is set.

Routes

Path Who Purpose
/login Everyone Login page
/projects Logged-in users Project list (filtered by role)
/projects/new, /projects/save, /projects/delete/{id} Admin Manage projects
/projects/{projectId}/items Logged-in users Links and SOPs for a project
/projects/{projectId}/items/search?keyword= Logged-in users Search items
/admin/users Admin Manage users and project assignments

Planned improvements

  • Versioned schema migrations with Flyway
  • Deploy with a hosted PostgreSQL database
  • Store uploaded SOP files in cloud storage instead of the local uploads/ folder
  • Switch delete actions from GET links to POST requests
  • Unit and integration tests

Author

Seetharaman Kumar Iyer, GitHub @Benex1114

About

Role-based Spring Boot web app for managing project links and SOP documents, with Spring Security, JPA and MySQL

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages