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 Site: jo-sh.vercel.app
- π» Command-line style interface
- π§Ύ Built-in UNIX-like commands (
cd,ls,man,echo, etc.) - π Simulated file system navigation
- βοΈ Custom
whoami,setname, andsocialcommands - π§ Command history with arrow key recall
- π
manpages for command help - π±οΈ Mouse-free, fully keyboard-driven interaction
- π‘ No frameworks, just HTML + CSS + JS
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 inregistry.js. - Modify the virtual file system for your own content.
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.jsfile β 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 inregistry.js.
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!- Keep command logic modular (
one file = one command) - Use
registry.jsto register all commands - Follow the Unix philosophy: do one thing, do it well
βοΈ 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 |
feat(weather): add weather command
fix(ui): fix prompt rendering bug
docs(readme): update README with new instructionsIf you have questions or want to share your work, feel free to open issues or PRs!
Ensure consistent code style with:
npm run lintThis 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.
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
- Inspired by this amazing guy
- Built with β₯ using plain HTML, CSS & JavaScript
- Thanks to shields.io for the awesome badges
Made with β€οΈ by JourneyCodesAyush
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.
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.
