Standardized Project Directory Structure Template
Last updated: 2026-04-11 Scope: Reusable across all Solanasis portfolio projects Owner: Dmitri Sunshine
Overview
Every project or company under Dmitri’s portfolio follows a consistent _{project}/ container pattern under _my/. This ensures AI agents, scripts, and humans can navigate any project predictably. The pattern separates website code, documentation, and automation into clearly named subdirectories, with consistent naming conventions for GitHub repos, Infisical secrets, and Cloudflare resources.
Directory Structure
The canonical layout for any new project:
_my/
_{project}/ # Container directory (underscore prefix)
{project}-site/ # Website repo (Astro + CF Pages)
{project}-docs/ # Documentation vault (Obsidian-compatible)
{project}-scripts/ # Automation scripts (if needed)
_screenshots/ # QA artifacts
Inside the site repo ({project}-site/):
{project}-site/
src/
components/
icons/
layouts/
lib/
pages/
api/
styles/
public/
favicon/
images/
tests/
e2e/
scripts/ # One-time migration or build scripts
.github/
workflows/
package.json
astro.config.mjs
tailwind.config.mjs
tsconfig.json
wrangler.toml
CLAUDE.md
.gitignore
.env.example
README.md
Naming Conventions
| Item | Convention | Example |
|---|---|---|
| Container directory | _{project}/ (lowercase, hyphenated, underscore prefix) | _conexus/ |
| Site repo | {project}-site | conexus-site |
| Docs repo | {project}-docs | co-nexus-docs |
| GitHub org | dzinreach for all repos | dzinreach/conexus-site |
| Infisical folder | /{project}-site/ | /conexus-site/ |
| CF Pages project | {project}-site | conexus-site |
Notes:
- The container directory uses underscores to visually distinguish it from repo directories
- Hyphens separate words within names (not underscores, except for
_lasting_legacywhich predates this convention) - The GitHub org is always
dzinreach, not individual accounts
Existing Projects
| Project | Container | Site Repo | Docs Repo | Domain | CF Account |
|---|---|---|---|---|---|
| Solanasis | _solanasis/ | solanasis-site | solanasis-docs | solanasis.com | Solanasis |
| Lasting Legacy | _lasting_legacy/ | lasting-legacy-site | lasting-legacy-docs | lastinglegacyfoundation.org | Personal |
| Mr. Sunshine | _mrsunshine/ | mrsunshine-site | N/A | mrsunshine.me | Personal |
| SelfInquire | _selfinquire/ | selfinquire-site | N/A | selfinquire.com | Personal |
| Matchkeyz | _matchkeyz/ | matchkeyz-site | N/A | matchkeyz.io | Matchkeyz |
| Co-Nexus | _conexus/ | conexus-site | co-nexus-docs (existing) | co-nexus.co | Personal |
New Project Checklist
When setting up a new project, follow these steps in order:
- Create
_{project}/container directory under_my/ - Create
{project}-site/with Astro scaffolding (copy from lasting-legacy-site template) - Create
{project}-docs/if a docs vault is needed - Create GitHub repo at
dzinreach/{project}-site - Create Infisical folder:
python3 ~/_my/_solanasis/infisical/link_cf_account.py {project}-site - Create CLAUDE.md following the solanasis-repo-template pattern
- Set up GitHub Actions secrets:
CLOUDFLARE_API_TOKEN(scoped to the correct CF account)CLOUDFLARE_ACCOUNT_ID
- Set up GitHub Actions variables:
SITE_URL(production domain with https://)TURNSTILE_SITE_KEY(from Cloudflare Turnstile widget)UMAMI_WEBSITE_ID(from Umami dashboard)
- Copy
.env.examplefrom lasting-legacy-site and update values - Initialize git repo:
git init && git remote add origin git@github.com:dzinreach/{project}-site.git - Run
npm installand verifynpm run buildexits 0
CLAUDE.md Template Reference
Use the CLAUDE.md from lasting-legacy-site/CLAUDE.md as the reference template for new repos. Key sections to customize for each project:
- Design System (colors, fonts, domain)
- Secrets Management (Infisical folder name)
- Voice and Tone (project-specific content guidelines)
- Architecture Notes (any project-specific components or patterns)
Cross-References
- Website setup playbook:
playbooks/ai-native-website-setup-playbook.md - Setup cheat sheet:
playbooks/website-setup-cheat-sheet.md - CF Pages cutover:
playbooks/cf-pages-cutover-playbook.md - CF account map: 3 accounts documented in
cf-pages-cutover-playbook.md