Skip to content

zdodson21/retro-desktop-portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zach's Website

Website URL

Description

This website serves the purpose of being my portfolio as well as a sandbox to try new skills. Some aspects of this codebase (such as Electron) are unnecessary for this website, but were incorporated to learn how to utilize them. If something seems out of place, it is likely included so I could learn how to use it.


Tech Stack / Development Tools

Tool Purpose & Description
Angular Angular: Front-end framework used to handle the building, routing, and numerous other aspects of this web app.
TypeScript Typescript: Language used by Angular to handle all logic related tasks.
HTML5 HTML: Structure of overall web app, individual "web pages" in the browser, and structure of web components.
SCSS SCSS: Used in Angular for styling, enabling better developer experience than using plain CSS across the entire web app.
C C: Used to perform computational logic for Calculator program.
WebAssembly WebAssembly: Compilation target for languages used to handle "heavy" computational logic.
GitHub GitHub: Git repository cloud service.
Vercel Vercel: Web hosting, speed analytics, usage insights.
GitHub Actions GitHub Actions: CI/CD
Jasmine Jasmine: TypeScript testing.
Prettier Prettier: Code formatting.
Cloudflare CloudFlare: Domain name services.
Docker Docker*: Containerization
Electron.js Electron*: Desktop App
Aseprite Aseprite: Icon recreation.
Gimp Gnu Image Manipulation Program GIMP: Icon recreation and file type conversion.

* - Feature not required for typical website development / operation (added solely to gain a better understanding).

Web Component Repos

Some aspects of this web application are created using external web-components, hosted in other repositories. These will be listed here when they are created.


Installing Dependencies

To install dependencies, run the following:

npm install

Development server

To start a local development server, run:

ng serve

Once the server is running, open your browser and navigate to http://localhost:4200/ (or the localhost URL provided by Angular if port 4200 is currently in use). The application will automatically reload whenever you modify any of the source files.

Code scaffolding

The Angular CLI includes powerful code scaffolding tools. To generate a new component, run:

ng generate component component-name

OR

ng g c component-name

For a complete list of available schematics (such as components, directives, or pipes), run:

ng generate --help

Building

To build the project run:

ng build

This will compile your project and store the build artifacts in the dist/ directory. By default, the production build optimizes your application for performance and speed.

Running unit tests

To execute unit tests with the Karma test runner, use the following command:

ng test

More commands

More commands can be viewed in the package.json file.

Additional Resources

For more information on using the Angular CLI, including detailed command references, visit the Angular CLI Overview and Command Reference page.


WebAssembly

Some code for this project is written in C and compiled to WebAssembly to handle backend computational logic. One program that uses this is the Calculator program.

Use the following command(s) to compile WebAssembly projects from C using GNU Make, Emscripten, and GNU C Compiler

# Calculator
make calculator

Use the following command(s) to compile C Testing Programs (output into root of project, automatically git ignored):

make test-calculator

CI/CD (GitHub Actions)

To view code for currently configured Actions visit the workflows folder in this repository.

Use the following command to run test actions locally using native commands:

npm run actions:native

You can also use act.

Note: You must have docker installed to use act. You can figure out how to install Docker for your system here.

Build

Default build command:

npm run build

Use the following command to run the build action locally:

act --job build

Test

You can utilize the following test commands:

# Standard testing, opens Chrome
npm run test

# Headless testing
npm run test:hl

# Headless testing, does not watch for changes
npm run test:hlnw

# Testing using the GitHub Actions configuration file
npm run test:ci

Use the following command to run the test action locally using act:

Note: This may not work due to issues with reliance on Google Chrome for testing.

act --job test

Docker

This project can be built and run locally as a docker container!

Run the following command to easily build and run the docker container locally:

# Build container
npm run docker:build

# Run container
npm run docker:run

From there you can access this project in your browser at either the network address provided by the container or at localhost:5200

Note: Any self-built container serves as an offline-only method of accessing this web application, so any features that require a connection to a server will not function.


Electron

Note: If you complete any local builds of this project as an Electron application, you will be missing any environment variables required for signing and live server / database features. Local builds of this project not provided through an official source (such as GitHub) should be considered "offline-only" builds.

Development

To build and run this project as an electron app, run the following command:

npm run electron:start

Build for Various Systems

Linux

To build for Linux based systems, run the following:

npm run forge:linux

This will build the program into .deb and .rpm based installers

Windows

To build for Windows based systems, run the following:

npm run forge:windows

There is a known issue where you may need to run the following command, then re-run the above command:

npm run forge:start

A fix is being researched for this bug to ensure the installer works properly in the future

macOS

To build for macOS systems, run the following:

npm run forge:mac

Is This Repository Open Source?

No. Because this is my portfolio web application, which contains numerous aspects (such as pictures and descriptions) of my life and projects, this repository is not open source. It is "code-available", meaning anyone can view the code to see how all the pieces function, but no one is permitted to copy, modify, or redistribute this code without my permission.

Can I Contribute to this Repository?

No*. I will not be accepting any pull requests submitted to this repository (not that I expect any for a personal website). However, if you have a suggestion for how code could be written better, you are welcome to submit a pull request. Any pull requests or issues submitted will be taken as suggestions, and no pull requests will be merged.

About

Windows 95 themed portfolio, personal website, and programming sandbox. Built with Angular.

Topics

Resources

Stars

Watchers

Forks