|
| 1 | +# Portfolio Website - Patrick Araujo (PkLavc) |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +This repository contains a static portfolio website for Patrick Araujo, focused on solutions architecture, systems engineering, API integration, automation, and data pipelines. The website is built using HTML, CSS and JavaScript and includes modern SEO improvements, structured data, and social sharing metadata. |
| 6 | + |
| 7 | +The site includes three main pages: |
| 8 | + |
| 9 | +- `index.html` — homepage with profile, skills and contact links |
| 10 | +- `about.html` — detailed profile, professional history, clients and certifications |
| 11 | +- `projects.html` — portfolio showcase of backend and integration projects |
| 12 | + |
| 13 | +Additional files: |
| 14 | + |
| 15 | +- `robots.txt` — indexation policy |
| 16 | +- `sitemap.xml` — crawlable site map |
| 17 | +- `css/` — stylesheet collection |
| 18 | +- `js/` — frontend script assets |
| 19 | +- `images/` — visual and icon assets |
| 20 | + |
| 21 | +--- |
| 22 | + |
| 23 | +## Technology Stack |
| 24 | + |
| 25 | +### Core Web Technologies |
| 26 | + |
| 27 | +- **HTML5** — semantic page structure |
| 28 | +- **CSS3** — responsive layout, color theme, and visual styling |
| 29 | +- **JavaScript** — dynamic interactions, page behavior, and animations |
| 30 | + |
| 31 | +### Libraries and frameworks |
| 32 | + |
| 33 | +- **GSAP** — animation library loaded from CDN for motion effects |
| 34 | +- **particles.js** — particle background animation engine |
| 35 | +- **jQuery** — legacy DOM helper for existing page scripts |
| 36 | + |
| 37 | +### SEO and Metadata |
| 38 | + |
| 39 | +- **Open Graph** tags for rich social sharing |
| 40 | +- **Twitter Card** metadata for Twitter previews |
| 41 | +- **Canonical links** to avoid duplicate content issues |
| 42 | +- **Schema.org JSON-LD** profile and page structured data |
| 43 | +- **robots** index/follow instructions |
| 44 | +- **Sitemap** configuration for search engines |
| 45 | + |
| 46 | +--- |
| 47 | + |
| 48 | +## Page Structure and Purpose |
| 49 | + |
| 50 | +### `index.html` |
| 51 | + |
| 52 | +- Serves as the main landing page for a solutions and integration architect |
| 53 | +- Contains a visible `<h1>` with the name, followed by descriptive `<h2>` content |
| 54 | +- Implements particle background animation using `particles.js` |
| 55 | +- Uses social media icons with descriptive `alt` text |
| 56 | +- Includes a hidden `visually-hidden` SEO paragraph for technical keyword reinforcement |
| 57 | +- Contains multiple JSON-LD blocks to represent profile and page schema |
| 58 | + |
| 59 | +### `about.html` |
| 60 | + |
| 61 | +- Provides the candidate’s professional profile, certifications, and company affiliations |
| 62 | +- Uses detailed Open Graph and Twitter metadata |
| 63 | +- Includes client logos and project references with proper `alt` descriptions |
| 64 | +- Maintains a hidden `h1` plus visible `h2` for SEO semantics without altering layout |
| 65 | +- Includes a hidden `visually-hidden` paragraph for architecture and enterprise keywords |
| 66 | + |
| 67 | +### `projects.html` |
| 68 | + |
| 69 | +- Displays a portfolio of backend, API integration, automation, and data pipeline work |
| 70 | +- Uses `CollectionPage` JSON-LD with individual `CreativeWork` items defined in structured data |
| 71 | +- Includes Open Graph and Twitter metadata tuned for project discovery |
| 72 | +- Contains a hidden `h1` and visible `h2` heading for SEO semantics without visual change |
| 73 | +- Includes a hidden semantic footer paragraph for robots |
| 74 | + |
| 75 | +--- |
| 76 | + |
| 77 | +## File Structure |
| 78 | + |
| 79 | +```text |
| 80 | +Downloads/ |
| 81 | +├── about.html |
| 82 | +├── index.html |
| 83 | +├── projects.html |
| 84 | +├── robots.txt |
| 85 | +├── sitemap.xml |
| 86 | +├── css/ |
| 87 | +│ ├── about.css |
| 88 | +│ ├── color-blue.css |
| 89 | +│ ├── global.css |
| 90 | +│ ├── index.css |
| 91 | +│ └── projects.css |
| 92 | +├── js/ |
| 93 | +│ ├── index.js |
| 94 | +│ ├── jquery.min.js |
| 95 | +│ ├── particles.js |
| 96 | +│ └── particles.min.js |
| 97 | +├── images/ |
| 98 | +├── README.md |
| 99 | +└── LICENSE.txt |
| 100 | +``` |
| 101 | + |
| 102 | +--- |
| 103 | + |
| 104 | +## SEO Architecture |
| 105 | + |
| 106 | +### Metadata and social sharing |
| 107 | + |
| 108 | +- `meta name="description"` — supports search engine snippets |
| 109 | +- `meta property="og:title"` — controls Facebook and LinkedIn shared title |
| 110 | +- `meta property="og:description"` — supports enterprise and systems architecture messaging |
| 111 | +- `meta property="og:image"` — profile image for social cards |
| 112 | +- `meta name="twitter:card"` — summary_large_image for rich Twitter previews |
| 113 | +- `meta property="og:image:alt"` and `meta name="twitter:image:alt"` — accessible image descriptions |
| 114 | +- `canonical` — resolves the preferred URL |
| 115 | + |
| 116 | +### Structured Data |
| 117 | + |
| 118 | +Implemented JSON-LD schema types: |
| 119 | + |
| 120 | +- `ProfilePage` for `index.html` |
| 121 | +- `AboutPage` for `about.html` |
| 122 | +- `CollectionPage` for `projects.html` |
| 123 | +- `Person` profile metadata inside page schemas |
| 124 | +- `CreativeWork` items for featured projects |
| 125 | + |
| 126 | +### Robots and Sitemap |
| 127 | + |
| 128 | +- `robots.txt` currently allows indexing for all crawlers and points to the sitemap |
| 129 | +- `sitemap.xml` includes all published pages with `lastmod`, `changefreq`, and `priority` |
| 130 | + |
| 131 | +--- |
| 132 | + |
| 133 | +## Accessibility and Semantic Enhancements |
| 134 | + |
| 135 | +- `alt` attributes applied to all `<img>` tags with descriptive phrases |
| 136 | +- `aria-label` used on key profile and contact elements |
| 137 | +- hidden `div.visually-hidden` paragraphs added for technical semantics using clipping instead of `display:none` |
| 138 | +- visible page headings preserved while adding hidden `h1` for SEO semantics on secondary pages |
| 139 | + |
| 140 | +--- |
| 141 | + |
| 142 | +## Performance and Script Loading |
| 143 | + |
| 144 | +### Script loading strategy |
| 145 | + |
| 146 | +- `jquery.min.js` loaded with `defer` to avoid render-blocking |
| 147 | +- `particles.min.js` intentionally loaded without `defer` for inline `particlesJS(...)` initialization compatibility |
| 148 | +- `index.js` loaded with `defer` |
| 149 | +- `gsap.min.js` loaded from CDN with `defer` |
| 150 | + |
| 151 | +### Observations |
| 152 | + |
| 153 | +- The particle background depends on `particles.min.js`, so correct load order is essential |
| 154 | +- Hidden SEO text is added without affecting visible layout |
| 155 | +- The site uses client-side animations and progressive enhancement |
| 156 | + |
| 157 | +--- |
| 158 | + |
| 159 | +## Visual / Interaction Design |
| 160 | + |
| 161 | +The design uses: |
| 162 | + |
| 163 | +- a dark theme with blue accent colors from `color-blue.css` |
| 164 | +- particle animation in the hero section |
| 165 | +- social media icon links for GitHub, LinkedIn, and email |
| 166 | +- skill badges and technology icons in the core profile panel |
| 167 | +- slide carousels and logo grids on the about page |
| 168 | + |
| 169 | +--- |
| 170 | + |
| 171 | +## Mermaid Diagrams |
| 172 | + |
| 173 | +### Site structure |
| 174 | + |
| 175 | +```mermaid |
| 176 | +flowchart TB |
| 177 | + A[index.html] |
| 178 | + B[about.html] |
| 179 | + C[projects.html] |
| 180 | + A -->|profile| B |
| 181 | + A -->|portfolio| C |
| 182 | + A -->|shared assets| css/ |
| 183 | + A -->|shared assets| js/ |
| 184 | + A -->|meta data| robots.txt |
| 185 | + A -->|meta data| sitemap.xml |
| 186 | +``` |
| 187 | + |
| 188 | +### SEO data flow |
| 189 | + |
| 190 | +```mermaid |
| 191 | +flowchart LR |
| 192 | + SearchEngine[Search Engine] |
| 193 | + Page[HTML Pages] |
| 194 | + Meta[Open Graph + Twitter] |
| 195 | + JSONLD[Structured Data] |
| 196 | + Robots[robots.txt / sitemap.xml] |
| 197 | + Alt[Alt Text] |
| 198 | + Hidden[Hidden Keyword Block] |
| 199 | +
|
| 200 | + Page --> Meta |
| 201 | + Page --> JSONLD |
| 202 | + Page --> Alt |
| 203 | + Page --> Hidden |
| 204 | + Page --> Robots |
| 205 | + SearchEngine --> Page |
| 206 | + SearchEngine --> Robots |
| 207 | +``` |
| 208 | + |
| 209 | +--- |
| 210 | + |
| 211 | +## References and Resources |
| 212 | + |
| 213 | +### Technology references |
| 214 | + |
| 215 | +- [HTML5](https://developer.mozilla.org/docs/Web/Guide/HTML/HTML5) |
| 216 | +- [CSS3](https://developer.mozilla.org/docs/Web/CSS) |
| 217 | +- [JavaScript](https://developer.mozilla.org/docs/Web/JavaScript) |
| 218 | +- [GSAP](https://greensock.com/gsap/) |
| 219 | +- [particles.js](https://vincentgarreau.com/particles.js/) |
| 220 | +- [jQuery](https://jquery.com/) |
| 221 | +- [Schema.org JSON-LD](https://schema.org/docs/gs.html) |
| 222 | +- [Open Graph protocol](https://ogp.me/) |
| 223 | +- [Twitter Cards](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards) |
| 224 | + |
| 225 | +### SEO best practices used |
| 226 | + |
| 227 | +- remove obsolete `meta keywords` |
| 228 | +- include `canonical` links |
| 229 | +- use `robots` and `sitemap` |
| 230 | +- apply accessible image descriptions |
| 231 | +- add structured data for profile and project pages |
| 232 | +- use page-specific social metadata descriptions |
| 233 | + |
| 234 | +--- |
| 235 | + |
| 236 | +## Notes |
| 237 | + |
| 238 | +This README is designed to document the current portfolio site state and provide a full technical overview. If you want, I can also create a smaller `README` for GitHub deployment or a project-specific `README` for developers. |
0 commit comments