Thanks for your interest in contributing! This document outlines how to get started.
git clone https://github.com/F2had/famfolio.git # HTTPS
git clone [email protected]:F2had/famfolio.git # SSH (requires keys)
cd famfolio
bun install # Install dependencies
bun dev # Start development serversrc/
├── assets/styles/ # SCSS variables, typography, animations
├── components/
│ ├── common/ # Reusable components (BaseButton, etc.)
│ ├── layout/ # Navigation, Footer, SectionWrapper
│ ├── sections/ # Hero, About, Projects, Contact
│ └── transitions/ # Theme and locale transition effects
├── composables/ # Vue composables (useTheme, useLocale, etc.)
├── locales/ # Translation files (en.json, ar.json)
├── plugins/ # Vuetify and i18n setup
└── types/ # TypeScript definitions
- Vue: Composition API with
<script setup> - TypeScript: Strict mode enabled
- Formatting: Prettier (runs automatically via pre-commit hook)
- Linting: OXLint + ESLint
Pre-commit hooks will automatically lint and format your code.
git switch -c feature/your-feature-name- Follow existing code patterns
- Add TypeScript types for new features
- Test RTL layout if modifying UI components
- Respect
prefers-reduced-motionfor animations
# Run linters
bun run lint
# Type check
bun run type-check
# Test CI locally (requires act)
bun run ci:testCommits are automatically linted. Use clear, descriptive messages:
git commit -m "feat: add new animation option"
git commit -m "fix: resolve RTL layout issue in nav"
git commit -m "docs: update configuration examples"- Push your branch and open a PR
- Fill out the PR template
- Link any related issues
- Check existing issues first
- Create a minimal reproduction if possible
- Submit a PR with the fix
- Open an issue first to discuss the feature
- Wait for approval before starting work
- Keep PRs focused on a single feature
- Fix typos, clarify explanations
- Add examples for configuration options
- Translate to new languages
To add a new language:
- Create
src/locales/{code}.json - Add locale to
config/site.config.yaml - Add fonts if needed in
_typography.scss
Always test RTL when modifying layout:
- Switch to Arabic in the locale toggle
- Check text alignment, spacing, and icons
- Verify animations work in both directions
- Open a Discussion
- Check existing issues and PRs
By contributing, you agree that your contributions will be licensed under the MIT License.