Files

281 lines
10 KiB
Markdown
Raw Permalink Normal View History

2026-06-28 20:09:18 -07:00
<p align="center"><img src=".github/hero.svg" alt="captable" width="880"></p>
<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
<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">
<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">
<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
<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>
<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>
<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>
- <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]
> 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
👷 **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
👷 **Cap table management** (wip) - Hanzo Captable helps you keep track of your companys 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
**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 companys 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
**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)
- [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>
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.
- 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.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](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>
- <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
```
> **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.
- [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>
<a href="https://github.com/hanzoai/captable/graphs/contributors">
2024-01-22 22:48:34 -06:00
<p>
<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
![Alt](https://repobeats.axiom.co/api/embed/a8fc8a167d33eec78a71953a2b9e58985ca4b3b6.svg "Captable repo activity")