---
title: "Deploy It's a Plan"
description: "Self-hosted project tracker with boards, cycles and AI agents"
category: "Other"
url: https://railway.com/deploy/its-a-plan
---

# Deploy It's a Plan

Self-hosted project tracker with boards, cycles and AI agents

**[Deploy It's a Plan on Railway](https://railway.com/template/its-a-plan)**

- **Creator:** Croff's Projects
- **Category:** Other
- **Total deploys:** 3

## Template content

### postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### bot https://itsaplan.dev/icon.svg

- **Source:** croffasia/itsaplan

### api https://itsaplan.dev/icon.svg

- **Source:** croffasia/itsaplan
- **Health check:** /
- **Public domain:** Yes

### worker https://itsaplan.dev/icon.svg

- **Source:** croffasia/itsaplan

### web https://itsaplan.dev/icon.svg

- **Source:** croffasia/itsaplan
- **Health check:** /login
- **Public domain:** Yes

## Buckets

- **attachments**

## Documentation

# Deploy and Host It's a Plan on Railway

It's a Plan is a self-hosted project tracker. It holds projects, issues, boards, cycles and initiatives, and every project defines its own columns, issue types, labels and custom fields. Dashboards, webhooks, a Telegram bot, an MCP server and AI agents that work on issues are included. The source is AGPL-3.0.

## About Hosting It's a Plan

The stack is four services built from one repository, plus a database and a bucket. `api` is an Elysia server on Bun that applies its own database migrations on startup and serves the REST API, the MCP endpoint and the auth handler. `web` is a Next.js app rendered on the server; the API origin is compiled into its bundle, so it rebuilds whenever that origin changes. `worker` delivers webhooks and notifications and runs agent schedules. `bot` runs Telegram long polling and stays at a single replica. Postgres holds all data and the bucket holds issue attachments. Secrets are generated at deploy time — you supply two hostnames and nothing else.

## Common Use Cases

- Teams that want an issue tracker on their own infrastructure, with data in a database they control
- Instances where AI agents pick up issues and work through them under human review
- Projects that drive their tracker from code, through the MCP server or the REST API

## Dependencies for It's a Plan Hosting

- PostgreSQL for all application data
- An S3-compatible bucket for issue attachments
- A domain you control, with two hostnames pointing at this project
- Source: https://github.com/croffasia/itsaplan (AGPL-3.0)

### Implementation Details

A domain of your own is required. Railway's generated `*.up.railway.app` hostnames are on the Public Suffix List, so the browser treats each service as a separate site and rejects the session cookie: sign-in returns 200 and then bounces straight back to the login page. Two hostnames under one registrable domain fix this, because the cookie is then issued on their shared parent.

Deploying takes three steps:

1. Enter `API_DOMAIN` and `APP_DOMAIN`, for example `api.example.com` and `app.example.com`.
2. After the deploy, add `API_DOMAIN` as a custom domain on the `api` service and `APP_DOMAIN` on the `web` service, then create the CNAME records Railway gives you. Keep them unproxied.
3. Open the web app and register. The first account becomes the instance administrator.

SMTP, AI provider keys and the Telegram bot token are configured in the interface after sign-in, not through environment variables.

## Why Deploy It's a Plan on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying It's a Plan on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/its-a-plan
