Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tkwonn/plantuml
Backend Project #3
https://github.com/tkwonn/plantuml
dynamic-website file-storage
Last synced: 12 days ago
JSON representation
Backend Project #3
- Host: GitHub
- URL: https://github.com/tkwonn/plantuml
- Owner: tkwonn
- Created: 2024-11-13T12:06:53.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-28T00:23:35.000Z (19 days ago)
- Last Synced: 2024-12-28T01:18:26.131Z (19 days ago)
- Topics: dynamic-website, file-storage
- Language: PHP
- Homepage: https://plantuml.taesokkwon.com
- Size: 19.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PlantUML Server
[![GitHub last commit](https://img.shields.io/github/last-commit/tkwonn/plantuml?color=chocolate)](https://github.com/tkwonn/plantuml/commits/)
[![deploy to EC2](https://github.com/tkwonn/plantuml/actions/workflows/deploy.yml/badge.svg)](https://github.com/tkwonn/plantuml/actions/workflows/deploy.yml)## What is this
A web-based UML learning tool that helps users practice creating various types of UML diagrams using PlantUML syntax.
**URL**: [plantuml.taesokkwon.com](https://plantuml.taesokkwon.com)
## Table of Contents
1. [Demo](#demo)
2. [Built with](#built-with)
3. [Features](#features)
4. [Security Measures](#security-measures)
5. [CI/CD](#cicd)
1. [Continuous Integration](#continuous-integration)
2. [Continuous Delivery](#continuous-deployment)
## Demo
Step1. Select a problem from the list and write UML code in the editor while comparing with the example solution.
https://github.com/user-attachments/assets/315e98bf-2a4e-4f0c-9b79-06c349c60040
Step2. Download the diagram.
https://github.com/user-attachments/assets/e0c59a51-8b2c-4434-9370-fc0541a7b3a0
## Built with
| **Category** | **Technology** |
|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
| VM | Amazon EC2 |
| Web server | Nginx |
| Frontend | HTML, JavaScript, Bootstrap CSS |
| Backend | PHP |
| Storage | Temporary file storage on server |
| CI/CD | GitHub Actions |
| Framework & Tools | - Monaco editor (code editor)
- [PlantUML v1.2024.7 (UML diagram generation)](https://plantuml.com/download)
- Graphviz (graph visualization software) |
## Features
The application features a three-pane interface:
1. Editor Pane: Code editor supporting various UML diagrams (Use Case, Class, Activity, etc.)
2. Preview Pane: Real-time diagram rendering
3. Solution Pane: Interactive cheat sheets which allows user to understand PlantUML syntax by comparing their work with example solutions
Diagrams can be exported in the following formats:
- PNG
- SVG
- TXT (for source code backup and reuse)
## Security Measures
| **Category** | **Description** |
|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| XSS | - HTML content escape: `htmlspecialchars()` with ENT_QUOTES flag.
- JavaScript string escape: `json_encode()`.
- URL attribute escape: `urlencode()` and URL scheme validation. |
| OS command injection | Applied `escapeshellarg()` to properly escape and quote shell arguments when executing PlantUML jar file. |
## CI/CD
The project uses GitHub Actions to automate testing and deployment workflows with the following configurations:
### Continuous Integration
- Dependency caching using Composer to speed up builds
- Code quality checks using PHP CS Fixer### Continuous Deployment
- Secure AWS Authentication using OpenID Connect (short-lived tokens)
- Minimal IAM permissions to ensure secure cloud role operations
- AWS Systems Manager (SSM) for secure remote command execution (no direct SSH access or security group changes)