Skip to content

trahoangdev/indie-tech-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Indie Tech Lab

Personal technology lab on a .tech domain. The single source of truth for identity, schemas, and conventions is AGENTS.md.

Indie Tech Lab = Personal Tech Lab + Tiny Tools + AI Workflows + Tech Decisions + Micro SaaS Graveyard

Stack

  • Astro v5 + content collections (Zod schemas).
  • MDX for project pages, build logs, notes, decisions, case studies.
  • Tailwind CSS v4 (Vite plugin) for styling.
  • @astrojs/sitemap for SEO; static robots.txt route.

Develop

npm install
npm run dev      # http://localhost:4321
npm run build    # static output → dist/
npm run preview  # serve built site

Node.js ≥ 18.20 is recommended.

Project layout

src/
├── content/                  # canonical content (one folder per contentType)
│   ├── projects/             # Experiments — the Lab's source of truth
│   ├── build-logs/           # {YYYY-MM-DD}-{project-slug}.mdx
│   ├── notes/                # Tech Notes
│   ├── workflows/            # AI Workflows
│   ├── decisions/            # Tech Decisions
│   ├── case-studies/         # Case Studies + Failure Analyses
│   └── tools/                # Tool descriptions
├── pages/
│   ├── index.astro           # /
│   ├── lab/                  # /lab, /lab/[slug]
│   ├── graveyard.astro       # /graveyard (derived: status ∈ {Failed, Killed})
│   ├── build-logs/           # list + detail
│   ├── notes/                # list + detail
│   ├── tools/                # list + detail
│   ├── workflows/            # list + detail
│   ├── decisions/            # list + detail
│   ├── case-studies/         # list + detail
│   ├── about.astro
│   ├── privacy.astro
│   └── robots.txt.ts
├── layouts/
│   ├── Layout.astro
│   └── ContentDetail.astro
├── components/               # ProjectCard, StatusBadge, StatusIcon, TagList, ContentList, Nav, Footer
├── lib/status.ts             # status → color/icon/label
├── styles/global.css         # Tailwind v4 + design tokens (@theme)
└── content/config.ts         # Zod schemas matching AGENTS.md

Adding content

  1. Read the relevant format section in AGENTS.md.

  2. Create a new .mdx file in the right collection. The filename rule:

    • Projects: content/projects/{slug}.mdx
    • Build logs: content/build-logs/{YYYY-MM-DD}-{project-slug}.mdx
    • Everything else: content/{collection}/{slug}.mdx
  3. Frontmatter must use approved tag values and ISO 8601 dates (or null).

  4. Run npm run build — Zod will fail loudly on schema violations.

  5. The Graveyard updates itself when a project's status becomes Failed or Killed.

Conventions

  • Slugs are lowercase, kebab-case, ASCII, stable forever once published.
  • null for unknown dates and links. Never TBD, coming soon, #.
  • Status is conveyed by color + icon + label, never color alone.
  • Each project's Graveyard appearance requires a linked Failure Analysis in case-studies/.
  • One contentType per file, matching its collection folder.

V1 launch scope (current)

  • Pages: /, /lab, /graveyard, /build-logs, /notes, /tools, /workflows, /decisions, /case-studies, /about, /privacy.
  • Seed content: 3 projects (PromptVault — Failed, LaunchLens — Building, StackPicker — Idea), 1 failure analysis, 1 build log, 1 tech decision.
  • Sitemap + robots.txt + favicon.

Next milestones

  • LaunchLens MVP at /tools/launchlens (idea scorer, local-first).
  • StackPicker prototype.
  • Filters by status / type / stack on /lab.
  • Privacy-friendly analytics.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors