Contributing
Join the Marketplace
The Architech is open-source and community-driven. The marketplace thrives because developers like you contribute adapters, connectors, and features that solve real problems.
This is your guide to becoming a marketplace contributor.
Why Contribute?
For You
- π― Showcase your expertise β Build your developer portfolio
- π Solve once, benefit forever β Automate solutions you use repeatedly
- π Gain recognition β Contributors are credited in the marketplace
- π Learn best practices β Work with industrial-grade architecture
For the Community
- π§ Expand capabilities β More options for every project
- ποΈ Build the supply chain β Create the future of software development
- π€ Share knowledge β Your solutions help thousands of developers
- π Drive innovation β Push the boundaries of code generation
Contribution Process Overview
1. Choose Your Role β 2. Set Up Development β 3. Build Your Module β 4. Test Thoroughly β 5. Submit Pull Request β 6. Review & PublishLet's walk through each step.
Step 1: Choose Your Role
Decide what type of module you want to contribute. Review the three tiers:
Option A: Adapter (Raw Materials)
Choose if you want to:
- Add support for a new technology
- Provide an alternative to an existing adapter
- Enable a foundation that others can build on
Examples:
- New ORM (TypeORM, Sequelize)
- New UI library (Ant Design, Chakra)
- New service (Twilio, SendGrid)
π Read: Architecture Guide - Adapters
Option B: Connector (Technical Bridges)
Choose if you want to:
- Connect two or more technologies
- Generate Golden Core API wrappers
- Provide framework-specific integrations
Examples:
prisma-remixβ Prisma + Remix integrationsupabase-nextjsβ Supabase + Next.js integrationauth0-reactβ Auth0 + React integration
π Read: Architecture Guide - Connectors
Option C: Feature (Business Capabilities)
Choose if you want to:
- Deliver complete user-facing functionality
- Provide UI-agnostic business logic
- Build production-ready features
Examples:
- Blog system with multiple UI implementations
- CRM dashboard with analytics
- File upload manager with cloud storage
π Read: Architecture Guide - Features
Step 2: Set Up Development Environment
Prerequisites
- Node.js 18+ and npm 8+
- Git for version control
- TypeScript knowledge
- Understanding of The Architech architecture
Fork and Clone
# Fork the marketplace repository on GitHub
# Then clone your fork
git clone https://github.com/<your-username>/architech-marketplace.git
cd architech-marketplace
# Add upstream remote
git remote add upstream https://github.com/the-architech-xyz/marketplace.git
# Install dependencies
npm install
# Create a feature branch
git checkout -b feature/my-awesome-moduleDevelopment Setup
# Link the marketplace locally
npm link
# Create a test project
cd ..
mkdir test-project && cd test-project
architech init
# Link to your local marketplace
npm link @architech/marketplaceNow you can test your module as you build it.
Step 3: Build Your Module
Using the CLI Scaffolder
The Architech provides a scaffolding tool to generate the boilerplate:
# For an Adapter
architech create-module adapter <category>/<name>
# Example: architech create-module adapter database/typeorm
# For an Connector
architech create-module connector <name>
# Example: architech create-module connector typeorm-nextjs
# For a Feature Core
architech create-module feature-core <name>
# Example: architech create-module feature-core blog-system
# For a Feature UI
architech create-module feature-ui <name>
# Example: architech create-module feature-ui blog-system-shadcnThis generates the complete file structure with template files.
File Structure Created
marketplace/<modules>/<category>/<your-module>/
βββ adapter.json / connector.json # Metadata
βββ blueprint.ts # Generation logic
βββ templates/ # Code templates
βββ tests/ # Test files
βββ README.md # Documentation
βββ CHANGELOG.md # Version historyImplement Your Module
Follow the guide for your module type:
-
Define metadata in
adapter.jsonorconnector.json- Set capabilities (
provides,requires) - Define dependencies
- Add user prompts
- Set capabilities (
-
Write blueprint logic in
blueprint.ts- Implement the
generate()function - Use the Blueprint API
- Follow architectural patterns
- Implement the
-
Create templates in
templates/- Use EJS templating syntax
- Ensure proper TypeScript typing
- Add helpful comments
-
Write documentation in
README.md- Explain what the module does
- List prerequisites
- Provide usage examples
- Document environment variables
Step 4: Test Thoroughly
Testing is non-negotiable. Your module must be reliable.
Unit Tests
Test your blueprint logic:
// tests/blueprint.test.ts
import { testAdapter } from '@architech/testing';
describe('MyAdapter', () => {
it('should generate correct files', async () => {
const result = await testAdapter('my-adapter', {
answers: { option: 'value' }
});
expect(result.files).toContain('expected-file.ts');
expect(result.dependencies).toHaveProperty('expected-package');
});
it('should handle edge cases', async () => {
// Test error conditions
// Test with different configurations
// Test prerequisite validation
});
});Integration Tests
Test the generated code:
# Create test project
cd tests/integration
architech new test-app --minimal
# Install your module
cd test-app
architech add adapter my-adapter
# Run build
npm run build # Must succeed
# Run type checking
npm run type-check # Must pass
# Run linting
npm run lint # Must pass
# Run tests
npm run test # Must passManual Testing
# Test in different scenarios
1. Fresh project (architech new)
2. Existing project (architech add)
3. With different prerequisites
4. With different frameworks
5. With different configurationsTest Checklist
- Unit tests for blueprint logic
- Integration tests for generated code
- Manual testing in multiple scenarios
- Edge case handling
- Error message quality
- TypeScript types correctness
- Build succeeds
- Lints pass
- No runtime errors
Step 5: Submit Pull Request
Pre-Submission Checklist
Before submitting, ensure:
Code Quality:
- Follows The Architech architectural patterns
- Uses Golden Core APIs where applicable
- Fully typed with TypeScript
- No linter errors
- Follows naming conventions
Testing:
- All unit tests pass
- Integration tests pass
- Manual testing completed
- Edge cases covered
Documentation:
- Comprehensive README.md
- Usage examples included
- Prerequisites clearly listed
- Environment variables documented
- CHANGELOG.md updated
Metadata:
- Correct capabilities declared
- Dependencies properly specified
- Version follows semver
- Author information included
Creating the PR
# Ensure you're on your feature branch
git checkout feature/my-awesome-module
# Commit your changes
git add .
git commit -m "feat(adapter): add TypeORM adapter
- Supports PostgreSQL, MySQL, and SQLite
- Generates type-safe entities
- Includes migration scripts
- Fully tested and documented"
# Push to your fork
git push origin feature/my-awesome-module
# Create PR on GitHub
# Use the PR template providedPR Template
## Module Type
- [ ] Adapter
- [ ] Connector
- [ ] Feature
## Description
[Clear description of what your module does]
## Capabilities
Provides: `database`, `orm`, `typeorm`
Requires: [List prerequisites]
## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing completed
- [ ] Works with Next.js
- [ ] Works with Remix
- [ ] [Other scenarios]
## Documentation
- [ ] README.md complete
- [ ] Usage examples included
- [ ] Environment variables documented
## Breaking Changes
[List any breaking changes, or "None"]
## Related Issues
Closes #[issue number]Step 6: Review & Publish
Review Process
- Automated Checks β CI runs all tests and linting
- Architectural Review β Maintainers verify adherence to patterns
- Code Review β Quality, security, and best practices
- Testing Review β Coverage and edge case handling
- Documentation Review β Completeness and clarity
Addressing Feedback
Maintainers may request changes:
# Make requested changes
git add .
git commit -m "fix: address review feedback"
git push origin feature/my-awesome-module
# PR updates automaticallyPublication
Once approved:
- β PR merged to main
- β Module added to marketplace
- β Documentation published
- β You're credited as contributor
Architectural Standards
All contributions must follow these standards:
1. Opinionated Core, Agnostic Edges
- Adapters: Stay at the agnostic edges
- Connectors: Enforce Golden Core APIs
- Features: Use headless + UI pattern
2. Golden Core APIs
When generating data hooks:
- β Use TanStack Query
- β
Follow
useGetEntity,useCreateEntitypattern - β Include proper cache invalidation
When generating state:
- β Use Zustand
- β Follow store best practices
When generating forms:
- β Use React Hook Form + Zod
- β Type-safe validation
3. TypeScript First
- All generated code must be TypeScript
- Use strict mode
- No
anytypes - Leverage type inference
4. Capability System
- Accurately declare
providescapabilities - Correctly list
requiresprerequisites - Use standard capability naming
5. Template Quality
- Use EJS syntax correctly
- Add helpful comments
- Follow coding standards
- Ensure proper formatting
Community Guidelines
Code of Conduct
We enforce a strict code of conduct:
-
β Be respectful and inclusive
-
β Provide constructive feedback
-
β Collaborate in good faith
-
β Help others learn and grow
-
β No harassment or discrimination
-
β No spam or self-promotion
-
β No malicious code
-
β No plagiarism
Getting Help
Stuck? Ask for help:
- Discord: The Architech Community (opens in a new tab)
- GitHub Discussions: Technical questions
- GitHub Issues: Bug reports and feature requests
Mentorship Program
New to The Architech? Request a mentor:
# In our Discord, use the command
/request-mentor
# A core contributor will guide you through your first contributionContributor Recognition
We celebrate our contributors:
Recognition Levels
π± First Contribution
- Your first merged PR
- Listed in CONTRIBUTORS.md
- Contributor badge on Discord
πΏ Active Contributor
- 5+ merged PRs
- Featured in monthly highlights
- Early access to new features
π³ Core Contributor
- 20+ merged PRs
- Invited to core contributor team
- Voting rights on major decisions
- Listed on main website
π Module Maintainer
- Maintain 1+ official modules
- Direct commit access to your modules
- Highlighted in marketplace
Advanced: Creating Official Genomes
Genomes are complete project blueprints that combine multiple modules.
Genome Structure
// genomes/official/my-genome.ts
import { defineGenome } from '@architech/types';
export default defineGenome({
name: 'my-awesome-genome',
description: 'Complete setup for [use case]',
version: '1.0.0',
modules: [
// Adapters
{ type: 'adapter', name: 'nextjs' },
{ type: 'adapter', name: 'drizzle' },
{ type: 'adapter', name: 'shadcn' },
// Connectors
{ type: 'connector', name: 'drizzle-nextjs' },
{ type: 'connector', name: 'tanstack-query-nextjs' },
// Features
{ type: 'feature', name: 'auth', ui: 'shadcn' },
{ type: 'feature', name: 'teams-dashboard', ui: 'shadcn' },
],
prompts: [
{
name: 'projectName',
type: 'text',
message: 'Project name'
}
],
postInstall: `
Your project is ready!
Next steps:
1. cd {{projectName}}
2. npm install
3. npm run dev
`
});Submitting Genomes
Official genomes require:
- Comprehensive testing
- Complete documentation
- Proven use case
- Community demand
FAQ
How long does review take?
Typically 3-7 days. Complex modules may take longer.
Can I update my module after publishing?
Yes! Submit a new PR with version bump in CHANGELOG.md.
What if my module breaks?
We'll work with you to fix it. Critical issues may require temporary removal.
Can I contribute proprietary tech?
Yes, if you have rights. Ensure licensing compatibility.
Do I need to support my module forever?
No, but we encourage maintenance. We can help find new maintainers.
Next Steps
Ready to contribute?
- Join Discord β The Architech Community (opens in a new tab)
- Review Architecture β Architecture Guide
- Study Examples β Browse
marketplace/directory - Start Small β Pick an adapter to begin
- Ask Questions β We're here to help
The marketplace grows with every contribution. Your module could help thousands of developers. Let's build the future together.