This document provides comprehensive instructions for AI agents working on the Involvex project. It covers useful commands, technologies, best practices, and guidelines to ensure consistent and high-quality code contributions.
- Project Overview
- Useful Commands
- Technologies
- Best Practices and Guidelines
- Code Style and Standards
- Development Workflow
Involvex is an interactive terminal-style portfolio built with Vue 3, TypeScript, and Vite. The project features a command-line interface that showcases projects, skills, and contact information in an authentic terminal experience.
- Terminal interface with command-line interactions
- Modern dark theme with green terminal aesthetics
- Responsive design for desktop, tablet, and mobile
- Interactive commands (help, about, projects, skills, contact, sponsor, etc.)
- GitHub integration
- Contact form with EmailJS
- reCAPTCHA enterprise for security
- GitHub: https://github.com/involvex/Involvex
- Homepage: https://involvex.github.io/Involvex/
- License: MIT
| Command | Description |
|---|---|
bun run dev |
Start the development server with hot module replacement |
bun run build |
Run full build pipeline (format, lint, typecheck, then build) |
bun run preview |
Preview the production build locally |
bun run production |
Run production build with production mode |
bun run serve |
Start development server (alias for vite -m development) |
| Command | Description |
|---|---|
bun run lint |
Run ESLint to check for code issues |
bun run lint:fix |
Run ESLint with auto-fix for fixable issues |
bun run lint:oxlint |
Run oxlint for additional correctness checks |
bun run format |
Format code using Prettier |
| Command | Description |
|---|---|
bun run typecheck |
Run TypeScript type checking with vue-tsc |
| Command | Description |
|---|---|
git status |
Show working tree status |
git diff |
Show changes in working directory |
git log |
Show commit history |
git add . && git commit -m "message" |
Stage and commit changes |
git push |
Push commits to remote |
| Technology | Version | Purpose |
|---|---|---|
| Vue.js | ^3.5.34 | Progressive JavaScript framework |
| TypeScript | ~6.0.3 | Type-safe JavaScript |
| Vite | 7.3.1 (rolldown-vite) | Fast build tool and dev server |
| CSS3 | - | Modern styling with animations |
| Package | Purpose |
|---|---|
@emailjs/browser |
Email sending from frontend |
@formwerk/core |
Form handling |
@vitejs/plugin-vue |
Vue.js support for Vite |
cross-env |
Cross-platform environment variables |
vue-router |
Client-side routing |
| Package | Purpose |
|---|---|
| ESLint | JavaScript/TypeScript linting |
| Prettier | Code formatting |
| oxlint | Fast linting for correctness |
| vue-tsc | TypeScript checking for Vue |
| vite-plugin-vue-devtools | Vue DevTools integration |
| vite-plugin-inspect | Vite plugin inspection |
- Vue.volar - Vue.js language support
- ESLint - Code linting
- EditorConfig - Consistent coding styles
- oxc-vscode - Oxc linting support
- Prettier - Code formatting
- Use Composition API - Prefer
<script setup>syntax for Vue 3 components - TypeScript Integration - Always use TypeScript for type safety
- Component Structure - Keep components focused and single-purpose
- Reactive Data - Use
ref,reactive, orcomputedappropriately - Props and Emits - Define props with proper types and use
defineEmits
- Strict Mode - Enable strict type checking
- Explicit Types - Avoid
any; use proper types - Interfaces - Use interfaces for object shapes
- Generics - Use generics for reusable components
- Type Guards - Use type guards for runtime type checking
src/
├── assets/ # Static assets (CSS, images)
│ ├── main.css
│ └── base.css
├── components/ # Vue components
│ ├── TerminalBody.vue
│ ├── TerminalHeader.vue
│ ├── TerminalInput.vue
│ └── icons/ # Icon components
├── router/ # Vue Router configuration
├── utils/ # Utility functions
├── App.vue # Root component
└── main.ts # Application entry point
- Use Scoped CSS - Prefer
<style scoped>for component-specific styles - CSS Variables - Use CSS custom properties for theming
- Mobile-First - Design responsive styles from mobile up
- Terminal Aesthetics - Maintain the dark theme with green terminal colors
- Environment Variables - Never commit secrets; use
.envfiles - reCAPTCHA - Use enterprise reCAPTCHA for form protection
- Input Validation - Validate all user inputs
- EmailJS - Only expose public keys in frontend code
- Lazy Loading - Use dynamic imports for routes
- Tree Shaking - Enable in production builds
- Asset Optimization - Compress images and use modern formats
- Bundle Analysis - Use vite-plugin-inspect to analyze bundles
- Use 2 spaces for indentation
- Use single quotes for strings
- Use semicolons at the end of statements
- Use camelCase for variables and functions
- Use PascalCase for components and classes
- Use UPPER_SNAKE_CASE for constants
<script setup lang="ts">
// Imports
import {ref, computed} from 'vue'
// Props
interface Props {
title: string
count?: number
}
const props = withDefaults(defineProps<Props>(), {
count: 0,
})
// Emits
const emit = defineEmits<{
update: [value: string]
}>()
// Reactive state
const isLoading = ref(false)
// Computed properties
const displayTitle = computed(() => props.title.toUpperCase())
// Methods
function handleClick() {
emit('update', 'new value')
}
</script>
<template>
<div class="component-name">
{{ displayTitle }}
</div>
</template>
<style scoped>
.component-name {
/* Scoped styles */
}
</style>// Interfaces
interface User {
id: string
name: string
email: string
}
// Types
type Status = 'pending' | 'active' | 'inactive'
// Functions
function greetUser(user: User): string {
return `Hello, ${user.name}!`
}
// Arrow functions with proper typing
const processData = (data: string[]): number => {
return data.length
}The project uses:
- Prettier with
@involvex/prettier-configfor code formatting - ESLint with Vue and TypeScript support
- oxlint for additional correctness checks
Run formatting before committing:
bun run format
bun run lint:fix
bun run typecheck- Understand the task - Read the requirements carefully
- Check existing code - Review similar implementations
- Plan the approach - Break down the task into steps
- Follow the tech stack - Use Vue 3, TypeScript, and Vite
- Maintain code quality - Run linting and type checking
- Test locally - Verify changes work as expected
- Keep changes focused - One feature or fix per commit
- Run the full build pipeline:
bun run build
- Verify no linting errors:
bun run lint
- Verify type checking passes:
bun run typecheck
The project uses GitHub Actions for deployment (see .github/workflows/deploy.yml). The production build is deployed to GitHub Pages at https://involvex.github.io/Involvex/.
When working with environment variables:
- Copy
.env.exampleto.env - Never commit
.envfiles with secrets - Use
VITE_*prefix for Vite environment variables
Required variables for EmailJS:
VITE_EMAILJS_SERVICE_ID=your_service_id
VITE_EMAILJS_TEMPLATE_ID=your_template_id
VITE_EMAILJS_PUBLIC_KEY=your_public_key
- GitHub: @involvex
- Email: involvex@proton.me
Last Updated: May 2026 This file is maintained by the Involvex project contributors