2026-06-28 20:09:18 -07:00
<p align="center"><img src=".github/hero.svg" alt="captable" width="880"></p>
2026-03-01 12:04:10 -08:00
<a href="https://captable.hanzo.ai" alt="Hanzo Captable">
<img alt="Hanzo Captable cover image" src="https://captable.hanzo.ai/og.png">
2024-04-15 04:05:42 -05:00
</a>
2024-01-11 17:36:05 -05:00
2026-03-01 12:04:10 -08:00
<h1 align="center">Hanzo Captable</h1>
2024-01-22 22:48:34 -06:00
<p align="center">
2024-05-15 05:36:20 -05:00
#1 Open-source Cap table management platform, an alternative to Carta, Pulley, Angelist and others.
2024-01-22 22:48:34 -06:00
</p>
<p align="center">
2026-03-01 12:04:10 -08:00
<a href="https://captable.hanzo.ai"><strong>Learn more »</strong></a>
2024-01-22 22:48:34 -06:00
</p>
2024-01-08 21:34:22 -06:00
2024-01-22 22:48:34 -06:00
<p align="center">
2026-03-01 12:04:10 -08:00
<a href="https://github.com/hanzoai/captable/stargazers">
<img src="https://img.shields.io/github/stars/hanzoai/captable" alt="Github" />
2024-01-22 22:48:34 -06:00
</a>
2024-05-15 05:25:32 -05:00
2024-04-15 04:05:42 -05:00
<a href="https://twitter.com/captableinc">
2024-06-11 02:28:53 -05:00
<img alt="X (formerly Twitter) Follow" src="https://img.shields.io/twitter/follow/captableinc">
2024-01-22 22:48:34 -06:00
</a>
2024-06-11 02:28:53 -05:00
2024-01-22 22:48:34 -06:00
<a href="https://discord.gg/rCpqnD6G6p">
2024-06-11 02:17:04 -05:00
<img src="https://img.shields.io/badge/Discord-Join%20us%20on%20Discord-purple" alt="Join us on Discord" />
</a>
2024-06-11 02:28:53 -05:00
2026-03-01 12:04:10 -08:00
<a href="https://github.com/hanzoai/captable/actions/workflows/release.yml">
<img src="https://github.com/hanzoai/captable/actions/workflows/release.yml/badge.svg?branch=main&title=CI" alt="CI" />
2024-06-11 02:28:53 -05:00
</a>
2026-03-01 12:04:10 -08:00
<a href="https://github.com/hanzoai/captable/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/hanzoai/captable?label=license&logo=github&color=f80&logoColor=fff" alt="License" />
2024-06-11 02:28:53 -05:00
</a>
2026-03-01 12:04:10 -08:00
<a href="https://hub.docker.com/r/hanzoai/captable">
<img src="https://img.shields.io/badge/Docker%20Hub-hanzoai/captable-blue" alt="Docker image" />
2024-01-22 22:48:34 -06:00
</a>
</p>
2024-01-08 21:34:22 -06:00
2024-05-17 04:34:15 -05:00
<h3 id="toc">Table of contents</h3>
- <a href="#features ">Features</a>
- <a href="#community ">Community</a>
- <a href="#contributing ">Contibuting</a>
2026-03-01 12:04:10 -08:00
- <a href="https://github.com/hanzoai/captable/blob/main/SELF-HOSTING.md" target="_blank">Self hosting</a>
2024-05-17 04:34:15 -05:00
2024-05-15 05:25:32 -05:00
<h2 id="features">✨ Key features</h2>
2024-01-22 22:48:34 -06:00
2024-05-15 05:36:20 -05:00
> [!IMPORTANT]
2026-03-01 12:04:10 -08:00
> We envision a world where cap table management is accessible, secure, and empowering for all. Hanzo Captable aims to democratize the handling of cap tables, securities, and stakeholder interactions. Through cutting-edge technology and a commitment to openness, we strive to be the catalyst for positive change in financial ecosystems.
2024-01-22 22:48:34 -06:00
2026-03-01 12:04:10 -08:00
👷 **Incorporation** (wip) - Hanzo Captable helps you incorporate your company in minutes, with all the necessary legal documents and filings taken care of.
2024-01-22 22:48:34 -06:00
2026-03-01 12:04:10 -08:00
👷 **Cap table management** (wip) - Hanzo Captable helps you keep track of your company’ s ownership structure, including who owns what percentage of the company, how much stock/options has been issued, and more.
2024-05-15 05:25:32 -05:00
2026-03-01 12:04:10 -08:00
✅ **Fundraise** - Hanzo Captable can help you raise capital, whether its signing standard or custom SAFE or creating and managing fundraising rounds, tracking investor commitments, and more.
2024-05-15 05:25:32 -05:00
2024-05-15 05:36:20 -05:00
✅ **Investor updates** - Delight your investors and team members by sending them regular updates on your company’ s progress.
2024-05-15 05:25:32 -05:00
2024-05-15 05:36:20 -05:00
✅ **eSign Documents** - Sign SAFE, NDA, contracts, offere letters or any type of documents with Captable Sign.
2024-05-15 05:25:32 -05:00
2026-03-01 12:04:10 -08:00
✅ **Data rooms** - Hanzo Captable provides a secure virtual data room where you can store important documents and share them with investors, employees, and other stakeholders.
2024-05-15 05:25:32 -05:00
2024-05-17 04:34:15 -05:00
<h2 id="community">🤝 Community</h2>
2024-05-15 05:25:32 -05:00
We have a community of developers, designers, and entrepreneurs who are passionate about building the future of finance. Join us on Discord to connect with like-minded individuals, share your ideas, and collaborate on projects.
2024-06-04 02:36:11 -05:00
- [Join us on Discord ](https://discord.gg/rCpqnD6G6p )
- [Follow us on Twitter ](https://twitter.com/captableinc )
2026-03-01 12:04:10 -08:00
- [Meet the Founder ](https://captable.hanzo.ai/schedule )
2024-05-15 05:25:32 -05:00
<h2 id="contributing">🫡 Contributing</h2>
- Please show us some support by giving it a ⭐️
- We are looking for contributors to help us build the future of cap table management.
2024-01-22 22:48:34 -06:00
- Let's collaborate on [Discord ](https://discord.gg/rCpqnD6G6p ) community channel.
2024-05-15 05:36:20 -05:00
- Any contributions you make are truly appreciated.
2024-05-15 05:25:32 -05:00
2024-05-16 01:00:05 -05:00
<h3 id="stack">Stack</h3>
- [Next.js ](https://nextjs.org )
2024-06-11 02:28:53 -05:00
- [Tailwind ](https://tailwindcss.com )
- [Prisma ORM ](https://prisma.io )
2024-05-16 01:00:05 -05:00
---
<h3 id="start">Getting started</h3>
2026-03-01 12:04:10 -08:00
When contributing to <strong>Hanzo Captable</strong>, whether on GitHub or in other community spaces:
2024-05-16 01:00:05 -05:00
- Be respectful, civil, and open-minded.
2026-03-01 12:04:10 -08:00
- Before opening a new pull request, try searching through the [issue tracker ](https://github.com/hanzoai/captable/issues ) for known issues or fixes.
2024-05-16 01:00:05 -05:00
<h3 id="setup">Setup development environment</h3>
- <a href="#gitpod ">Development environment on Gitpod</a>
- <a href="#with -docker">Development environment with Docker</a>
- <a href="#without -docker">Development environment without Docker</a>
<h4 id="gitpod">Development environment on Gitpod</h4>
- Click the button below to open this project in Gitpod.
2026-03-01 12:04:10 -08:00
[](https://gitpod.io/#https://github .com/hanzoai/captable)
2024-05-16 01:00:05 -05:00
---
<h4 id="with-docker">Development environment with Docker</h4>
2024-05-17 04:34:15 -05:00
- <a href="https://docs.docker.com/get-docker/" target="_blank">Install Docker</a> & <a href="https://docs.docker.com/compose/install/" target="_blank">Docker Compose</a>
2026-03-01 12:04:10 -08:00
- <a href="https://github.com/hanzoai/captable/fork" target="_blank">Fork</a> & clone the forked repository
2024-05-17 04:34:15 -05:00
- <a href="https://pnpm.io/installation" target="_blank">Install node and pnpm</a>. (optional)
2024-05-16 01:00:05 -05:00
- Copy `.env.example` to `.env`
```bash
2024-06-04 02:36:11 -05:00
cp .env.example .env
2024-05-16 01:00:05 -05:00
` ``
- Run the following command to start the development environment
` ``bash
2024-06-04 02:36:11 -05:00
2024-05-16 01:00:05 -05:00
# With pnpm installed
pnpm dx
# Without pnpm installed
docker compose up
2024-06-04 02:36:11 -05:00
2024-05-16 01:00:05 -05:00
` ``
- Run the following command to migrate and seed the database
` ``bash
2024-06-04 02:36:11 -05:00
2024-06-11 02:28:53 -05:00
docker compose exec app pnpm db:migrate
docker compose exec app pnpm db:seed
2024-05-16 01:00:05 -05:00
` ``
2024-05-26 15:59:38 +05:45
> **Note**
> Everytime you make changes to Dockerfile or compose.yml, you need to rebuild the docker image by running ` docker compose up --build`
2024-05-16 01:00:05 -05:00
- Running ` docker compose up` will start all the services on their respective ports.
2024-06-04 02:36:11 -05:00
2024-05-16 01:00:05 -05:00
- App will be running on [http://localhost:3000](http://localhost:3000)
- Emails will be intercepted: [http://localhost:8025](http://localhost:8025)
- SMTP will be on PORT ` http://localhost:1025`
- Postgres will be on PORT ` http://localhost:5432`
2024-06-04 02:36:11 -05:00
- Prisma studio will be on PORT ` http://localhost:5555`
2024-05-16 01:00:05 -05:00
- Frequently used commands
- ` docker compose up` - Start the development environment
- ` docker compose down` - Stop the development environment
- ` docker compose logs -f` - View logs of the running services
- ` docker compose up --build` - Rebuild the docker image
- ` docker compose run app pnpm db:migrate` - Run database migrations
- ` docker compose run app pnpm db:seed` - Seed the database
---
<h4 id="without-docker">Development environment without Docker</h4>
> This has been tested on Mac OS and works really well. If you are using Linux/Windows/WSL, you might need to install some additional dependencies.
2026-03-01 12:04:10 -08:00
- [Fork the repository](https://github.com/hanzoai/captable/fork)
2024-05-16 01:00:05 -05:00
- Clone the repository
` ``bash
2024-05-21 19:01:35 -05:00
git clone https://github.com/<your-github-name>/captable.git
2024-05-16 01:00:05 -05:00
` ``
- Copy ` .env.example` to ` .env`
` ``bash
cp .env.example .env
` ``
- Install latest version of node and pnpm
- Install latest version of postgres database
- Install [mailpit](https://mailpit.axllent.org/docs/install/) for SMTP and email interception
- Create database ` captable` in postgres database
- Update ` .env` file's ` DATABASE_URL` with database credentials
2024-06-11 02:28:53 -05:00
- For a quick start, you can use [Supabase database](https://supabase.com/) or [Neon](https://neon.tech/) as well.
2024-07-09 00:47:16 +05:45
- To simulate file storage locally, install ` minio` via homebrew or any other package manager.
` ``bash
brew install minio
` ``
Once minio is installed run
` ``bash
minio server start --console-address ":9002"
` ``
This will start minio server <br>
minio api will be available on ` http://127.0.0.1:9000` and <br>
minio web gui will be available on ` http://127.0.0.1:9002`.
once you see these endpoint in terminal, update the following ` .env`:
` ``bash
UPLOAD_ENDPOINT="http://127.0.0.1:9000" # should match minio api server's endpoint
NEXT_PUBLIC_UPLOAD_DOMAIN="http://127.0.0.1:9000" # should match minio api server's endpoint
UPLOAD_REGION="us-east-1" # don't change it
UPLOAD_ACCESS_KEY_ID="minioadmin" # by default minio username is "minioadmin"
UPLOAD_SECRET_ACCESS_KEY="minioadmin" # by default minio password is "minioadmin"
UPLOAD_BUCKET_PUBLIC="captable-public-bucket"
UPLOAD_BUCKET_PRIVATE="captable-private-bucket"
` ``
after this,
go to minio web gui(` http://127.0.0.1:9002`) and login: <br>
username: ` minioadmin` <br>
password: ` minioadmin`
and create two buckets with the name: <br> ` captable-public-bucket` and ` captable-private-bucket`,<br> this should match ` UPLOAD_BUCKET_PUBLIC` and ` UPLOAD_BUCKET_PRIVATE` env's values.
and you should be done with minio setup.
2024-05-16 01:00:05 -05:00
- Run the following command to install dependencies
` ``bash
pnpm install
` ``
- Run the following command to migrate and seed the database
` ``bash
pnpm db:migrate
pnpm db:seed
` ``
- Run the following command to start the development server
` ``bash
pnpm dev
# On a different terminal, run the following command to start the mail server
pnpm email:dev
` ``
- App will be running on [http://localhost:3000](http://localhost:3000)
- Emails will be intercepted: [http://localhost:8025](http://localhost:8025)
- SMTP will be on PORT ` http://localhost:1025`
- Postgres will be on PORT ` http://localhost:5432`
- Frequently used commands
- ` pnpm dev` - Start the development server
- ` pnpm email:dev` - Start the mail server
- ` pnpm db:migrate` - Run database migrations
- ` pnpm db:seed` - Seed the database
2024-05-17 04:34:15 -05:00
<h4 id="changes">Implement your changes</h4>
2024-05-16 01:00:05 -05:00
When making commits, make sure to follow the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) guidelines, i.e. prepending the message with ` feat:`, ` fix:`, ` chore:`, ` docs:`, etc...
` ``bash
git add <file> && git commit -m "feat/fix/chore/docs: commit message"
` ``
<h4 id="pr">Open a pull request</h4>
> When you're done
Make a commit and push your code to your github fork and make a pull-request.
Thanks for your contributions. Much ❤️
---
<h2 id="contributors">💌 Contributors</h2>
2026-03-01 12:04:10 -08:00
<a href="https://github.com/hanzoai/captable/graphs/contributors">
2024-01-22 22:48:34 -06:00
<p>
2026-03-01 12:04:10 -08:00
<img src="https://contrib.rocks/image?repo=hanzoai/captable" alt="A table of avatars from the project's contributors" />
2024-01-22 22:48:34 -06:00
</p>
</a>
2024-05-16 01:00:05 -05:00
---
2024-06-04 02:36:11 -05:00
