Before starting, ensure you have:
- Git installed on your computer.
- IntelliJ IDEA (Community or Ultimate Edition)
- The GitHub account where you received the repository invite in.
- Java's JDK 21
- Maven installed on your computer.
- Install it using Maven.
It should look like this:
C:\Users\prath\Downloads\apache-maven-3.9.11-bin (2)\apache-maven-3.9.11\bin
Open command prompt and use mvn --version

-
In IntelliJ, go to File → New → Project from Version Control → Git.
-
Paste the repository URL:
https://github.com/Pratham71/Vessel.git -
Choose a destination folder and click Clone.
-
If prompted, log in with your GitHub credentials or personal access token.
-
Once cloned, IntelliJ will automatically open the project.
-
If prompted, click “Trust Project”.
-
Wait for IntelliJ to index and import dependencies (Gradle/Maven/etc.).
-
- Go to settings → project structure
- Make sure your JDK version is correctly set to JDK 21 (doesn't matter if it shows as
21orms-21)
💡 You don’t need to use terminal commands — IntelliJ can handle Maven automatically.
- On the right sidebar, open the Maven tool window (icon looks like an italicized lowercase "m").
- If it’s hidden, go to View → Tool Windows → Maven.
- Click the 🔄 Reload All Maven Projects icon to sync
pom.xml.
- From the top menu, go to Build → Build Project (
Ctrl + F9/Cmd + F9). - This compiles all files in
src/main/javaand places outputs in thetarget/folder.
-
In IntelliJ, go to Run → Edit Configurations.
-
Click the + button and choose Maven (not Application).
-
For Name, enter something like
Run Vessel. -
(Usually auto-filled) For the Working directory, select your project root folder.
-
In the Command line (or Goals) field, put this exactly:
javafx:run -
Click Apply and then OK. Your steps should look something like this:
💡 This final run button should automatically run your project from anywhere without needing to do additional maven actions
- If IntelliJ shows outdated code or dependency issues, select Build → Rebuild Project.
✅ If you're setting up your project for its first ever run - you're done after this step! The rest of this document simply has additional info you may need later/in other cases
💡 You probably wont use these much since IntelliJ's UI kinda has everything in it, but these are here just in case
| Command | Description |
|---|---|
mvn -v |
Check Maven version (verify installation). |
mvn clean |
Deletes the target/ folder to ensure a fresh build. |
mvn compile |
Compiles all project source files (src/main/java). |
mvn package |
Packages the project into a .jar file inside target/. |
mvn install |
Builds and installs the JAR into your local Maven repository (~/.m2). |
mvn site |
Generates a project site/documentation if configured. |
mvn dependency:tree |
Displays a visual tree of all dependencies (useful for debugging conflicts). |
mvn validate |
Checks that the pom.xml and project structure are correct. |
mvn verify |
Runs integration tests after packaging (if any). |
mvn exec:java -Dexec.mainClass="com.vessel.Main" |
Runs your main class directly from Maven. |
- Always run
mvn clean packageafter editingpom.xmlor adding dependencies. - Use
mvn dependency:treeto detect version clashes or duplicates. - If dependencies fail to load, delete
.m2/repositoryand rebuild withmvn clean install. - IntelliJ automatically handles Maven imports — you can reload via the “Load Maven Changes” popup anytime.
- If IntelliJ doesn’t recognize new dependencies, click “Load Maven Changes” at the top-right.
- To view Maven tasks (clean, package, install): open the Maven sidebar → expand your project → run any goal by double-clicking it.
⚠️ The normal play button should work if you've set up theRun/Debug Configproperly in the previous steps; if not then follow this gif to run the program
- Open the Git tool window at the bottom (or use
Alt + 9/Ctrl + Shift + G/Cmd + 9). - You’ll see all modified files, main commits and branched commits listed.
- In the top branch icon click Commit or press
Ctrl + K/Cmd + K. - Write a meaningful commit message (eg: "Added cell creation logic").
- Select the files to commit.
- Click Commit or Commit and Push.
- Its healthier to make multiple commits per feature/update being implemented, rather than having one messy commit having too many features in it, making it harder to track
- Use Push or shortcut
Ctrl + Shift + K/Cmd + Shift + Kto push changes to the remote server.
- The blue arrow next to
main(or whatever branch you're on) indicates new changes from remote ready to be pulled - Use Pull to sync the latest changes from the remote branch.
- Create, switch, or merge branches directly from the menu.
💡 Push major changes to branches, rather than main to avoid disrupting stable code; merge back once completed
- Open your project’s
pom.xml. - Inside the
<dependencies>tag, add the library you need in this format:
<dependencies>
<!-- Example: Adding Gson for JSON parsing -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.11.0</version>
</dependency>
<!-- Example: JavaFX Controls -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>21.0.2</version>
</dependency>
<!-- Add more dependencies below -->
</dependencies>If your library is not available online (for example, ikonli-core.jar in /lib), you can manually include it in pom.xml like this:
<dependency>
<groupId>local.libs</groupId>
<artifactId>ikonli-core</artifactId>
<version>12.3.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/ikonli-core-12.3.1.jar</systemPath>
</dependency>Vessel
│
├─ .idea/
├─ logs/
├─ notebooks/
├─ readme.meta
├─ target/
│
├─ src
│ └─ main
│ ├─ java
│ │ └─ com.vessel
│ │ ├─ core
│ │ │ └─ log
│ │ │ └─ log-usage.md
│ │ │
│ │ ├─ Kernel
│ │ │ ├─ ExecutionResult
│ │ │ └─ NotebookEngine
│ │ │
│ │ ├─ model
│ │ │ ├─ CellType
│ │ │ ├─ Notebook
│ │ │ └─ NotebookCell
│ │ │
│ │ ├─ persistence
│ │ │ ├─ NotebookPersistence
│ │ │ └─ persistence.md
│ │ │
│ │ ├─ ui
│ │ │ ├─ CodeCellController
│ │ │ ├─ GenericCellController
│ │ │ ├─ NotebookController
│ │ │ └─ SystemThemeDetector
│ │ │
│ │ └─ util
│ │ ├─ SyntaxService
│ │ └─ Backend-Readme.md
│ │
│ └─ resources
│ ├─ CodeCell.fxml
│ ├─ Notebook.fxml
│ ├─ dark.css
│ ├─ light.css
│ └─ icon.png
│
├─ pom.xml
├─ .gitignore
├─ README.md
└─ EXPLANATION.md
---









