Project Structure

Understanding how to organize your work in Packable starts with projects. This guide will help you structure your API integrations effectively.

What is a Project?

A project in Packable represents a single API. Each project acts as a container for all SDK generations related to one specific API specification.

Think of it this way: if you have multiple APIs (e.g., a Users API, a Payments API, and an Analytics API), you would create three separate projects—one for each API.

One API, One Project

This one-to-one relationship ensures:

  • Clean separation: Each API's SDKs are isolated and independently managed
  • Version control: Track changes and versions specific to each API
  • Easy maintenance: Update, regenerate, or modify SDKs without affecting other APIs
  • Clear organization: Quickly find and manage the SDKs for any given API

Creating SDKs within a Project

Once you've created a project for your API, you can generate multiple SDKs from it. Each SDK targets a different programming language or framework.

Multiple Languages, One Source

From a single project (API), you can create SDKs for:

  • TypeScript/JavaScript
  • Python
  • Go
  • Java
  • Ruby
  • PHP
  • C#

All these SDKs are generated from the same OpenAPI specification, ensuring consistency across all languages.

Example Structure

Here's how you might organize your projects:

account-structure

Best Practices

Naming Your Projects

Choose clear, descriptive names for your projects that identify the API:

  • ✅ "Payment Processing API"
  • ✅ "User Management API v2"
  • ✅ "Public REST API"
  • ❌ "Project 1"
  • ❌ "Test"

When to Create a New Project

Create a new project when:

  • You have a completely separate API with its own OpenAPI specification
  • You're working with different API versions that have breaking changes
  • You need to maintain separate SDKs for internal vs. external APIs

When to Use the Same Project

Keep SDKs in the same project when:

  • They're generated from the same API specification
  • You just need SDKs in different programming languages
  • You're working with minor version updates that don't break compatibility

Each project can have its own configuration, custom code, and version history, giving you full control over how your SDKs are generated and distributed.