|
14 | 14 |
|
15 | 15 | ## ✨ Features |
16 | 16 |
|
17 | | -- 🌍 **Multi-language Support** - English, Spanish, French, and Portuguese |
18 | | -- 🎨 **Modern Design** - Clean, responsive interface with glassmorphism effects |
19 | | -- 📱 **Mobile-First** - Fully responsive across all devices |
20 | | -- ♿ **Accessible** - Semantic HTML and ARIA attributes |
21 | | -- 🚀 **Lightweight** - No heavy frameworks, pure vanilla JavaScript |
22 | | -- ⚡ **Fast** - Static site hosted on GitHub Pages |
23 | | -- 🔧 **Well-Tested** - Unit tests with Jest for core functionality |
24 | | -- 🎯 **SEO Optimized** - Dynamic meta tags and Open Graph support |
25 | | - |
26 | | ---- |
| 17 | +- 🌍 Multi-language support (English, Spanish, French, Portuguese) |
| 18 | +- 🎨 Modern, responsive design with glassmorphism effects |
| 19 | +- Lightweight vanilla JavaScript - no frameworks |
| 20 | +- ⚡ Fast static site hosted on GitHub Pages |
| 21 | +- 🔧 Well-tested with Jest |
| 22 | +- 🎯 SEO optimized with dynamic meta tags |
27 | 23 |
|
28 | 24 | ## 🛠️ Tech Stack |
29 | 25 |
|
30 | | -### Frontend |
31 | | -- **HTML5** - Semantic markup |
32 | | -- **CSS3** - Custom styles with CSS Variables |
33 | | -- **JavaScript (ES6+)** - Vanilla JS, no frameworks |
34 | | -- **Bootstrap 5** - Layout and utilities |
35 | | - |
36 | | -### Development & Quality |
37 | | -- **Jest** - Unit testing |
38 | | -- **ESLint** - Code linting |
39 | | -- **Prettier** - Code formatting |
40 | | -- **GitHub Actions** - CI/CD pipeline |
41 | | - |
42 | | -### Deployment |
43 | | -- **GitHub Pages** - Static site hosting |
44 | | - |
45 | | ---- |
| 26 | +**Frontend:** HTML5 • CSS3 • Vanilla JavaScript • Bootstrap 5 |
| 27 | +**Development:** Jest • ESLint • Prettier |
| 28 | +**CI/CD:** GitHub Actions |
| 29 | +**Deployment:** GitHub Pages |
46 | 30 |
|
47 | 31 | ## 🚀 Quick Start |
48 | 32 |
|
49 | | -### For Non-Technical Users |
50 | | - |
51 | | -Simply visit the live site: **[fernandotonacoder.github.io](https://fernandotonacoder.github.io)** |
| 33 | +### For Visitors |
| 34 | +Simply visit: **[fernandotonacoder.github.io](https://fernandotonacoder.github.io)** |
52 | 35 |
|
53 | 36 | ### For Developers |
54 | | - |
55 | 37 | ```bash |
56 | | -# Clone the repository |
| 38 | +# Clone and install |
57 | 39 | git clone https://github.com/fernandotonacoder/fernandotonacoder.github.io.git |
58 | 40 | cd fernandotonacoder.github.io |
59 | | - |
60 | | -# Install dependencies (for testing/linting only) |
61 | 41 | npm install |
62 | 42 |
|
63 | | -# Run tests |
| 43 | +# Run tests and checks |
64 | 44 | npm test |
65 | | - |
66 | | -# Check code quality |
67 | 45 | npm run lint |
68 | 46 | npm run format:check |
69 | 47 |
|
70 | | -# Open the site locally |
71 | | -# Option 1: Simply open src/index.html in your browser |
72 | | -# Option 2: Use a simple HTTP server |
| 48 | +# Open locally (Option 1: directly in browser) |
| 49 | +open src/index.html |
| 50 | + |
| 51 | +# Or Option 2: with local server |
73 | 52 | python -m http.server 8000 -d src |
74 | | -# Then visit http://localhost:8000 |
75 | 53 | ``` |
76 | 54 |
|
77 | | ---- |
78 | | - |
79 | 55 | ## 📂 Project Structure |
80 | 56 |
|
81 | 57 | ``` |
82 | | -. |
83 | | -├── src/ |
84 | | -│ ├── index.html # Main HTML file |
85 | | -│ ├── css/ |
86 | | -│ │ └── style.css # Custom styles |
87 | | -│ ├── js/ |
88 | | -│ │ ├── translations.js # Multi-language system |
89 | | -│ │ ├── custom-select.js # Language selector dropdown |
90 | | -│ │ └── *.test.js # Unit tests |
91 | | -│ ├── locales/ |
92 | | -│ │ ├── en.json # English translations |
93 | | -│ │ ├── es.json # Spanish translations |
94 | | -│ │ ├── fr.json # French translations |
95 | | -│ │ └── pt.json # Portuguese translations |
96 | | -│ └── assets/ |
97 | | -│ └── images/ # Images and icons |
98 | | -├── .github/ |
99 | | -│ └── workflows/ |
100 | | -│ └── ci-cd.yml # CI/CD pipeline |
101 | | -├── docs/ |
102 | | -│ └── project-instructions.md # Detailed technical documentation |
103 | | -└── package.json # Dependencies and scripts |
| 58 | +src/ |
| 59 | +├── index.html # Main page |
| 60 | +├── css/style.css # Styles |
| 61 | +├── js/ |
| 62 | +│ ├── translations.js # Multi-language system |
| 63 | +│ ├── custom-select.js # Language selector |
| 64 | +│ └── *.test.js # Unit tests |
| 65 | +└── locales/ # Translation files (en, es, fr, pt) |
104 | 66 | ``` |
105 | 67 |
|
106 | | ---- |
107 | | - |
108 | | -## 🌍 Multi-Language System |
109 | | - |
110 | | -The site automatically detects your browser language and displays content accordingly. You can manually switch languages using the dropdown selector. |
111 | | - |
112 | | -**Supported Languages:** |
113 | | -- 🇺🇸 English |
114 | | -- 🇪🇸 Spanish (Español) |
115 | | -- 🇫🇷 French (Français) |
116 | | -- 🇧🇷 Portuguese (Português) |
117 | | - |
118 | | -**How it works:** |
119 | | -1. Checks your saved preference (localStorage) |
120 | | -2. Falls back to browser language |
121 | | -3. Defaults to English if language not supported |
122 | | - |
123 | | ---- |
124 | | - |
125 | | -## 🧪 Testing & Quality Assurance |
126 | | - |
127 | | -This project maintains high code quality standards: |
| 68 | +## 🧪 Development |
128 | 69 |
|
129 | 70 | ```bash |
130 | | -# Run all tests with coverage |
131 | | -npm test |
132 | | - |
133 | | -# Lint JavaScript code |
134 | | -npm run lint |
135 | | - |
136 | | -# Auto-fix linting issues |
137 | | -npm run lint:fix |
138 | | - |
139 | | -# Check code formatting |
140 | | -npm run format:check |
141 | | - |
142 | | -# Format all files |
143 | | -npm run format |
| 71 | +npm test # Run tests |
| 72 | +npm run lint # Check code quality |
| 73 | +npm run lint:fix # Auto-fix issues |
| 74 | +npm run format # Format code |
| 75 | +npm run format:check # Check formatting |
144 | 76 | ``` |
145 | 77 |
|
146 | | -**Test Coverage:** |
147 | | -- ✅ Translation system logic |
148 | | -- ✅ Language detection |
149 | | -- ✅ DOM manipulation |
150 | | -- ✅ Custom dropdown functionality |
| 78 | +## 🔄 CI/CD |
151 | 79 |
|
152 | | ---- |
153 | | - |
154 | | -## 🔄 CI/CD Pipeline |
155 | | - |
156 | | -Every pull request and merge to `main` triggers automated checks: |
157 | | - |
158 | | -### On Pull Request: |
159 | | -- ✅ Code formatting validation (Prettier) |
160 | | -- ✅ Code linting (ESLint) |
161 | | -- ✅ Unit tests (Jest) |
162 | | -- ✅ Test coverage report |
163 | | - |
164 | | -### On Merge to Main: |
165 | | -- ✅ All PR checks |
166 | | -- ✅ Build for GitHub Pages |
167 | | -- ✅ Automatic deployment 🚀 |
168 | | - |
169 | | -**Branch Protection:** |
170 | | -- Direct pushes to `main` are blocked |
171 | | -- All tests must pass before merging |
172 | | -- Branches must be up to date |
173 | | -- Linear history enforced (squash merges) |
174 | | - |
175 | | ---- |
176 | | - |
177 | | -## 🎨 Design Highlights |
178 | | - |
179 | | -- **Color Scheme:** Navy blue primary with accent colors |
180 | | -- **Typography:** System fonts for optimal performance |
181 | | -- **Effects:** Glassmorphism on language selector |
182 | | -- **Icons:** SVG icons with CSS filters for color manipulation |
183 | | -- **Layout:** Bootstrap grid with custom adjustments |
184 | | -- **Animations:** Smooth transitions and hover effects |
185 | | - |
186 | | ---- |
187 | | - |
188 | | -## 📝 Development Notes |
189 | | - |
190 | | -### Code Style |
191 | | -- **Quotes:** Double quotes for strings |
192 | | -- **Semicolons:** Always required |
193 | | -- **Indentation:** 4 spaces |
194 | | -- **Arrow Functions:** Always use parentheses |
195 | | -- **Trailing Commas:** None |
196 | | - |
197 | | -### Adding New Features |
198 | | - |
199 | | -**New Translation:** |
200 | | -1. Add key-value to all JSON files in `src/locales/` |
201 | | -2. Add `data-translate="key"` attribute to HTML element |
202 | | - |
203 | | -**New Language:** |
204 | | -1. Create `src/locales/{lang-code}.json` |
205 | | -2. Add language code to `supportedLangs` in `translations.js` |
206 | | -3. Add language name to `languageNames` in `custom-select.js` |
207 | | -4. Add option to HTML selector |
208 | | - |
209 | | ---- |
210 | | - |
211 | | -## 📄 License |
212 | | - |
213 | | -This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
214 | | - |
215 | | ---- |
| 80 | +- **On PR:** Runs tests, linting, and format checks |
| 81 | +- **On Merge:** Deploys to GitHub Pages automatically |
| 82 | +- **Branch Protection:** All checks must pass before merging |
216 | 83 |
|
217 | 84 | ## 👤 Author |
218 | 85 |
|
219 | | -**Fernando Tona** |
| 86 | +**Fernando Tona** |
| 87 | +🌐 [Website](https://fernandotonacoder.github.io) • 💼 [LinkedIn](https://www.linkedin.com/in/fernandotona/) • 🐙 [GitHub](https://github.com/fernandotonacoder) |
220 | 88 |
|
221 | | -- 🌐 Website: [fernandotonacoder.github.io](https://fernandotonacoder.github.io) |
222 | | -- 💼 LinkedIn: [Fernando Tona](https://www.linkedin.com/in/fernandotona/) |
223 | | -- 🐙 GitHub: [@fernandotonacoder](https://github.com/fernandotonacoder) |
| 89 | +## 📚 Documentation |
224 | 90 |
|
225 | | ---- |
226 | | - |
227 | | -## 🤝 Contributing |
228 | | - |
229 | | -Contributions, issues, and feature requests are welcome! |
230 | | - |
231 | | -1. Fork the project |
232 | | -2. Create your feature branch (`git checkout -b feature/AmazingFeature`) |
233 | | -3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) |
234 | | -4. Push to the branch (`git push origin feature/AmazingFeature`) |
235 | | -5. Open a Pull Request |
236 | | - |
237 | | -**Note:** All PRs must pass automated tests and code quality checks. |
238 | | - |
239 | | ---- |
| 91 | +- **[Technical Documentation](docs/project-instructions.md)** - Architecture, conventions, and detailed guides |
| 92 | +- **[Development Guide](docs/development.md)** - Setup, testing, and contribution guidelines |
| 93 | +- **[Design System](docs/design.md)** - Colors, typography, and styling patterns |
240 | 94 |
|
241 | | -## 📚 Additional Documentation |
| 95 | +## � License |
242 | 96 |
|
243 | | -For detailed technical documentation, see [docs/project-instructions.md](docs/project-instructions.md) |
| 97 | +MIT License - see [LICENSE](LICENSE) for details. |
244 | 98 |
|
245 | 99 | --- |
246 | 100 |
|
247 | 101 | <div align="center"> |
248 | 102 |
|
249 | | -**⭐ Star this repo if you found it useful!** |
| 103 | +**⭐ Star this repo if you find it useful!** |
250 | 104 |
|
251 | 105 | Made with ❤️ by Fernando Tona |
252 | 106 |
|
|
0 commit comments