Project Categories

Project Setting Personal
Team Size 1
Role(s) Creator / Developer
Languages JavaScript TypeScript HTML CSS C#
Software/Tools Used Visual Studio (IDE for WinForms), Atom (Editor for Electron), Windows Forms (API), Electron (API), Node.js (API), JQuery (API), Tippy.js (API)
Status Released (Windows via WinForms), Released (Windows via Electron), semi-active development (for cross-platform and possible 7za.dll integration)

About

Project Archivist was created for two reasons: 1. to create something useful in under 24-hours in an almost Hackathon/Game-jam-esque fashion; 2. to give a visual interface for creating scripts for creating backups. Not only am I a very visual/interface-oriented person, creating scripts can be a bit problematic, because one could make a typo later in a script and not discover it until encountering an error as late as hours later.

This first was created using Windows Forms. The program serves its purpose and accounts for a number of use/error-cases. However, due to the visual and platform limitations of Windows Forms, I decided to migrate this program into Electron. I used this as an opportunity to learn both a new API (Electron, + Node.js by inheritence) and a new language (TypeScript) / to practice more in JavaScript. Due to conflicts with TypeScript's compiler's 'intentions' and Electron's expectations, the project was branched into two versions - one based in TypeScript, and one based in JavaScript. The currently available build is based on JS.

My Work

WinForms

  • Design main, item, exclusion, error, and message windows for the program to use
  • Set up form elements in a semantic way (limitations on numeric up-downs, using the proper file/folder dialogs)
  • Make use of an ArchivedItem object to use information from the forms in setting up the output script
  • Handle a number of error cases to prevent the user from potentially making a mistake

Electron

  • Design a single-window interface using HTML/CSS markup/styling, with multiple stylesheets to serve different purposes and to allow for future theming capabilities
  • Make use of JQuery selectors/events for buttons and form elements
  • Make use of Node.js File System module for file writing
  • Make use of Tippy.js for tooltips for form controls
  • Re-create ArchivedItem and similar structures from the WinForms application
  • Use TypeScript syntax to ensure expectations when writing code
  • Reach mirrored functionality with WinForms app for a 1.0.0 full release
  • Resolve numerous bugs found post-release

Samples

These are some videos, screenshots, and code snippets that come from the program.

Videos

Screenshots

WinForms

Electron

Code

WinForms

Electron

Places

Source Code (WinForms) GitHub Repo
Source Code (Electron) GitHub Repo