Personal blog/portfolio for Maiko Trindade, Senior Mobile Engineer (14+ years, specializing in Android/Kotlin/Jetpack Compose/AI agents/Blockchain). Hosted at maikotrindade.com via GitHub Pages. Topics: Android development, Jetpack Compose, Kotlin, AI agents, blockchain/Solidity.
master → auto-buildtheme.css (dark mode via data-theme="dark" attribute)theme-toggle.js (light/dark toggle, localStorage persistence)G-NPGMKKGTDM) + legacy UA (UA-66120129-1) + AdSense (ca-pub-4415452186185932)bundle exec jekyll serve # local dev at localhost:4000 with live reload
bundle exec jekyll build # build to _site/
git push origin master # deploys to GitHub Pages automatically
Never commit _site/ — it is the build output directory.
_posts/ Blog posts: YYYY-MM-DD-slug.markdown
_layouts/ Five layouts (see Layout System below)
_includes/ head.html, sidebar.html, analytics.html
_config.yml Jekyll config: url, author, pagination, exclude list
public/css/ poole.css, hyde.css, syntax.css, theme.css
public/js/ theme-toggle.js
public/img/ Profile photo, social icons, OG images, post images
blog/ Blog index (paginated, 5/page) and archive
capitol-trades-tracker/ Standalone app showcase (en/, fr/ subdirs)
index.html Home page (layout: default_no_ads)
about.html About (layout: page_no_ads)
experience.html Career timeline (layout: page_no_ads)
projects.html Portfolio with filter tabs (layout: page_no_ads)
education.html Education (layout: page_no_ads)
llms.txt Manually maintained blog index for LLM crawlers
robots.txt Allows all AI crawlers (ClaudeBot, GPTBot, anthropic-ai…)
sitemap.xml, atom.xml Liquid-generated; do not edit by hand
CNAME Custom domain — do not modify
ads.txt AdSense verification — do not modify
YYYY-MM-DD-descriptive-slug.markdown in _posts/
---
layout: post
title: "Post Title in Quotes"
date: YYYY-MM-DD
published: true
categories: [Category1, Category2]
tags: [tag1, tag2, tag3]
description: "SEO description, max 160 characters"
---
image: /public/img/filename.png # OG/Twitter/JSON-LD image; defaults to android-dev.png
keywords: "comma, separated" # Overrides tags for keywords meta
# (H1) in post body — the layout renders page.title as H1.### (H3) for main sections, #### (H4) for subsections.<img src="https://maikotrindade.com/public/img/filename.png" width="380" height="380" alt="description"/>
kotlin `, `solidity `, etc._posts/base-post-format.markdown — kept with published: false as a formatting reference.
YYYY-MM-DD-slug.markdowndescription ≤ 160 chars#) in bodywidth="380"llms.txt if the post is significant (it is manually maintained)| Layout | Has ads? | head.html included? |
Used by |
|---|---|---|---|
default |
yes | yes | blog/index.html |
default_no_ads |
no | no (inlined) | index.html (Home) |
post |
yes | yes (via default) | all blog posts |
page |
yes | yes (via default) | static pages (with ads) |
page_no_ads |
no | no (inlined) | about, experience, projects, education |
Critical quirk: default_no_ads.html does NOT use `<head>
<!-- Enable responsiveness on mobile devices-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="google-adsense-account" content="ca-pub-4415452186185932">
<!-- Primary Meta Tags -->
<meta name="title" content="CLAUDE.md — maikotrindade.github.io | Maiko Trindade" />
<meta name="description" content="technology, Android, Jetpack Compose, Blockchain, ESG, Crypto, Solidity, Software Development, Linux, web and computer science" />
<meta name="author" content="@maikotrindade">
<meta name="keywords" content="Android, Jetpack Compose, Blockchain, Technology, Solidity, Software Development, Linux, Web, Maiko Trindade" />
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://maikotrindade.com/CLAUDE.html" />
<meta property="og:title" content="CLAUDE.md — maikotrindade.github.io | Maiko Trindade" />
<meta property="og:description" content="technology, Android, Jetpack Compose, Blockchain, ESG, Crypto, Solidity, Software Development, Linux, web and computer science" />
<meta property="og:image" content="https://maikotrindade.com/public/img/android-dev.png" />
<meta property="og:site_name" content="Maiko Trindade" />
<meta property="og:locale" content="en_US" />
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@maikotrindade" />
<meta name="twitter:creator" content="@maikotrindade" />
<meta property="twitter:url" content="https://maikotrindade.com/CLAUDE.html" />
<meta property="twitter:title" content="CLAUDE.md — maikotrindade.github.io | Maiko Trindade" />
<meta property="twitter:description" content="technology, Android, Jetpack Compose, Blockchain, ESG, Crypto, Solidity, Software Development, Linux, web and computer science" />
<meta property="twitter:image" content="https://maikotrindade.com/public/img/android-dev.png" />
<link rel="canonical" href="https://maikotrindade.com/CLAUDE.html" />
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPGMKKGTDM"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4415452186185932"
crossorigin="anonymous"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-NPGMKKGTDM');
</script>
<title>
CLAUDE.md — maikotrindade.github.io
</title>
<!-- CSS -->
<link rel="stylesheet" href="/public/css/poole.css">
<link rel="stylesheet" href="/public/css/syntax.css">
<link rel="stylesheet" href="/public/css/hyde.css">
<link rel="stylesheet" href="/public/css/theme.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700|Abril+Fatface">
<!-- Icons -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/public/apple-touch-icon-144-precomposed.png">
<link rel="shortcut icon" href="/public/favicon.ico">
<!-- RSS -->
<link rel="alternate" type="application/rss+xml" title="RSS" href="/atom.xml">
<!-- Website/Organization Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Maiko Trindade",
"url": "https://maikotrindade.com",
"description": "technology, Android, Jetpack Compose, Blockchain, ESG, Crypto, Solidity, Software Development, Linux, web and computer science",
"author": {
"@type": "Person",
"name": "Maiko Trindade",
"url": "https://maikotrindade.com/"
},
"publisher": {
"@type": "Organization",
"name": "Maiko Trindade",
"logo": {
"@type": "ImageObject",
"url": "https://maikotrindade.com/public/img/android-dev.png"
}
}
}
</script>
<!-- Theme Toggle Script -->
<script src="/public/js/theme-toggle.js"></script>
</head>. It has its own hardcoded <head>. When editing SEO/meta behavior, check **both** _includes/head.html AND _layouts/default_no_ads.html`.
Sidebar auto-nav: sidebar.html discovers nav items by filtering site.pages where layout == "page" or layout == "page_no_ads". A new static page with the correct layout automatically appears in the sidebar — no changes to sidebar.html needed.
| File | Purpose |
|---|---|
_includes/head.html |
Meta tags, OG, Twitter Cards, JSON-LD schema, GA4, AdSense, CSS links, theme-toggle.js |
_includes/sidebar.html |
Profile photo, social links, auto-generated nav, last 3 posts |
_includes/analytics.html |
Legacy UA analytics (UA-66120129-1) — keep intact |
head.html)page.description → page.excerpt (strip HTML, truncate to 160) → site.descriptionpage.image → https://maikotrindade.com/public/img/android-dev.pnglayout == "post" → Article schema; all other layouts → WebSite schemaNever modify:
G-NPGMKKGTDM (in head.html and default_no_ads.html)ca-pub-4415452186185932 (in head.html)UA-66120129-1 (in analytics.html)CNAME file (controls custom domain)ads.txt (AdSense verification)Never commit _site/ — build output, not source.
llms.txt — manually maintained blog index (update when adding significant posts)robots.txt — AI crawlers explicitly allowed; do not add Disallow rules for AI agentslayout: post page via head.html