How gamcrosskf/portfolio works
1. This repository is a single-page personal portfolio built as a static Vue 3 application with Vite. The whole app is client-rendered; there is no backend, database, or API layer in the repo.
2. The runtime entry is the usual Vite flow: index.html loads src/main.js, which bootstraps the Vue app and mounts src/App.vue into the page.
3. App.vue is the top-level composition layer. It likely defines the overall “terminal” shell and orchestrates the page sections, using the header/footer components and the content sections as building blocks.
4. The UI is split into self-contained presentation sections:
- AboutSection.vue
- SkillsSection.vue
- ProjectsSection.vue
- ContactSection.vue
Each one owns a distinct part of the portfolio content and layout, which makes the page easy to diagram as a set of vertical sections under one shell.
5. TerminalHeader.vue and TerminalFooter.vue provide the terminal-style framing around the content. They are visual chrome components rather than content modules, reinforcing the repo’s “cyan/blue terminal” theme described in the README.
6. Content appears to be centralized in src/config/portfolio.js. This is an important architectural boundary: instead of hardcoding everything into the components, the app likely reads portfolio data from this config file and renders it in the sections. That makes skills, projects, links, and contact details easy to update without changing layout code.
7. src/style.css holds the global design system and visual behavior: typography, terminal aesthetics, responsive layout, and animations. src/assets stores static media used by the portfolio, such as images or icons.
8. The main data flow is:
configuration data in src/config/portfolio.js
→ passed into or imported by section components
→ rendered by App.vue inside the page shell
→ styled globally through style.css.
This is a classic data-driven static UI, not an event-heavy application.
9. External dependencies are user-facing links rather than service integrations. The README mentions GitHub project links, demo links, LinkedIn, and CV download. These are outbound references rendered by the portfolio, not consumed through network APIs.
10. Deployment is handled through GitHub Pages. The .github/workflows/deploy.yml workflow is the CI/CD boundary: it builds the Vite app and publishes the generated static site. The .nojekyll file is present because GitHub Pages is serving a Vite-built artifact and should not apply Jekyll processing.
11. For an architecture diagram, the key boxes are: browser/runtime, Vue component tree, shared portfolio config, global styling/assets, and static hosting via GitHub Pages. The important distinction is that the repo is a content-driven frontend site with build-time deployment, not a multi-tier application.
Main entry points: App.vue App · portfolio.js portfolio.js · style.css style.css · main.js main.js
Components 16
Runtime
Client-side Vite/Vue execution flow
- Browser · Loads and renders the static portfolio app
- index.html · Vite entry document that loads the app
index.html - main.js · Creates and mounts the Vue application
src/main.js
UI
Top-level shell and content sections
- App · Top-level composition layer for the portfolio page
src/App.vue - Header · Terminal-style top framing for the page
src/components/TerminalHeader.vue - Footer · Terminal-style bottom framing for the page
src/components/TerminalFooter.vue - About · Introductory portfolio section
src/components/AboutSection.vue - Skills · Skills and capabilities section
src/components/SkillsSection.vue - Projects · Project showcase section
src/components/ProjectsSection.vue - Contact · Contact and outbound links section
src/components/ContactSection.vue
Content Data
Shared portfolio content and static media
- portfolio.js · Central portfolio data and links used across sections
src/config/portfolio.js - style.css · Typography, terminal theme, responsiveness, and animation
src/style.css - Assets · Images and other static portfolio media
src/assets
Delivery
Build and GitHub Pages publishing
- Vite config · Build and dev-server configuration for the static app
vite.config.js - Deploy · Builds the site and publishes it to GitHub Pages
.github/workflows/deploy.yml - GitHub Pages · Published target for the built portfolio site
Connections 21
- Browser → index.html: loads · The browser requests the entry document
- index.html → main.js: boots · The entry document loads the Vue bootstrap module
- main.js → App: mounts · Vue app is created and mounted into the shell component
- App → Header: includes · Top shell composes terminal framing
- App → Footer: includes · Top shell composes terminal framing
- App → About: renders · App composes the About section
- App → Skills: renders · App composes the Skills section
- App → Projects: renders · App composes the Projects section
- App → Contact: renders · App composes the Contact section
- portfolio.js → App: feeds · Shared content data is consumed by the top-level app
- portfolio.js → About: feeds · Section content is data-driven from shared config
- portfolio.js → Skills: feeds · Section content is data-driven from shared config
- portfolio.js → Projects: feeds · Section content is data-driven from shared config
- portfolio.js → Contact: feeds · Section content is data-driven from shared config
- style.css → App: styles · Global styling shapes the overall shell
- style.css → About: styles · Global styling shapes section presentation
- style.css → Projects: styles · Global styling shapes section presentation
- Assets → App: supplies · Static media used by the portfolio UI
- Vite config → main.js: builds · Vite config controls how the client app is served and bundled
- Deploy → Vite config: runs · CI workflow invokes the Vite build
- Deploy → GitHub Pages: publishes · Built static site is deployed to GitHub Pages