NathanCheshire / Cyder

Multipurpose utility tool expressed using a custom JVM UI library built over Swing
GNU General Public License v3.0
11 stars 1 forks source link
ci conway-s-game-of-life java mp3player music-downloader pathfinding-visualizer perlin-terrain weather-app webscrapping
Logo

What is Cyder

Funny you should ask this question, I'm asked it quite a lot and usually fail to give a comprehensive and elegant answer. The best I can do is something along the lines of "Cyder is a multi-purpose, desktop manager, GUI tool." It is written using a custom Swing UI library which was built on top of lightweight Swing components. No modern GUI dependencies such as FlatLaf, MaterialFX or FXML were used, thus all Cyder components are closely related to java/awt/Component.java.

Some examples of what you can do with Cyder include:

Screenshots

Cyder Console Liminal Cyder
Audio Widget

Audio Player

Audio Player Search

Weather Widget Weather
Paint Widget Paint widget Paint widget controls
Pathfinding Visualizer

Pathfinding Visualizer

Game of Life Widget

Conway's Game of Life

Perlin Terrain Visualizer

Perlin widget

Usage and Setup

To get started with Cyder, first download your favorite Java IDE such as IntelliJ, NetBeans, Eclipse, etc. You'll then want to make sure the IDE supports gradle operations. Next, clone Cyder via git clone https://github.com/NathanCheshire/Cyder.git --depth 1. If you don't absolutely require the entire git history, I highly recommend shallow cloning as the extensive git history is quit large. Now load the project in your IDE and allow the gradle setup task to run and the IDE to synchronize. Now you'll be able to run Cyder by a runtime configuration which invokes the main method inside of Cyder.java. Once started, Cyder should recognize there are no users found and prompt for the creation of a user. Go ahead and create an account now.

For development purposes, you may want to add three props within a props file:

  1. autocypher set to true.
  2. autocypher_name set to your user's username.
  3. autocypher_password set to your user's hashed password (hash your password once using SHA256).

These props should be annotated with the @no_log annotation to ensure their values do not appear in any log files. Additionally, your the props file containing your password should be added to your .gitignore file to avoid VCS tracking. Cyder double hashes passwords to help prevent rainbow table lookups. However, leaving your singly-hashed SHA256 autocypher password exposed leaves you more prone to attacks.