A modern, terminal-style portfolio and blog built with React, TypeScript, and Vite. Termolio provides an interactive terminal interface for showcasing projects, articles, and personal information in a unique, developer-friendly way.
- ๐ฅ๏ธ Terminal Interface: Interactive command-line interface with context-aware commands
- ๐ Tabbed Navigation: Open files and content in tabs for easy navigation
- ๐จ Syntax Highlighting: Code blocks with customizable themes (Dracula, Material Dark, etc.)
- ๐งฎ LaTeX Support: Mathematical expressions rendered with KaTeX
- ๐ Markdown Support: Full markdown rendering with GitHub Flavored Markdown
- โ๏ธ Dynamic Configuration: JSON-based configuration system
- ๐ Smart Autocomplete: Context-aware command and file completion
- ๐ Content Management: Organized articles and projects
- ๐ณ Docker Ready: Development and production Docker configurations
- Node.js (v20.19.0+ or v22.12.0+)
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd termolio- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
help- Show available commandsls- List files and directories in current pathcd [directory]- Change directory (articles, projects)cat [filename]- Open and display file content in a new tabprojects- List all available projectsarticles- List all available articlesclear- Clear terminal history
- Tab: Autocomplete commands and file names
- โ/โ: Navigate command history
- Ctrl+C: Clear current input
Termolio uses a JSON-based configuration system located at src/config.json. You can customize various aspects of the application:
{
"site": {
"name": "Termolio",
"description": "A terminal-style portfolio and blog",
"author": "Your Name",
"url": "https://termolio.example.com"
},
"theme": {
"syntax_highlighting": "dracula",
"terminal_theme": "dark",
"font_family": "monospace"
},
"content": {
"articles_path": "content/articles",
"projects_path": "content/projects",
"max_recent_items": 5
},
"terminal": {
"prompt_symbol": "โฏ",
"default_path": "/",
"welcome_message": "Welcome to Termolio! Type `help` to see available commands."
},
"navigation": {
"show_breadcrumbs": true,
"enable_autocomplete": true,
"history_limit": 100
}
}name: Application name displayed in the terminal titledescription: Site description for meta tagsauthor: Author nameurl: Site URL
syntax_highlighting: Code syntax theme ("dracula", "materialDark")terminal_theme: Terminal color schemefont_family: Font family for the terminal
articles_path: Path to articles directoryprojects_path: Path to projects directorymax_recent_items: Maximum number of recent items to display
prompt_symbol: Symbol used in the terminal promptdefault_path: Default starting pathwelcome_message: Message displayed when the terminal loads
show_breadcrumbs: Enable/disable breadcrumb navigationenable_autocomplete: Enable/disable autocomplete functionalityhistory_limit: Maximum number of commands to keep in history
- Create a new markdown file in
src/content/articles/ - Add the filename to the articles list in
src/utils/contentLoader.ts - The article will automatically be available via the
articlesandcatcommands
- Create a new markdown file in
src/content/projects/ - Add the filename to the projects list in
src/utils/contentLoader.ts - The project will automatically be available via the
projectsandcatcommands
Termolio supports:
- GitHub Flavored Markdown (tables, strikethrough, task lists, etc.)
- Code blocks with syntax highlighting
- Mathematical expressions using LaTeX syntax
- Inline code formatting
Example markdown with LaTeX:
# Sample Article
Here's some inline math: $E = mc^2$
And a code block:
```javascript
function hello() {
console.log('Hello, World!');
}Block math: $$ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} $$
## Docker Support
### Development
```bash
# Build and run development container
docker build -f Dockerfile.dev -t termolio:dev .
docker run -p 5173:5173 -v $(pwd):/app termolio:dev
# Build and run production container
docker build -f Dockerfile.prod -t termolio:prod .
docker run -p 4173:4173 termolio:prodnpm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run lint- Run ESLint
The project includes a GitHub Actions workflow for automated Docker image builds on push/PR to the main branch.
- React 19 - UI library
- TypeScript - Type safety
- Vite - Build tool and dev server
- React Markdown - Markdown rendering
- React Syntax Highlighter - Code syntax highlighting
- KaTeX - LaTeX math rendering
- Tailwind CSS - Utility-first CSS framework
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.