File Structure
After unzipping the theme, you will find a structure like this:
Directorythemes/
Directorytechlo/ (📌 Main theme folder)
- …
- changelog.html (🔗 Links to online changelog)
- documentation.html (🔗 Links to online documentation)
In the Tina edition, the main theme folder is techlo-tina.
Main Theme Directory Structure
Techlo follows a modular structure focused on content collections, reusable section components, and configurable JSON and TOML settings. This is the Astro edition. The Tina and Sanity editions have the same layout, with the differences listed below.
Directorytechlo/
Directory.cursor/
Directoryrules/
- theme-architecture.mdc (AI: Cursor)
Directory.github/
- copilot-instructions.md (AI: GitHub Copilot)
Directory.vscode/
- …
Directory.windsurf/
Directoryrules/
- theme-architecture.md (AI: Windsurf)
Directorypublic/
Directory__astro_font_generated__/
- …
Directoryimages/
Directoryfavicons/
- …
Directorygallery/
- …
- og-image.jpg
Directoryplyr/
- …
Directoryvideos/
- …
- .htaccess
- _headers
- umami.is.js
Directoryscripts/
- dev.mjs
- generate-favicons.mjs
- generate-multilingual-content.mjs
- remove-draft-from-sitemap.mjs
- remove-multilingual.mjs
- toml-watcher.mjs
Directorysrc/
Directoryassets/
Directoryimages/
- …
Directoryconfig/ (Site-wide settings)
- config.toml
- fonts.json
- language.json
- menu.ar.json
- menu.en.json
- menu.fr.json
- social.json
Directorycontent/ (Markdown and MDX content)
Directoryabout-us/
- …
Directoryauthor/
- …
Directoryblog/
- …
Directorycontact/
- …
Directoryfaq/
- …
Directoryhomepage/
- …
Directorypages/
- …
Directorypricing/
- …
Directoryprojects/
- …
Directorysections/
- …
Directoryservices/
- …
Directoryteam/
- …
Directorytestimonials/
- …
- _file_format.md
Directoryi18n/
- ar.json
- en.json
- fr.json
Directorylayouts/
Directorycomponents/
Directorycards/
- …
Directoryglobal/
Directoryfooter/
- …
Directoryheader/
- …
Directorysections/
- …
Directoryutilities/
- …
Directorywidgets/
- …
Directoryhelpers/
- …
Directoryshortcodes/
- …
- Base.astro
Directorylib/
Directoryintegrations/
- …
Directoryutils/
- …
- contentParser.astro
- iconNames.ts
- PageLoader.astro
- shortcodes.ts
- taxonomyParser.astro
Directorypages/
Directory[…lang]/
- 404.astro
- [page].astro
- about.astro
- contact.astro
- faq.astro
- home-three.astro
- home-two.astro
- index.astro
- llms-full.txt.ts
- llms.txt.ts
- pricing.astro
- testimonials.astro
Directoryblog/
- …
Directoryprojects/
- …
Directoryservices/
- …
Directoryteam/
- …
- 404.astro
- […path].md.ts
- robots.txt.ts
Directoryplugins/
Directoryodometer/
- …
- fontTailwindPlugin.js
- scroll-menu.ts
- sticky-sidebar.js
Directorystyles/
- animation.css
- base.css
- buttons.css
- components.css
- globals.css
- navigation.css
- rtl.css
- safe.css
- theme.css
- utilities.css
Directorytypes/
- …
- content.config.ts
- env.d.ts
- sections.schema.ts
- .editorconfig
- .gitignore
- .markdownlint.json
- .prettierrc
- AGENTS.md (AI: the main instructions)
- CHANGELOG.md
- CLAUDE.md (AI: Claude Code)
- GEMINI.md (AI: Gemini CLI)
- README.md
- SKILLS.md (AI: step-by-step recipes)
- astro.config.mjs
- netlify.toml
- package-lock.json
- package.json
- tsconfig.json
- vercel.json
- vercel.sh
- wrangler.toml
Each folder under src/content/ has an english/, a french/, and an arabic/ subfolder. Add or edit content inside the language folder you want to update.
What Differs By Edition
Tina has everything above except scripts/dev.mjs, and adds:
tina/: the editor’s setup.tina/generated/collections.jsonholds its forms.scripts/tina/andscripts/cms/: the commands behindnpm run dev,npm run tina:generate,npm run tina:audit, andnpm run setup:tina.src/lib/tina/andsrc/layouts/components/tina/: the live preview..env.example, which lists the optional settings.
The listing files of the blog, projects, and services (-index), and the privacy policy and terms, are .mdx instead of .md, so the editor can show them.
Sanity has no src/content/, no src/i18n/, and no src/config/menu.*.json, because that content lives in your Sanity project. It adds:
sanity.config.ts,sanity.cli.ts, andsanity/: your Studio.sanity/seed/demo-content.json: the bundled sample content.scripts/sanity/: the commands behindnpm run setup,npm run dev:all, and the preview server.src/lib/sanity/,src/sanity-routes/, andsrc/middleware.ts: reading content and showing drafts..env.example, which explains every variable.
Key Directories & Their Purpose
/public⟶ Static Assets
- Stores direct public assets such as favicons, the gallery images, and the Open Graph image.
- Files in this folder are available by URL, such as
/images/og-image.jpg.
/src/content⟶ Editable Theme Content
- Holds almost all user-editable content for pages and reusable sections.
- Multilingual content lives inside
english/,french/, andarabic/subfolders.
/src/layouts⟶ Components, Sections, and Shortcodes
- Techlo stores its UI components under
src/layouts/components/. - The project uses path aliases like
@/components/..., which map tosrc/layouts/components/.... - MDX shortcodes live in
src/layouts/shortcodes/.
/scripts⟶ Build Helpers
dev.mjsrunsnpm run dev.toml-watcher.mjsgenerates config output fromconfig.toml.generate-multilingual-content.mjsandremove-multilingual.mjshelp manage language content.generate-favicons.mjscreates favicon assets from the source logo.remove-draft-from-sitemap.mjsstrips draft pages out of the generated sitemap during build.
⚙️ Key Configuration Files
astro.config.mjs- Astro Configuration
- Configures Astro integrations, markdown plugins, sitemap generation, image behavior, i18n routing, and Tailwind CSS 4.
- Fonts are generated from
src/config/fonts.json.
src/config/config.toml- Global Theme Settings
- Main control file for site identity, SEO, contact info, content folders, forms, multilingual settings, navigation button, smooth scroll, animation, Ask AI links, the theme credit, and copyright.
🔍 SEO & OpenGraph
[seo]controls author, keywords, and robots.[seo.robotsTxt]controlsrobots.txt, including the AI crawler switches.[seo.ai]controlsllms.txt,llms-full.txt, and the Markdown copies of pages.[seo.sitemap]controls the sitemap.[opengraph]controls preview image, locale, and card metadata.
🎨 Theme & Content Settings
blogFolderservicesFolderprojectsFolderstickyHeaderblogPagination/paginationcontactFormActioncontactFormProvidersettings.smoothScrollsettings.animationsettings.pageActionssettings.themeCredit
🌎 Multilingual Settings
settings.multilingual.enablesettings.multilingual.defaultLanguagesettings.multilingual.disableLanguagessettings.multilingual.showDefaultLangInUrl
src/content.config.ts- Content Collections
- Defines collections for pages, services, blog, projects, team, testimonials, sections, and more.
- Reuses schemas from
src/sections.schema.ts.
Styling & Fonts
- Theme tokens and design variables live in
src/styles/theme.css. - Fonts are configured in
src/config/fonts.json.
Other Important Files
package.json→ Dependencies and npm scripts.tsconfig.json→ Path aliases such as@/components/*,@/shortcodes/*, and@/helpers/*.vercel.json/vercel.sh/netlify.toml/wrangler.toml→ Deployment configuration.AGENTS.md,SKILLS.md,CLAUDE.md,GEMINI.md,.github/copilot-instructions.md,.cursor/rules/theme-architecture.mdc,.windsurf/rules/theme-architecture.md→ Instructions for AI coding assistants.
Now that you understand the structure, the next step is branding the site and configuring the logo.