What is a Project?
A project in Tesslate Studio is a complete, containerized application environment. Each project gets its own isolated infrastructure, including source code, running containers, a live preview, AI chat history, and optional version control. Under the hood, every project is stored as a database record with a uniqueslug (auto-generated from the name, for example my-app-k3x8n2), an owner_id, and an environment_status that tracks whether its containers are running or paused.
Source Code
All your files, components, and assets live inside the project
Containers
One or more isolated services (frontend, backend, database) managed by Tesslate
Chat History
Conversations with AI agents are saved per project
Git Integration
Optional connection to GitHub, GitLab, or Bitbucket
Project Structure
Projects in Tesslate Studio are not limited to a single framework or file layout. When you create a project from the default template, you get a React + Vite starter:How Projects Are Created
There are three ways to start a new project:Template
Blank React + Vite starter, ready to customize
Git Import
Import from GitHub, GitLab, or Bitbucket
Base
Pre-built template from the Marketplace with a defined tech stack
For a detailed walkthrough of each creation method, see Creating Projects.
Multi-Container Projects
Tesslate Studio supports monorepo-style projects with multiple containers. Each container represents an isolated service that runs inside Docker or Kubernetes.Base Containers
User application code created from marketplace bases. Examples: React frontend, FastAPI backend, Next.js app.
Service Containers
Infrastructure services like PostgreSQL, Redis, or RabbitMQ. Identified by a
service_slug such as postgres or redis.Container Types and Deployment Modes
Each container has two key properties that determine how it runs:- Container Type
- Deployment Mode
Base (
container_type = "base"): Application code. Created from a marketplace base template. Runs your frontend, backend, or API server.Service (container_type = "service"): Infrastructure. Pre-configured database, cache, or message queue. Uses a known service_slug (for example, postgres, redis, rabbitmq).Container Connections
Connections define how containers communicate. They appear as edges on the architecture graph (powered by React Flow) and are used to generate Docker Compose files or Kubernetes manifests.Connection Types (connector_type)
Connection Types (connector_type)
- env_injection: Inject environment variables from one container to another (for example, passing
DATABASE_URLfrom a Postgres service to a backend) - http_api: HTTP-based API connection between services
- database: Direct database connection with credentials
- message_queue: Message broker connection (RabbitMQ, Kafka)
- websocket: WebSocket connection between services
- cache: Cache connection (Redis, Memcached)
- depends_on: Generic startup dependency (container B must start after container A)
All containers in a project share a common network. In Docker mode, this is a Docker network named
tesslate-{slug}. In Kubernetes mode, all pods run in the same namespace (proj-{uuid}) and communicate via service names.Adding Containers to a Project
Open the Architecture Panel
In your project workspace, switch to the architecture view to see the React Flow graph canvas.
Add a Container
Click Add Container and choose a base from the marketplace or a service type (PostgreSQL, Redis, etc.).
Position and Connect
Drag the new container node into position. Draw edges to other containers to define connections.
Configure
Set environment variables, ports, and connection details. For external services, provide the endpoint URL and credentials.
Project Lifecycle
Every project has anenvironment_status that tracks the state of its container infrastructure.
Creation
Background task sets up the project directory, clones files, and registers containers in the database. Status begins as starting.
Active
Containers are running and the project is fully accessible. The live preview is available, and AI agents can read and write files.
Stopping
When a project goes idle or you manually stop it, containers begin shutting down. In Kubernetes mode, files may be archived to storage.
Hibernation happens automatically after a configurable idle timeout (default: 30 minutes). This saves resources without losing any of your work. When you return, the project restores and picks up where you left off.
Container Orchestration
Tesslate Studio supports two deployment modes for running project containers. The platform uses a factory pattern so that all code interacts with the same abstract interface, regardless of which mode is active.- Docker Mode (Local Development)
- Kubernetes Mode (Production)
How it works: Tesslate generates a File access: Direct filesystem access through a shared volume mounted at
docker-compose.yml for each project and runs docker-compose up. Containers communicate over a shared Docker network.Routing: Traefik reverse proxy routes traffic to containers. Preview URLs follow the pattern:/projects/{slug}.Volume isolation: Uses Docker Compose v2.23.0+ volume.subpath to isolate each project’s files within a shared volume.Best for: Local development and testing.Port Resolution
Every container has aneffective_port property that determines which port the dev server listens on. The resolution order is:
internal_port(set from TESSLATE.md or framework detection during project creation)port(the exposed/mapped port)3000(last-resort default)
Project Management
Dashboard
All your projects appear on the Dashboard page with status indicators and quick actions:- Grid view with project cards showing name, status, and last activity
- Status phases: Idea, Build, or Launch (user-defined organizational labels)
- Quick actions: Open, delete, or fork a project
Opening a Project
Click any project card to enter the builder workspace, which includes:- Code editor (Monaco)
- Live preview (iframe)
- Chat interface (AI agents)
- Architecture graph (React Flow canvas)
- File browser, terminal, kanban board, and asset manager
Deleting Projects
Working with Files
File Operations
- Create: AI agents auto-create files, or create them manually in the file tree
- Edit: Use the Monaco code editor with full IntelliSense
- Save: Files save to the container filesystem. The API call is
projectsApi.saveFile(slug, filePath, content). - Delete: Remove files through the file tree or via
projectsApi.deleteFile(slug, filePath)
Assets
Binary files (images, fonts, videos, documents) are managed separately through the Assets panel. Each asset is tracked in the database with metadata including filename, MIME type, dimensions (for images), and file size.- Supported File Types
- Asset Management
- Code:
.tsx,.jsx,.ts,.js,.css,.scss,.json - Images: PNG, JPG, SVG, GIF, WebP
- Fonts: TTF, WOFF, WOFF2, OTF
- Documents: PDF, TXT, Markdown
Project Settings
Access settings through the gear icon in the project workspace:Preview Mode
Preview Mode
- Normal: Single browser view in the preview panel
- Browser Tabs: Multiple tab support for testing multi-page navigation
Development Server
Development Server
- View container status (running, stopped, failed)
- Restart individual containers or all containers at once
- Check the assigned preview URL
General Settings
General Settings
- Project name and description
- Status phase (Idea, Build, Launch)
- Architecture diagram settings
Best Practices
Plan Your Architecture
Plan Your Architecture
Before adding containers, decide which services your project needs. A typical full-stack project might include a frontend (React), a backend (FastAPI or Express), and a database (PostgreSQL). Define your connections up front to avoid reconfiguring later.
Save and Version Your Work
Save and Version Your Work
Connect your project to GitHub, GitLab, or Bitbucket early. Commit regularly so you have a history to roll back to if needed. Tesslate also supports project hibernation, which preserves your state automatically.
Use Descriptive Names
Use Descriptive Names
Name your containers clearly (for example,
frontend, api, database) so the architecture graph is easy to understand. Use meaningful project names that describe the application.Leverage Agent-Assisted Startup
Leverage Agent-Assisted Startup
If a container fails to start automatically (common with community bases that do not include a TESSLATE.md file), use the “Ask Agent to start it” button. The AI agent will inspect the project files and run the correct startup command.
Next Steps
Create Your First Project
Step-by-step guide to creating a project from template, Git, or base
Code Editor
Learn how to use the Monaco-powered code editor
Live Preview
Understand how container-based live preview works
Git Integration
Connect to GitHub, GitLab, or Bitbucket