Contributor Quick Start
Your first Pull Request in 30 minutes. From zero to contributor in one focused session.
π― Goal
By the end of this guide, you will:
- β Have a working development environment
- β Understand the codebase structure
- β Create a simple adapter
- β Test it end-to-end
- β Submit your first PR
Time: 30 minutes
Difficulty: Beginner-friendly
Prerequisites
Before starting:
- β Node.js 18+ installed
- β Git installed
- β GitHub account created
- β Basic TypeScript knowledge
- β 30 minutes of focused time
Step 1: Fork & Clone (2 minutes)
# 1. Fork the marketplace repository on GitHub
# Visit: https://github.com/the-architech-xyz/marketplace
# Click "Fork" button
# 2. Clone YOUR fork
git clone https://github.com/YOUR_USERNAME/marketplace.git
cd marketplace
# 3. Add upstream remote
git remote add upstream https://github.com/the-architech-xyz/marketplace.git
# 4. Create feature branch
git checkout -b feature/my-first-adapterβ Checkpoint: You're in the marketplace directory with a clean branch.
Step 2: Set Up Development (3 minutes)
# 1. Install dependencies
npm install
# 2. Build marketplace
npm run build
# 3. Link for local development
npm link
# 4. Go to CLI directory (clone if you haven't)
cd ../
git clone https://github.com/the-architech-xyz/cli.git
cd cli
# 5. Install and build CLI
npm install
npm run build
# 6. Link marketplace to CLI
npm link @thearchitech.xyz/marketplace
# 7. Link CLI globally
npm link
# 8. Verify setup
architech --version
architech list-genomes # Should list 6 genomesβ
Checkpoint: architech list-genomes shows the official genomes.
Step 3: Create Your First Adapter (10 minutes)
We'll create a simple adapter for axios HTTP client.
3a. Create Directory Structure
cd marketplace
mkdir -p adapters/services/axios
mkdir -p adapters/services/axios/templates3b. Create adapter.json
{
"id": "services/axios",
"name": "Axios HTTP Client",
"description": "Promise-based HTTP client for the browser and Node.js",
"category": "services",
"version": "1.0.0",
"provides": ["http-client", "axios", "api-client"],
"capabilities": {
"http-client": {
"version": "1.0.0",
"description": "HTTP request capabilities"
}
},
"dependencies": {
"axios": "^1.6.0"
},
"devDependencies": {
"@types/node": "^20.0.0"
}
}3c. Create blueprint.ts
import { Blueprint, BlueprintActionType } from '@thearchitech.xyz/types';
export default function generateBlueprint(config: any) {
return [
// Create HTTP client configuration
{
type: BlueprintActionType.CREATE_FILE,
path: '{{paths.shared_library}}http/client.ts',
template: 'templates/client.ts.tpl'
},
// Create API utilities
{
type: BlueprintActionType.CREATE_FILE,
path: '{{paths.shared_library}}http/api.ts',
template: 'templates/api.ts.tpl'
}
];
}3d. Create Template Files
File: templates/client.ts.tpl
import axios from 'axios';
export const httpClient = axios.create({
baseURL: process.env.NEXT_PUBLIC_API_URL || '/api',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
},
});
// Request interceptor
httpClient.interceptors.request.use(
(config) => {
// Add auth token if available
const token = localStorage.getItem('auth_token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => Promise.reject(error)
);
// Response interceptor
httpClient.interceptors.response.use(
(response) => response,
(error) => {
console.error('HTTP Error:', error);
return Promise.reject(error);
}
);File: templates/api.ts.tpl
import { httpClient } from './client';
export const api = {
get: <T>(url: string) => httpClient.get<T>(url).then(res => res.data),
post: <T>(url: string, data: any) => httpClient.post<T>(url, data).then(res => res.data),
put: <T>(url: string, data: any) => httpClient.put<T>(url, data).then(res => res.data),
delete: <T>(url: string) => httpClient.delete<T>(url).then(res => res.data),
};β Checkpoint: Your adapter is created with all required files.
Step 4: Test Your Adapter (5 minutes)
# 1. Rebuild marketplace
cd marketplace
npm run build
# 2. Create test genome
cat > test-axios.genome.ts << 'EOF'
import { defineGenome } from '@thearchitech.xyz/marketplace/types';
export default defineGenome({
version: '1.0.0',
project: {
name: 'test-axios',
framework: 'nextjs',
},
modules: [
{ id: 'framework/nextjs', parameters: { typescript: true } },
{ id: 'services/axios', parameters: {} }, // β Your new adapter!
]
});
EOF
# 3. Generate test project
cd ..
architech new ./marketplace/test-axios.genome.ts
# 4. Check generated files
ls -la test-axios/src/lib/http/
# Should show: client.ts, api.ts
# 5. Verify it builds
cd test-axios
npm install
npm run build # Should succeed!β Checkpoint: Test project builds successfully with your adapter.
Step 5: Submit Your PR (10 minutes)
5a. Commit Your Changes
cd marketplace
# Stage your adapter files
git add adapters/services/axios/
# Commit with conventional commit message
git commit -m "feat(adapter): add axios HTTP client adapter
- Provides HTTP client with interceptors
- Includes request/response utilities
- TypeScript typed
- Fully tested"
# Push to your fork
git push origin feature/my-first-adapter5b. Create Pull Request
- Go to GitHub:
https://github.com/YOUR_USERNAME/marketplace - Click "Pull Request" button
- Fill in the PR template:
## Module Type
- [x] Adapter
- [ ] Connector
- [ ] Feature
## Description
Adds Axios HTTP client adapter for making API requests.
## Capabilities
Provides: `http-client`, `axios`, `api-client`
Requires: (none)
## What This Adds
- HTTP client configuration with interceptors
- Typed API utilities (get, post, put, delete)
- Auto-adds auth tokens from localStorage
- Error handling
## Testing
- [x] Generated test project successfully
- [x] Project builds without errors
- [x] TypeScript types are correct
- [x] Template files are valid
## Files Added
- adapters/services/axios/adapter.json
- adapters/services/axios/blueprint.ts
- adapters/services/axios/templates/client.ts.tpl
- adapters/services/axios/templates/api.ts.tpl- Click "Create Pull Request"
β Checkpoint: Your PR is submitted! π
What Happens Next?
Review Process
-
Automated Checks (2-5 min)
- CI runs build
- Linting checks
- Type checking
-
Maintainer Review (1-3 days)
- Code quality review
- Architecture alignment check
- Testing verification
-
Feedback (if needed)
- Maintainers may request changes
- Make updates in your branch
- Push again (PR updates automatically)
-
Approval & Merge π
- PR gets merged
- You're added to CONTRIBUTORS.md
- Adapter is now in official marketplace
Your Contributor Journey
π± You Just Completed:
- First contribution
- Understanding of adapter structure
- Development environment setup
πΏ Next Steps (Choose Your Path):
Path 1: Create More Adapters
- Add another utility library (lodash, ramda)
- Add a service integration (Twilio, SendGrid)
- Add an analytics provider (PostHog, Mixpanel)
Path 2: Level Up to Connectors
- Create a connector between two adapters
- Generate Golden Core API wrappers
- Read: Architecture Guide β
Path 3: Build a Feature
- Create a complete business capability
- Use the headless + UI pattern
- Read: Architecture Guide β
π Learning Resources
Before Your Next Contribution:
Essential Reading:
- Architecture Guide β - Deep dive into adapters
- Architecture β - Understand Golden Core
- Cookbook β - More practical examples
Optional Reading:
- CLI Architecture β - How the engine works
- Blueprint Actions β - All available actions
- Modifiers β - Complex file modifications
π¬ Get Help
Stuck? Ask for help!
Discord (fastest):
- #contributors channel (opens in a new tab)
- Ping @maintainers for help
- Other contributors will assist
GitHub Discussions:
- Ask a question (opens in a new tab)
- Search existing discussions
Office Hours (live help):
- Every Friday at 3 PM UTC
- Join on Discord (opens in a new tab)
π Recognition
Your contribution will be:
- β Listed in CONTRIBUTORS.md
- β Shown in monthly highlights
- β Credited in release notes
- β Celebrated in Discord
After 5+ merged PRs:
- πΏ Active Contributor badge
- π’ Featured in newsletter
- π― Early access to new features
Common First-PR Questions
"Is my contribution good enough?"
Yes! We welcome contributions of all sizes. Even fixing a typo helps the community.
"What if I make a mistake?"
That's what code review is for! Maintainers will help you improve it.
"Can I contribute if I'm new to TypeScript?"
Absolutely! Simple adapters are perfect for learning. Ask for help in Discord.
"How long does review take?"
Usually 1-3 days. We review in order of submission.
"What if my PR is rejected?"
We rarely reject PRs - we help you improve them! Rejections only happen for:
- Malicious code
- Duplicate functionality
- Against architectural principles
π Ready to Contribute?
Start now:
- Fork the repository
- Follow this guide
- Submit your first PR
- Join the community
Questions? Ask in Discord #contributors (opens in a new tab)
The marketplace grows with every contribution. Your adapter could help thousands of developers. Let's build together!
Next: Contributing Guide β | Architecture β | Cookbook β