#1 Open-source Cap table management platform, an alternative to Carta, Pulley, Angelist and others.
[!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.
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.
When contributing to Captable, Inc., whether on GitHub or in other community spaces:
Fork & clone the forked repository
Install node and pnpm. (optional)
Copy .env.example
to .env
cp .env.example .env
Run the following command to start the development environment
# With pnpm installed
pnpm dx
# Without pnpm installed
docker compose up
Run the following command to migrate and seed the database
docker compose exec app pnpm db:migrate
docker compose exec app pnpm db:seed
Note Everytime you make changes to Dockerfile or compose.yml, you need to rebuild the docker image by running
docker compose up --build
Running docker compose up
will start all the services on their respective ports.
http://localhost:1025
http://localhost:5432
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 databaseThis 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
git clone https://github.com/<your-github-name>/captable.git
Copy .env.example
to .env
cp .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 captable
in postgres database
Update .env
file's DATABASE_URL
with database credentials
For a quick start, you can use Supabase database or Neon as well.
To simulate file storage locally, install minio
via homebrew or any other package manager.
brew install minio
Once minio is installed run
minio server start --console-address ":9002"
This will start minio server
minio api will be available on http://127.0.0.1:9000
and
minio web gui will be available on http://127.0.0.1:9002
.
once you see these endpoint in terminal, update the following .env
:
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:
username: minioadmin
password: minioadmin
and create two buckets with the name:
captable-public-bucket
and captable-private-bucket
,
this should match UPLOAD_BUCKET_PUBLIC
and UPLOAD_BUCKET_PRIVATE
env's values.
and you should be done with minio setup.
Run the following command to install dependencies
pnpm install
Run the following command to migrate and seed the database
pnpm db:migrate
pnpm db:seed
Run the following command to start the development server
pnpm dev
# On a different terminal, run the following command to start the mail server
pnpm email:dev
http://localhost:1025
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 databaseWhen making commits, make sure to follow the conventional commit guidelines, i.e. prepending the message with feat:
, fix:
, chore:
, docs:
, etc...
git 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 ❤️