A customizable, interactive terminal-style portfolio website built with Next.js, TypeScript, and TailwindCSS. This project allows developers to showcase their work through a unique terminal interface.
- ๐ฅ๏ธ Terminal-like interface with command history
- ๐ฎ Interactive number guessing game
- ๐จ Multiple built-in themes (dark, light, matrix, retro)
- โจ๏ธ Command history navigation with arrow keys
- ๐ฑ Fully responsive design
- โจ Beautiful background effects with gradient and blur
- ๐ Built with Next.js and TypeScript
- ๐ฏ Easy to customize through JSON files
- ๐จ TailwindCSS for styling
- ๐ Type-safe development with TypeScript
- Clone the repository:
git clone https://github.com/anibalalpizar/terminal-portfolio-json.git
cd terminal-portfolio-json
- Install dependencies:
npm install
- Start the development server:
npm run dev
The terminal supports the following commands:
about
- Display information about youprojects
- Show your projectsskills
- List your technical skillscontact
- Display contact informationhelp
- Show available commandsclear
- Clear the terminaltheme
- Change terminal themegame
- Play the number guessing game
- Type
game
to start a new game - You'll get 5 attempts to guess a number between 1 and 100
- After each guess, you'll receive hints whether the number is higher or lower
- Try to guess the number before running out of attempts!
Modify src/data/portfolio.json
to update your personal information:
{
"name": "Your Name",
"bio": "Your bio description",
"skills": ["Skill 1", "Skill 2", "Skill 3"],
"projects": [
{
"name": "Project Name",
"description": "Project description",
"link": "https://project-link.com"
}
],
"socialLinks": {
"github": "https://github.com/yourusername",
"linkedin": "https://linkedin.com/in/yourusername"
}
}
Customize or add new themes in src/data/themes.json
:
{
"themeName": {
"name": "Theme Display Name",
"background": "#BACKGROUND_COLOR",
"foreground": "#TEXT_COLOR",
"accent": "#ACCENT_COLOR",
"selection": "rgba(COLOR, OPACITY)"
}
}
Add or modify commands in src/data/commands.json
:
{
"commandName": "Command description"
}
src/
โโโ app/ # Next.js app directory
โ โโโ layout.tsx # Root layout component
โ โโโ page.tsx # Home page component
โ โโโ globals.css # Global styles
โโโ components/ # React components
โ โโโ Terminal.tsx # Main terminal component
โ โโโ CommandLine.tsx # Command input component
โ โโโ Background.tsx # Background effects
โโโ data/ # Configuration files
โ โโโ portfolio.json # Portfolio content
โ โโโ commands.json # Available commands
โ โโโ themes.json # Theme configurations
โโโ hooks/ # Custom React hooks
โ โโโ useTheme.ts # Theme management
โ โโโ useGame.ts # Game logic
โโโ types/ # TypeScript type definitions
โโโ index.ts # Type declarations
- Add the command to
src/types/index.ts
:
export type Command = "existing" | "commands" | "newCommand";
- Add the command description to
src/data/commands.json
- Implement the command handler in
Terminal.tsx
- Create new components in
src/components/
- Add new hooks in
src/hooks/
for complex logic - Update types in
src/types/
- Modify the Terminal component to include new functionality
- Next.js - React framework
- TypeScript - Type safety
- TailwindCSS - Styling
- React - UI library
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- Follow the existing code style
- Add types for new features
- Update documentation for significant changes
- Add tests for new functionality
- Ensure responsive design
- Maintain accessibility standards
This project is open source and available under the MIT License.
If you find this project helpful, please give it a โญ๏ธ on GitHub!