Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/captableinc/captable

#1 Open-Source Captable, an alternative to Carta, Pully, Angelist and others.
https://github.com/captableinc/captable

captable dataroom esign fundraising investor nextjs open-source prisma typescript

Last synced: about 2 months ago
JSON representation

#1 Open-Source Captable, an alternative to Carta, Pully, Angelist and others.

Awesome Lists containing this project

README

        


Captable, Inc. cover image

Captable, Inc.



#1 Open-source Cap table management platform, an alternative to Carta, Pulley, Angelist and others.



Learn more »



Github



X (formerly Twitter) Follow


Join us on Discord


CI


License


Docker image

Table of contents

- Features
- Community
- Contibuting
- Self hosting

✨ Key features

> [!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.

🤝 Community


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.

- [Join us on Discord](https://discord.gg/rCpqnD6G6p)
- [Follow us on Twitter](https://twitter.com/captableinc)
- [Meet the Founder](https://captable.inc/schedule)

🫡 Contributing

- 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](https://discord.gg/rCpqnD6G6p) community channel.
- Any contributions you make are truly appreciated.

Stack

- [Next.js](https://nextjs.org)
- [Tailwind](https://tailwindcss.com)
- [Prisma ORM](https://prisma.io)

---

Getting started


When contributing to Captable, Inc., 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](https://github.com/captableinc/captable/issues) for known issues or fixes.

Setup development environment

- Development environment on Gitpod
- Development environment with Docker
- Development environment without Docker

Development environment on Gitpod

- 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/captableinc/captable)

---

Development environment with Docker

- Install Docker & Docker Compose
- Fork & clone the forked repository
- Install node and pnpm. (optional)
- Copy `.env.example` to `.env`

```bash
cp .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

```bash

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.

- 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`
- Prisma studio will be on PORT `http://localhost:5555`

- 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

---

Development environment without Docker

> 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/captableinc/captable/fork)

- Clone the repository

```bash
git clone https://github.com//captable.git
```

- 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
- For a quick start, you can use [Supabase database](https://supabase.com/) or [Neon](https://neon.tech/) as well.
- 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

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`:

```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:

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

```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

Implement your changes

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 && git commit -m "feat/fix/chore/docs: commit message"
```

Open a pull request

> 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 ❤️

---

💌 Contributors




A table of avatars from the project's contributors


---

![Alt](https://repobeats.axiom.co/api/embed/a8fc8a167d33eec78a71953a2b9e58985ca4b3b6.svg "Captable repo activity")