Skip to content

JourneyCodesAyush/JoSh

πŸ–₯️ JoSh (Journey Shell)

Low Activity

HTML CSS JavaScript License Status PRs Welcome Angular Commit Messages Website Repo Size Discussions


A terminal-style portfolio built using HTML, CSS, and vanilla JavaScript.
Inspired by evilprince2009.github.io, this project brings the retro charm of a command-line interface to your personal website.

⚠️ Note: This portfolio currently supports only desktop view (no mobile responsiveness yet).


Live Demo

🎯 Live Site: jo-sh.vercel.app

JoSh terminal interface demo

πŸš€ Features

  • πŸ’» Command-line style interface
  • 🧾 Built-in UNIX-like commands (cd, ls, man, echo, etc.)
  • πŸ“ Simulated file system navigation
  • ✏️ Custom whoami, setname, and social commands
  • 🧠 Command history with arrow key recall
  • πŸ“š man pages for command help
  • πŸ–±οΈ Mouse-free, fully keyboard-driven interaction
  • πŸ’‘ No frameworks, just HTML + CSS + JS

πŸ› οΈ Getting started

Run Locally

You can simply open index.html in your browser β€” no server required.

Once running, you'll be greeted with a terminal-like interface. Try typing help or man to get started!


File Purpose
fileSystem.js Add your data here to customize
manuals.js Customize man pages
style.css Tweak the appearance & colors
main.js Set welcome message & prompt style

You can also:

  • Add new commands inside js/commands/ and register them in registry.js.
  • Modify the virtual file system for your own content.

πŸ”§ Customizing Your Fork

Feel free to fork this repo and make it your own! Here are some quick tips to get started:

  • πŸ“ Customize your portfolio content by editing the fileSystem.js file β€” this is where you add your personal files and structure.

  • πŸ› οΈ Add new commands by creating JavaScript files inside the js/commands/ folder, then register them in registry.js.


πŸ“ Project Structure

josh/
β”œβ”€β”€ favicon.ico        # Website favicon
β”œβ”€β”€ package.json       # Project metadata and dependencies
β”œβ”€β”€ package-lock.json  # Exact dependency versions
β”œβ”€β”€ eslint.config.mjs  # ESLint configuration
β”œβ”€β”€ .stylelintrc.json  # Stylelint configuration
β”œβ”€β”€ index.html         # Main HTML file
β”œβ”€β”€ style.css          # Global styles
β”œβ”€β”€ jsconfig.json      # JS project settings (paths, aliases)
β”œβ”€β”€ js/
β”‚   β”œβ”€β”€ ui.js          # DOM manipulation & terminal UI logic
β”‚   β”œβ”€β”€ filesystem.js  # Virtual file system logic
β”‚   β”œβ”€β”€ manuals.js     # Manual/help content for commands
β”‚   β”œβ”€β”€ commandHistory.js # Command history stack
β”‚   β”œβ”€β”€ types.js       # JSDoc type definitions
β”‚   β”œβ”€β”€ main.js        # Entry point: initializes terminal
β”‚   β”œβ”€β”€ utils.js       # Helper functions
β”‚   └── commands/      # All terminal commands
β”‚       β”œβ”€β”€ cat.js
β”‚       β”œβ”€β”€ cd.js
β”‚       β”œβ”€β”€ clear.js
β”‚       β”œβ”€β”€ date.js
β”‚       β”œβ”€β”€ echo.js
β”‚       β”œβ”€β”€ help.js
β”‚       β”œβ”€β”€ history.js
β”‚       β”œβ”€β”€ ls.js
β”‚       β”œβ”€β”€ man.js
β”‚       β”œβ”€β”€ pwd.js
β”‚       β”œβ”€β”€ setname.js
β”‚       β”œβ”€β”€ whoami.js
β”‚       β”œβ”€β”€ social.js
β”‚       β”œβ”€β”€ registry.js # Command registration
β”‚       └── index.js    # Central export for commands
β”œβ”€β”€ LICENSE             # License information
└── README.md           # You're reading it!

πŸ§‘β€πŸ’» Development Guide

  • Keep command logic modular (one file = one command)
  • Use registry.js to register all commands
  • Follow the Unix philosophy: do one thing, do it well

🧾 Commit Message Convention

✍️ The project follows Conventional Commits, so when contributing or maintaining your fork, use commit messages like:

Please use this format when writing commit messages:

<type>(<scope>): <short message>

Type Description
feat A new feature
fix A bug fix
docs Changes to documentation only
style Code formatting changes (no logic impact)
refactor Code improvements that don't fix bugs or add features
test Adding or modifying tests
chore Routine tasks, build scripts, config changes

πŸ“Œ Examples

feat(weather): add weather command
fix(ui): fix prompt rendering bug
docs(readme): update README with new instructions

If you have questions or want to share your work, feel free to open issues or PRs!


πŸ§ͺ Linting

Ensure consistent code style with:

npm run lint

πŸ“„ License

This project is licensed under the MIT License.

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the β€œSoftware”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

THE SOFTWARE IS PROVIDED β€œAS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

🀝 Contributing

Pull requests are welcome! Feel free to fork the project and submit improvements.

Before contributing, please ensure:

  • Your code is clean and linted
  • Commands are registered in the registry.js
  • Your code follows the style of existing commands

πŸ™ Acknowledgements


πŸ“¬ Author

Made with ❀️ by JourneyCodesAyush


πŸ“› Why "JoSh"?

The name JoSh stands for Journey Shell β€” a personal take on a UNIX-like terminal interface.
It's inspired by my GitHub handle: JourneyCodesAyush, and reflects my journey as a developer learning and building with modern web technologies.


☁️ Special Thanks to Vercel

Powered by Vercel

Big thanks to Vercel for providing a fast, reliable, and free hosting platform for this project.
Their platform made deploying and sharing this terminal-style portfolio incredibly simple.

You can view the live site hosted on Vercel here.

About

A terminal styled portfolio inspired from Linux

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors