Skip to content

francescopiocirillo/draw-snap-drawing-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

388 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎨 DrawSnap – Geometric Drawing Tool

πŸš€ A Java-based geometric drawing application built using the Scrum methodology, designed to support shape creation, editing, grouping, and custom shape libraries, developed as part of a university project.

Demonstrated proficiency in Java application development, agile Scrum methodology, UI/UX design, advanced shape manipulation features, and automated testing with JUnit.


πŸ“Έ User Interface Snapshot

image

πŸ“Œ Overview

DrawSnap is a geometric drawing tool developed as part of a Software Architecture Design course project at the University of Salerno. Built in Java using the Scrum framework, this application provides users with an intuitive interface for creating and editing shapes with advanced manipulation capabilities.

πŸ“ Project Highlights

  • βœ… Multiple shape types: lines, rectangles, ellipses, polygons, and text

  • 🧠 Advanced editing: move, resize, rotate, mirror, stretch, cut/copy/paste

  • 🎨 Customizable UI: colors, grid display, zoom levels, shape layering

  • πŸ“¦ Shape grouping & libraries: group shapes, save reusable custom shapes

  • πŸ§ͺ JUnit test suite for ensuring reliability and robustness

  • πŸ“Š Backlogs & reports managed via Trello and GitHub

  • πŸ“Œ Developed with real-world Scrum practices: sprints, reviews, retrospectives, the project highlights the skills of the team members in following agile methodologies


🌍 Language Note

All code comments and internal documentation are written in Italian, as the project was developed during a group exam at the University of Salerno (Italy).

Despite this, the codebase follows international best practices, with clear method names and class structures that make it easily understandable for global developers and recruiters.


πŸ’‘ Features

πŸ–ŒοΈ Shape Operations

  • Create lines, rectangles, ellipses, polygons, and text shapes

  • Customize stroke and fill colors (8+ colors)

  • Adjust shape size, position, and layering (bring to front/back)

  • Cut, Copy, Paste shapes with unlimited Undo levels

πŸ”„ Advanced Editing

  • Rotate shapes by arbitrary angles

  • Mirror shapes horizontally or vertically

  • Stretch shapes in both axes

  • Group/Ungroup multiple shapes for combined operations

πŸ“ Shape Libraries

  • Save custom shapes as reusable creation commands

  • Import/export shape libraries for specialized domains (e.g., electrical symbols)

πŸ–₯️ Enhanced UI

  • Zoom support (4+ levels)

  • Grid display (toggleable and resizable)

  • Scrollable canvas larger than the window

  • File persistence: save/load drawings and shape libraries


🧠 Development Process

Developed iteratively over multiple sprints using Scrum methodology, simulating an agile software development lifecycle.

  1. Pre-game: Initial backlog creation, architecture design, and setup (GitHub, Trello).

  2. Sprint 1: Basic drawing operations and file management.

  3. Sprint 2: Advanced editing features and grouping.

  4. Sprint 3: Shape libraries, polishing features, and final presentation.

Each sprint included planning, reviews, retrospectives, and burndown tracking, with artifacts stored in the repository.


πŸ§ͺ Testing

JUnit-based automated tests were implemented to ensure the correctness of:

  • Shape creation & manipulation

  • Undo operation

  • File save/load functionality

Test classes are located in:

test/java/it/unisa/software_architecture_design/drawsnapdrawingtool/

Because of a version compatiility issue between Mockito and Java 23, when executing tests it is important to add the following VM Options: -ea -Dnet.bytebuddy.experimental=true.


πŸ“‹ Documentation

All documentation is available in the docs/ folder, including:

  • Pre-game documents: Initial product backlog, architecture description, and sprint planning.

  • Sprint artifacts: Sprint backlogs, burndown charts, review & retrospective reports for each sprint.

  • User Manual: Guidance for end-users on using DrawSnap’s features.


🧱 Project Structure

πŸ“¦ draw-snap-drawing-tool
β”œβ”€β”€ πŸ“ docs
β”‚   β”œβ”€β”€ 0 - Pre-game
β”‚   β”œβ”€β”€ 1 - First sprint
β”‚   β”œβ”€β”€ 2 - Second sprint
β”‚   β”œβ”€β”€ 3 - Third sprint
β”‚   └── Manuale d’uso
β”œβ”€β”€ πŸ“ src/main/java/it/unisa/software_architecture_design/drawsnapdrawingtool
β”‚   β”œβ”€β”€ commands/
β”‚   β”œβ”€β”€ enumeration/
β”‚   β”œβ”€β”€ forme/
β”‚   β”œβ”€β”€ interactionstate/
β”‚   β”œβ”€β”€ memento/
β”‚   β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ DrawSnapApplication.java
β”‚   β”œβ”€β”€ DrawSnapController.java
β”‚   β”œβ”€β”€ DrawSnapModel.java
β”‚   └── module-info.java
β”œβ”€β”€ πŸ“ test/java/it/unisa/software_architecture_design/drawsnapdrawingtool
β”œβ”€β”€ .gitignore
β”œβ”€β”€ README.md
β”œβ”€β”€ pom.xml
└── mvnw, mvnw.cmd

πŸ‘₯ Team – University of Salerno


πŸš€ How to Run Locally

  1. Clone the repository:

    git clone https://github.com/francescopiocirillo/draw-snap-drawing-tool.git
  2. Open in your preferred IDE (IntelliJ, VS Code, NetBeans).

  3. Add the following VM Options: --add-modules javafx.controls,javafx.fxml,javafx.graphics.

  4. Run DrawSnapApplication.java to launch the application.

🧩 Development Environment

  • β˜• Java version: 23

  • πŸ§ͺ JUnit for testing

  • πŸ“¦ Maven for build automation


πŸ“¬ Contacts

βœ‰οΈ Got feedback or want to contribute? Feel free to open an Issue or submit a Pull Request!


πŸ“ˆ SEO Tags

Java drawing tool, geometric drawing program, shape editing software, Java graphics project, collaborative software engineering, Scrum-based Java project, University of Salerno software project, UML-based architecture, JUnit tested Java application, Maven Java project, shape libraries Java, undo redo operations Java, custom shape creation tool, agile software development project, academic Java project

πŸ“„ License

This project is licensed under the MIT License, a permissive open-source license that allows anyone to use, modify, and distribute the software freely, as long as credit is given and the original license is included.

In plain terms: use it, build on it, just don’t blame us if something breaks.

⭐ Like what you see? Consider giving the project a star!


About

🎨 DrawSnap is a Java-based geometric drawing tool built with Scrum methodology. It supports creating and editing shapes (lines, rectangles, ellipses, polygons, text), grouping, custom shape libraries, and advanced editing features like rotation, mirroring, and unlimited undo.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors