-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 92fc492
Showing
57 changed files
with
9,221 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | ||
|
||
# dependencies | ||
/node_modules | ||
/.pnp | ||
.pnp.js | ||
|
||
# testing | ||
/coverage | ||
|
||
# next.js | ||
/.next/ | ||
/out/ | ||
|
||
# production | ||
/build | ||
|
||
# misc | ||
.DS_Store | ||
*.pem | ||
|
||
# debug | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
|
||
# local env files | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
|
||
# vercel | ||
.vercel |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"tabWidth": 2, | ||
"useTabs": false | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Founder's Choice | ||
|
||
### About | ||
Choosing the right partners to sit on your cap table is one of the hardest decisions that a founder has to make. The wrong choice is difficult to undo. Without knowing the right people, it can be difficult to get reliable information on which firms to choose. We hope that by collecting and processing venture-backed founder preferrences of investors, we can democratize access to this information, allowing founders to easily find the VC firms who are right for them. We verify that all founders are only able to contribute to the rankings of VCs that have actually invested in their startup. If you are a founder who’s raised money, we would love your feedback! If not, we hope our rankings can be helpful to you. | ||
|
||
### Identity Verification | ||
In order to verify a Founder's identity, we use a combination of Linkedin and Crunchbase. This way, founders can only compare VCs that have actually invested in them. | ||
|
||
### Ranking Algorithm | ||
We use an Elo-based algorithm , which asks founders to make pair-wise comparisons among the VCs they’ve worked with. The advantage of this system is that it only accepts ratings from founders who have actually worked with these VCs, and it preserves anonymity of the founders while avoiding the vitriol on other review sites. | ||
|
||
### Data Security | ||
We take founder's data very seriously. Although we authenticate all founders through their LinkedIn profiles, we only store that data temporarily for authentication purposes. As soon as founders start submitting comparisons, we hash their identity, and unlink their hashed identity from the ratings they've made, so no one can ever connect a founder's ratings back to them. To be as secure as possible, all our code (as you can see here) is open-sourced. Our code’s been reviewed by engineers at venture-backed companies, we’re trying to do this as carefully as possible. | ||
|
||
### Sponsors | ||
<img width="533" alt="Screen Shot 2022-04-10 at 5 33 05 PM" src="https://user-images.githubusercontent.com/25914367/162640772-5e32380c-ad5e-4643-9373-3a7bb52432b2.png"> | ||
|
||
Although we have venture capital firms as sponsors for this project, they do not have access to any of the data nor are they able to contribute to any of the rankings. Our sponsors are only interested in supporting this ranking project so they can better serve founders. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import React from "react" | ||
|
||
export function Button({ | ||
children, | ||
className | ||
}) { | ||
return <button | ||
className={`z-50 raleway font-light text-4xl bg-white rounded-full border-2 border-black p-8 py-4 mt-8 ${className}`} | ||
href="/login" | ||
> | ||
{children} | ||
</button> | ||
} | ||
|
||
export function Link({ | ||
children, | ||
className = "" | ||
}) { | ||
return <a | ||
className={`z-50 raleway font-light text-4xl bg-white rounded-full border-2 border-black p-8 py-4 mt-8 ${className}`} | ||
href="/login" | ||
> | ||
{children} | ||
</a> | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
export default ({ className, size = 36, children }) => { | ||
return <> | ||
<div className={`flex flex-col justify-center items-center ${className}`}> | ||
<div | ||
className={`animate-spin rounded-full h-${size} w-${size} border-b-2 border-gray-900`} | ||
/> | ||
{children} | ||
</div> | ||
</> | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
import { useRouter } from "next/router"; | ||
import { useState, useEffect } from "react"; | ||
|
||
export default () => { | ||
const router = useRouter(); | ||
const isIndex = router.pathname === `/`; | ||
const isRanking = router.pathname === "/ranking"; | ||
const isAbout = router.pathname === "/about"; | ||
const [isMobile, setIsMobile] = useState(false); | ||
|
||
useEffect(() => { | ||
function handleResize() { | ||
setIsMobile(window.innerWidth <= 768); | ||
} | ||
window.addEventListener("resize", handleResize); | ||
return () => window.removeEventListener("resize", handleResize); | ||
}, []); | ||
|
||
return ( | ||
<nav className="flex top-0 inline-block w-screen p-6"> | ||
{isIndex || ( | ||
<a href="/" className="raleway text-4xl font-bold mr-6"> | ||
Founder's Choice | ||
</a> | ||
)} | ||
{(!isIndex && isMobile) || ( | ||
<> | ||
<a | ||
href="/ranking" | ||
className="raleway text-3xl font-light ml-auto mr-6" | ||
> | ||
Ranking | ||
</a> | ||
<a href="/about" className="raleway font-light text-3xl mr-6"> | ||
About | ||
</a> | ||
</> | ||
)} | ||
</nav> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import React, { Component } from 'react'; | ||
|
||
import AsyncSelect from 'react-select/async'; | ||
|
||
const filterColors = (inputValue) => { | ||
return colourOptions.filter((i) => | ||
i.label.toLowerCase().includes(inputValue.toLowerCase()) | ||
); | ||
}; | ||
|
||
const promiseOptions = (inputValue) => | ||
new Promise((resolve) => { | ||
setTimeout(() => { | ||
resolve(filterColors(inputValue)); | ||
}, 1000); | ||
}); | ||
|
||
export default class AsyncMulti extends Component { | ||
state = { inputValue: '' }; | ||
handleInputChange = (newValue) => { | ||
const inputValue = newValue.replace(/\W/g, ''); | ||
this.setState({ inputValue }); | ||
return inputValue; | ||
}; | ||
render() { | ||
return ( | ||
<AsyncSelect | ||
isMulti | ||
cacheOptions | ||
defaultOptions | ||
loadOptions={promiseOptions} | ||
/> | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { createContext, useContext, useState } from 'react'; | ||
|
||
const AppContext = createContext(); | ||
|
||
// TODO: Split auth, profile and investors into seperate contexts | ||
export function AppWrapper({ children }) { | ||
const [investors, setInvestors] = useState([]); | ||
const sharedState = { | ||
investors, | ||
setInvestors | ||
} | ||
|
||
return ( | ||
<AppContext.Provider value={sharedState}> | ||
{children} | ||
</AppContext.Provider> | ||
); | ||
} | ||
|
||
export function useAppContext() { | ||
return useContext(AppContext); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
[build] | ||
publish = ".next" | ||
|
||
[[plugins]] | ||
package = "@netlify/plugin-nextjs" |
Oops, something went wrong.