Development Setup
Development Setup
Section titled “Development Setup”Set up your local environment for contributing to Podcast Framework.
Prerequisites
Section titled “Prerequisites”- Node.js 18+
- npm 9+
- Git
- VS Code (recommended)
Clone Repository
Section titled “Clone Repository”git clone https://github.com/rejected-media/podcast-framework.gitcd podcast-frameworkInstall Dependencies
Section titled “Install Dependencies”npm installThis installs dependencies for all packages in the monorepo.
Repository Structure
Section titled “Repository Structure”podcast-framework/├── packages/│ ├── core/ # @rejected-media/podcast-framework-core│ ├── sanity-schema/ # @rejected-media/podcast-framework-sanity-schema│ ├── cli/ # @rejected-media/podcast-framework-cli│ └── create-podcast-framework/ # @rejected-media/create-podcast-framework├── package.json # Monorepo config└── README.mdRunning Tests
Section titled “Running Tests”# Run all testsnpm test
# Run tests in watch modenpm run test:watch
# Run tests for specific packagecd packages/corenpm testBuilding Packages
Section titled “Building Packages”# Build all packagesnpm run build
# Build specific packagecd packages/corenpm run buildTesting Changes Locally
Section titled “Testing Changes Locally”Link Packages
Section titled “Link Packages”# In podcast-framework/packages/corenpm link
# In your test podcastnpm link @rejected-media/podcast-framework-coreNow your test podcast uses your local development version!
Test Workflow
Section titled “Test Workflow”- Make changes in
packages/core/ - Build:
npm run build - Test in linked podcast:
npm run dev - Verify changes work
- Write tests
- Run tests:
npm test
Code Style
Section titled “Code Style”ESLint
Section titled “ESLint”npm run lintPrettier
Section titled “Prettier”npm run formatTypeScript
Section titled “TypeScript”npm run type-checkVS Code Setup
Section titled “VS Code Setup”Recommended Extensions
Section titled “Recommended Extensions”{ "recommendations": [ "astro-build.astro-vscode", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "bradlc.vscode-tailwindcss" ]}Settings
Section titled “Settings”{ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "[astro]": { "editor.defaultFormatter": "astro-build.astro-vscode" }, "typescript.tsdk": "node_modules/typescript/lib"}Running Examples
Section titled “Running Examples”The template repository serves as an example:
git clone https://github.com/rejected-media/podcast-template.gitcd podcast-templatenpm installnpm run devCommon Tasks
Section titled “Common Tasks”Add New Component
Section titled “Add New Component”- Create
packages/core/src/components/NewComponent.astro - Add tests:
packages/core/src/components/NewComponent.test.ts - Export in
packages/core/src/index.ts - Build:
npm run build - Test:
npm test - Document in docs
Add New Utility
Section titled “Add New Utility”- Add to
packages/core/src/lib/utils.ts - Add tests:
packages/core/src/lib/utils.test.ts - Export in
packages/core/src/index.ts - Build and test
Update Schema
Section titled “Update Schema”- Edit
packages/sanity-schema/src/schemas/[schema].ts - Add tests
- Build and test
- Update migration guide if breaking change
Release Process
Section titled “Release Process”Maintainers only:
# Update versionnpm version patch # or minor, major
# Buildnpm run build
# Publishnpm publishGetting Help
Section titled “Getting Help”- Questions: GitHub Discussions
- Bugs: GitHub Issues
- Chat: Discord (coming soon)
Related
Section titled “Related”- Contributing Guidelines - Contribution process
- Testing - Testing guide (coming soon)
- Roadmap - Future plans (coming soon)
Thank You!
Section titled “Thank You!”Your contributions make Podcast Framework better for everyone!