Quick Start (30 Minutes)

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/templates

3b. 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-adapter

5b. Create Pull Request

  1. Go to GitHub: https://github.com/YOUR_USERNAME/marketplace
  2. Click "Pull Request" button
  3. 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
  1. Click "Create Pull Request"

βœ… Checkpoint: Your PR is submitted! πŸŽ‰


What Happens Next?

Review Process

  1. Automated Checks (2-5 min)

    • CI runs build
    • Linting checks
    • Type checking
  2. Maintainer Review (1-3 days)

    • Code quality review
    • Architecture alignment check
    • Testing verification
  3. Feedback (if needed)

    • Maintainers may request changes
    • Make updates in your branch
    • Push again (PR updates automatically)
  4. 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

Path 3: Build a Feature


πŸŽ“ Learning Resources

Before Your Next Contribution:

Essential Reading:

Optional Reading:


πŸ’¬ Get Help

Stuck? Ask for help!

Discord (fastest):

GitHub Discussions:

Office Hours (live help):


πŸ† 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:

  1. Fork the repository
  2. Follow this guide
  3. Submit your first PR
  4. 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 β†’