This file contains guidelines and commands for agentic coding agents working in this repository.
This is a Next.js 16 terminal-style portfolio website built with TypeScript, React, and Tailwind CSS. The project simulates a command-line interface where users can explore portfolio content through terminal commands.
npm run dev- Start development server with Turbo (recommended for development)npm run build- Build production applicationnpm run start- Start production servernpm run lint- Run ESLint for code quality checks
This project currently does not have a test framework configured. When adding tests, check for existing test patterns or ask the user for preferred testing approach.
- Biome: Primary formatter (configured with tabs, double quotes)
- ESLint: Linting with Next.js recommended rules
- Prettier: Available but Biome is preferred for formatting
- Use tabs for indentation (Biome configuration)
- Use double quotes for strings and object properties
- Follow Biome formatting rules over Prettier when conflicts occur
- Run
npx @biomejs/biome check --write .to auto-format files
- Strict mode enabled
- Target ES2017
- React JSX transform
- Path alias:
@/*maps to./src/*
- Group imports: React/Next.js → third-party → local modules
- Use absolute imports with
@/prefix for local modules - Example order:
import type { Metadata } from "next"; import { useRef, useEffect } from "react"; import TerminalInput from "./terminal-input"; import { fileSystem } from "@/utils/file-system";
- Use functional components with React hooks
- Client components: Add
"use client";directive at top - Export components as default:
export default function ComponentName() - Use TypeScript interfaces for props and data structures
- Component files use kebab-case:
terminal-input.tsx
- Jotai is used for global state management
- Create atoms with
atom()function - Use
useAtom()hook for accessing state - Example:
const [input, setInput] = useAtom(inputAtom);
- Tailwind CSS v4 with custom configuration
- Use utility classes for styling
- Responsive design with mobile-first approach
- Terminal theme: black background, green/gray text
- Custom CSS variables in
src/styles/tailwind.cssfor animations
src/
├── app/ # Next.js app router pages
│ ├── layout.tsx # Root layout component
│ └── page.tsx # Home page component
├── components/ # React components
│ ├── terminal-input.tsx # Terminal input component
│ ├── terminal.tsx # Main terminal component
│ └── terminal-ouput-history.tsx # Output history component
├── hooks/ # Custom React hooks
│ └── use-terminal.ts # Terminal logic hook
├── styles/ # CSS and Tailwind files
│ ├── tailwind.css # Tailwind CSS configuration
│ └── style.css # Global styles
└── utils/ # Utility functions and data
├── cmds.ts # Command definitions and parsing
├── file-system.ts # File system simulation
├── text.ts # Static text content
└── register-styled-components.js # Styled components setup
public/
├── assets/
│ ├── tech/ # Technology stack icons
│ ├── social/ # Social media icons
│ └── [profile-images] # Personal and placeholder images
- Components: PascalCase (e.g.,
TerminalInput) - Files: kebab-case (e.g.,
terminal-input.tsx) - Variables/Functions: camelCase (e.g.,
executeCmd) - Constants: UPPER_SNAKE_CASE (e.g.,
AvailableCmds) - Interfaces: PascalCase with descriptive names (e.g.,
CommandHistory)
- Use TypeScript for compile-time type safety
- Validate command inputs in
parseCommandfunction - Handle unknown commands gracefully in terminal
- Use Zod for runtime validation when needed
- Commands are defined in
AvailableCmdsarray - Use
parseCommandutility for command parsing - Command history managed with Jotai atoms
- File system simulation in
utils/file-system.ts - Terminal output types: "success" | "error" | "info"
- Next.js 16: React framework with App Router
- React 19: UI library
- TypeScript: Type safety
- Tailwind CSS v4: Styling
- Jotai: State management
- Framer Motion: Animations
- Zod: Schema validation
- Firebase: Backend services
- Octokit: GitHub API client
- React Icons: Icon library
- Styled Components: CSS-in-JS styling
- @uidotdev/usehooks: Custom React hooks
- Biome: Formatting and linting
- ESLint: Code quality
- Prettier: Code formatting (secondary)
- Type Safety: Always use TypeScript interfaces for data structures
- Component Composition: Build small, reusable components
- State Management: Use Jotai atoms for shared state
- Performance: Leverage Next.js optimizations and React.memo when needed
- Accessibility: Ensure terminal interface is keyboard-navigable
- Mobile-First: Design responsive layouts with Tailwind breakpoints
- Add command to
AvailableCmdsarray inutils/cmds.ts - Implement command logic in
useTerminalhook - Add any required text content to
utils/text.ts - Update file system if command interacts with files
- Use functional component pattern with TypeScript
- Add
"use client";if using hooks or browser APIs - Import and export consistently
- Follow naming conventions
- Use Tailwind for styling
- Create atoms in appropriate hook files
- Use
useAtomfor accessing state - Keep state close to where it's used
- Consider performance implications
- This is a static site portfolio with terminal interface
- Focus on user experience and interactive command responses
- Maintain consistency with terminal theme and behavior
- Test commands thoroughly before deployment