Captable
#1 Open-Source Captable, an alternative to Carta, Pully, Angelist and others.
#1 Open-source Cap table management platform, an alternative to Carta, Pulley, Angelist and others. The project is written primarily in TypeScript, distributed under the GNU Affero General Public License v3.0 license, first published in 2024. Key topics include: captable, convertible-note, dataroom, equity, esign.
- <a href="#features">Features</a>
- <a href="#community">Community</a>
- <a href="#contributing">Contibuting</a>
- <a href="https://github.com/captableinc/captable/blob/main/SELF-HOSTING.md" target="_blank">Self hosting</a>
[!IMPORTANT]
We envision a world where cap table management is accessible, secure, and empowering for all. Captable, Inc. 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.
👷 Incorporation (wip) - Captable, Inc. helps you incorporate your company in minutes, with all the necessary legal documents and filings taken care of.
👷 Cap table management (wip) - Captable, Inc. 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.
✅ Fundraise - Captable, Inc. can help you raise capital, whether its signing standard or custom SAFE or creating and managing fundraising rounds, tracking investor commitments, and more.
✅ Investor updates - Delight your investors and team members by sending them regular updates on your company’s progress.
✅ eSign Documents - Sign SAFE, NDA, contracts, offere letters or any type of documents with Captable Sign.
✅ Data rooms - Captable, Inc. provides a secure virtual data room where you can store important documents and share them with investors, employees, and other stakeholders.
<h2 id="community">🤝 Community</h2> 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. <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.
- Let's collaborate on Discord community channel.
- Any contributions you make are truly appreciated.
<h3 id="start">Getting started</h3> When contributing to <strong>Captable, Inc.</strong>, whether on GitHub or in other community spaces:
- Be respectful, civil, and open-minded.
- Before opening a new pull request, try searching through the issue tracker for known issues or fixes.
- <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>
- Click the button below to open this project in Gitpod.
<h4 id="with-docker">Development environment with Docker</h4>
-
<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/captableinc/captable/fork" target="_blank">Fork</a> & clone the forked repository
-
<a href="https://pnpm.io/installation" target="_blank">Install node and pnpm</a>. (optional)
-
Copy
.env.exampleto.envbashcp .env.example .env -
Run the following command to start the development environment
bash# With pnpm installed pnpm dx # Without pnpm installed docker compose up -
Run the following command to migrate and seed the database
bashdocker compose exec app pnpm db:migrate docker compose exec app pnpm db:seedNote
Everytime you make changes to Dockerfile or compose.yml, you need to rebuild the docker image by runningdocker compose up --build -
Running
docker compose upwill start all the services on their respective ports.- App will be running on http://localhost:3000
- Emails will be intercepted: http://localhost:8025
- SMTP will be on PORT
http://localhost:1025 - Postgres will be on PORT
http://localhost:5432 - Prisma studio will be on PORT
http://localhost:5555
-
Frequently used commands
docker compose up- Start the development environmentdocker compose down- Stop the development environmentdocker compose logs -f- View logs of the running servicesdocker compose up --build- Rebuild the docker imagedocker compose run app pnpm db:migrate- Run database migrationsdocker 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.
-
Clone the repository
bashgit clone https://github.com/<your-github-name>/captable.git -
Copy
.env.exampleto.envbashcp .env.example .env -
Install latest version of node and pnpm
-
Install latest version of postgres database
-
Install mailpit for SMTP and email interception
-
Create database
captablein postgres database -
Update
.envfile'sDATABASE_URLwith database credentials -
For a quick start, you can use Supabase database or Neon as well.
-
To simulate file storage locally, install
miniovia homebrew or any other package manager.bashbrew install minioOnce minio is installed run
bashminio server start --console-address ":9002"This will start minio server <br>
minio api will be available onhttp://127.0.0.1:9000and <br>
minio web gui will be available onhttp://127.0.0.1:9002.once you see these endpoint in terminal, update the following
.env:bashUPLOAD_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:minioadminand create two buckets with the name: <br>
captable-public-bucketandcaptable-private-bucket,<br> this should matchUPLOAD_BUCKET_PUBLICandUPLOAD_BUCKET_PRIVATEenv's values.and you should be done with minio setup.
-
Run the following command to install dependencies
bashpnpm install -
Run the following command to migrate and seed the database
bashpnpm db:migrate pnpm db:seed -
Run the following command to start the development server
bashpnpm 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
- Emails will be intercepted: 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 serverpnpm email:dev- Start the mail serverpnpm db:migrate- Run database migrationspnpm db:seed- Seed the database
When making commits, make sure to follow the conventional commit guidelines, i.e. prepending the message with feat:, fix:, chore:, docs:, etc...
<h4 id="pr">Open a pull request</h4>bashgit add <file> && git commit -m "feat/fix/chore/docs: commit message"
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/captableinc/captable/graphs/contributors"> <p> <img src="https://contrib.rocks/image?repo=captableinc/captable" alt="A table of avatars from the project's contributors" /> </p> </a>
Contributors
Showing top 12 contributors by commit count.
