A modern, interactive terminal-style portfolio built with Next.js 15, TypeScript, and Tailwind CSS. This project transforms the original vanilla JavaScript portfolio into a fully type-safe, modern React application.
- Interactive Terminal Interface - Authentic terminal experience with command execution
- TypeScript Support - Full type safety and excellent developer experience
- Bilingual Support - English and Portuguese with easy language switching
- Responsive Design - Works perfectly on desktop and mobile devices
- Modern Tech Stack - Next.js 15, React 19, TypeScript, Tailwind CSS
- Terminal Commands - Comprehensive set of Unix-like commands
- Component Architecture - Modular, reusable React components
- Custom Hooks - Clean state management with custom React hooks
- Auto-scrolling Terminal - Automatically scrolls to bottom like real terminals
- Fixed Terminal Size - Consistent dimensions regardless of content
- Keyboard Navigation - Full keyboard shortcuts for scrolling and navigation
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Font: JetBrains Mono
- Build Tool: Turbopack (optional)
- Linting: ESLint with Next.js config
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm starthelp- Show available commandsabout- Learn about Gustavo and his backgroundexperience- View work experienceeducation- View academic backgroundskills- See technical skillsprojects- View side projectsresume- Download resumecontact- Get contact information
clear- Clear the terminalwhoami- Display current userls- List available sectionspwd- Show current directorydate- Show current dateuname- Show system informationcat [file]- Display file contentsecho [text]- Display textneofetch- Show system info with ASCII arthistory- Show command historytree- Show directory structureps- Show active processestop- Show top processesuptime- Show system uptime
Page Up/Down- Scroll through terminal outputCtrl+Home- Scroll to top of terminalCtrl+End- Scroll to bottom of terminalβ/β arrows- Navigate command historyTab- Autocomplete commands
All commands have Portuguese equivalents:
ajuda(help),sobre(about),experiencia(experience)educacao(education),habilidades(skills),projetos(projects)curriculo(resume),contato(contact),limpar(clear)
src/
βββ app/ # Next.js App Router
β βββ globals.css # Global styles and terminal CSS
β βββ layout.tsx # Root layout with metadata
β βββ page.tsx # Main page component
βββ components/ # React components
β βββ Terminal.tsx # Main terminal container
β βββ TerminalHeader.tsx # Terminal header with controls
β βββ TerminalBody.tsx # Terminal body container
β βββ TerminalInput.tsx # Command input component
β βββ TerminalOutput.tsx # Output display component
β βββ ASCIIArt.tsx # ASCII art display
βββ hooks/ # Custom React hooks
β βββ useTerminal.ts # Terminal state management
β βββ useTranslation.ts # Translation utilities
βββ data/ # Static data
β βββ translations.ts # Language translations
βββ types/ # TypeScript type definitions
βββ index.ts # All type definitions
The project uses a custom CSS design that mimics a real terminal:
- Colors: Dark theme with green, blue, and yellow accents
- Font: JetBrains Mono for authentic monospace feel
- Animations: Smooth transitions and terminal startup animation
- Responsive: Adapts to different screen sizes
- Accessibility: Proper focus states and keyboard navigation
- Type Safety: Full TypeScript coverage with strict typing
- Component Design: Modular React components for easy maintenance
- State Management: Custom hooks for clean state handling
- Performance: Next.js optimizations and code splitting
- SEO: Proper metadata and social media tags
- Terminal Behavior: Authentic terminal experience with auto-scrolling
- Fixed Dimensions: Terminal maintains consistent size (1200x700px on desktop)
- Scroll Management: Smart scrolling with visual indicators and shortcuts
useTerminal: Manages terminal state, command execution, and historyuseTranslation: Handles internationalization and language switching
- Add command translation in
src/data/translations.ts - Implement command logic in
src/hooks/useTerminal.ts - Add TypeScript types if needed in
src/types/index.ts
The project is optimized for deployment on:
- Vercel (recommended)
- Netlify
- GitHub Pages (static export)
- Any hosting service supporting Node.js
# Build for static export (optional)
npm run build
# Deploy to Vercel
vercel --prod- Fork the repository
- Create a feature branch
- Make your changes with proper TypeScript types
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
Gustavo Muniz
- Website: gustavomuniz.dev
- GitHub: @gustavomuniz
- LinkedIn: gustavomuniz
After transformation, your portfolio is now ready to run:
# Install dependencies (if needed)
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm startThe application will be available at http://localhost:3000
Your original files have been preserved:
index.html.backup- Original HTML fileassets-original/- Original CSS and JavaScript filesREADME.md.backup- Original README
The new TypeScript structure includes:
- Modern React components with full type safety
- Custom hooks for state management
- Responsive design with Tailwind CSS
- Enhanced developer experience with TypeScript
- Better performance with Next.js optimizations
- Type Safety: All code is now fully typed with TypeScript
- Component Architecture: Modular React components for better maintainability
- Modern Tooling: Next.js 15, React 19, ESLint, and Prettier
- Performance: Optimized builds and code splitting
- Developer Experience: Hot reloading, better error messages, IntelliSense
- SEO Ready: Proper metadata and social media tags
- Deployment Ready: Optimized for Vercel, Netlify, and other platforms
- Real Terminal Feel: Auto-scrolling, fixed dimensions, keyboard navigation
- Enhanced UX: Scroll indicators, jump-to-bottom button, smooth scrolling
If you find this project helpful and want to support its development, consider buying me a coffee:
Your support helps me maintain and improve this project!
We welcome contributions! Please see our Contributing Guidelines for details.
- π Bug Reports: Found an issue? Open a bug report
- π‘ Feature Requests: Have an idea? Request a feature
- β Questions: Need help? Ask a question
- π Security: Found a vulnerability? Check our Security Policy
Please read our Code of Conduct before contributing.
Built with β€οΈ using TypeScript and modern web technologies