A bilingual (English / Turkish) portfolio and engineering-services website built with plain HTML5, CSS3 and vanilla JavaScript — no frameworks, no build tools, no backend.
This README is written for beginners. Every section below explains exactly which file to open and what to change.
The simplest option: double-click index.html. It will open in your default browser and
work correctly, because the site uses only relative paths and local files.
Opening the file directly works, but running a small local server is closer to how the site will behave on GitHub Pages, and avoids occasional browser restrictions on local files.
Using Python (already installed on most systems):
# from inside the project folder
python -m http.server 5500
# or, on some Windows installs:
py -m http.server 5500Then open http://localhost:5500 in your browser.
Using VS Code: install the "Live Server" extension, right-click index.html, and choose
"Open with Live Server".
Almost all visible text lives in script.js, inside the TRANSLATIONS object near the
top of the file, and inside the data arrays below it (SERVICES, PROJECTS, EXPERIENCE,
SKILLS, PROCESS).
- Fixed section text (navigation, hero, about, contact, footer, etc.) → edit the
enandtrobjects insideTRANSLATIONS. Each key matches adata-i18n="key"attribute inindex.html. - Repeating content (service cards, projects, experience entries, skill tags, process steps)
→ edit the corresponding array (e.g.
SERVICES) directly. Each entry has anenandtrblock.
You do not need to touch index.html to change text — only script.js.
The email address appears in three places:
index.html— search forabdullaheren.iynemli@gmail.com(mailto links and the visible contact value).script.js— insideinitCopyEmail(), theemailvariable.index.html— inside the JSON-LD<script type="application/ld+json">block in<head>.
Replace all occurrences with the new address.
Search for Sakarya, Türkiye in index.html (hero and contact sections, footer) and update
the JSON-LD addressLocality / addressCountry fields in the same <head> block if the
location changes to a different city or country.
Project and hero illustrations are stored in assets/images/ as .svg files. To use a real
photo instead:
- Add your image (e.g.
.jpgor.png) toassets/images/. - In
script.js, find the relevant project inside thePROJECTSarray and change itsimagefield to the new file path, e.g.image: 'assets/images/my-photo.jpg'.
No other changes are required — the layout and modal automatically use whatever path is set.
Open script.js and find the PROJECTS array. Copy an existing project object and edit:
id— a unique short identifier.image— path to an image inassets/images/.categories— an array using the keys defined inCATEGORIES(e.g.'robotics','embedded','iot').technologies— array of technology name strings (shown as tags, not translated).en/tr—title,description, and aresponsibilitiesarray (bullet points shown in the project modal).
The project grid, filters and modal update automatically — no HTML editing required.
Each project object in PROJECTS has url: null and videoUrl: null. Once you have a real
repository or video link, set these to the URL string, e.g. url: 'https://github.com/you/repo'.
There's a TODO comment directly above the PROJECTS array and inside fillModal() in
script.js marking exactly where to render a link/button using these values — no button is
shown while the value stays null.
No CV file exists yet. Once you have one:
-
Add the PDF file to
assets/documents/(seeassets/documents/README.txt). -
In
index.html, find theTODOcomment inside the hero.hero-actionsblock and add a button, for example:<a class="btn btn-ghost" href="assets/documents/cv-abdulaheren-iynemli.pdf" download>Download CV</a>
All colors are defined once, as CSS variables, at the top of styles.css inside :root
(look for the /* DESIGN TOKENS */ comment). Change --color-accent, --color-accent-2,
--color-bg, etc., and the whole site updates automatically. Spacing, border-radius and
shadow values are defined the same way, right below the colors.
- Create a GitHub repository and push the contents of this folder to it (the repository can be named anything; if it's a project page rather than a user/organization page, GitHub Pages will serve it from a subdirectory-style URL, which this site fully supports since all asset paths are relative).
- In the repository settings, open Pages, and set the source to the branch you pushed
(commonly
main) and the root folder (/). - GitHub will publish the site at
https://<username>.github.io/<repository-name>/. - No build step is required — the site is static HTML/CSS/JS.
- In the repository's Settings → Pages, add your custom domain in the "Custom domain"
field. GitHub will create a
CNAMEfile automatically (or you can add one yourself with your domain name as its only content). - At your domain registrar, add a
CNAMErecord (for a subdomain likewww) orArecords (for an apex domain) pointing to GitHub Pages, following GitHub's official Pages documentation. - Update the
TODO-marked canonical URL and Open Graph URL near the top ofindex.html(<head>) to your new domain once it's live.
| File | Controls |
|---|---|
index.html |
Page structure, sections, static markup, SEO/meta tags, JSON-LD |
styles.css |
All visual design — colors, spacing, layout, responsive rules, animations |
script.js |
All text content (TRANSLATIONS), all repeating content data (services, projects, experience, skills, process), language switching, navigation behavior, project modal, filters, copy-to-clipboard, scroll reveal |
assets/images/ |
SVG illustrations used in the hero and project cards |
assets/documents/ |
Reserved for a future downloadable CV/resume file |
404.html |
Fallback page shown by GitHub Pages for unknown URLs |
Built with plain HTML, CSS and JavaScript — no frameworks, no dependencies, no build tools.